1. 背景
在迴歸分析時,有時候我們需要知道每個因子每個水平的迴歸係數,這樣就需要將因子轉化爲虛擬變量,R語言中有model.matrix
進行轉換,但是隻能一個轉換一個因子,這裏我們用R包useful
,可以支持多個因子同時轉換。
2. 示例數據
Herd <- c(1,1,2,2,2,3,3,3,3)
Year = c(rep(c(2018,2019),each=4),2020)
Sire <- c("ZA","AD","BB","AD","AD","CC","CC","AD","AD")
Yield <- c(110,100,110,100,100,110,110,100,100)
dat <- data.frame(Herd,Year,Sire,Yield)
dat$Herd <- as.factor(dat$Herd)
dat$Year <- as.factor(dat$Year)
dat
這裏,Herd,Year,Sire都是因子,如果在構建矩陣時,需要轉化爲虛擬變量。
3. R中model.matrix轉化方法
一個因子,一個因子的轉化,然後進行合併:
X1 = model.matrix(~Herd-1,data=dat)
X1
X2 = model.matrix(~Year-1,data=dat)
X2
X = cbind(X1,X2)
X
4. 更簡單的方法
# 簡單的方法
# install.packages("useful") # 如果沒有安裝useful這個包,運行這行命令進行安裝。
library(useful)
build.x(~Herd+Year-1,data=dat,contrasts = F)
5. 全部代碼
# 示例數據
Herd <- c(1,1,2,2,2,3,3,3,3)
Year = c(rep(c(2018,2019),each=4),2020)
Sire <- c("ZA","AD","BB","AD","AD","CC","CC","AD","AD")
Yield <- c(110,100,110,100,100,110,110,100,100)
dat <- data.frame(Herd,Year,Sire,Yield)
dat$Herd <- as.factor(dat$Herd)
dat$Year <- as.factor(dat$Year)
dat
# R中model.matrix
X1 = model.matrix(~Herd-1,data=dat)
X1
X2 = model.matrix(~Year-1,data=dat)
X2
X = cbind(X1,X2)
X
# 簡單的方法
library(useful)
build.x(~Herd+Year-1,data=dat,contrasts = F)
6. 怎麼樣,學會了麼
快來關注我吧!
公衆號:育種數據分析之放飛自我