R 語言 將因子轉化爲虛擬變量

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. 怎麼樣,學會了麼

快來關注我吧!
公衆號:育種數據分析之放飛自我

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章