「飛哥灌水感言:」 ?在做GWAS分析時,雖然年份為2016,2017,2018,但是它并不是數(shù)值,而是因子!所以要將其作為協(xié)變量分析時,直接加進(jìn)去作為數(shù)值肯定是不行的,而是要將其轉(zhuǎn)化為虛擬變量(寧超大神的這篇博客介紹得很清楚:固定即回歸,固定因子可以轉(zhuǎn)化為回歸分析的變量,雖然寧大神不更新,我只能用這種方式催更了?。。’偪癜凳荆?。問題來了,如果多個因子,model.matrix 函數(shù)只能一個一個的轉(zhuǎn)化,然后再合并,麻煩!這里推薦使用useful 包的build.x ,可以支持多個因子同時轉(zhuǎn)化,然后再放到GWAS模型中作為協(xié)變量就很666了。 ? 1. 背景在回歸分析時,有時候我們需要知道每個因子每個水平的回歸系數(shù),這樣就需要將因子轉(zhuǎn)化為虛擬變量,R語言中有model.matrix 進(jìn)行轉(zhuǎn)換,但是只能一個轉(zhuǎn)換一個因子,這里我們用R包useful ,可以支持多個因子同時轉(zhuǎn)換。 2. 示例數(shù)據(jù)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都是因子,如果在構(gòu)建矩陣時,需要轉(zhuǎn)化為虛擬變量。
3. R中model.matrix轉(zhuǎn)化方法一個因子,一個因子的轉(zhuǎn)化,然后進(jìn)行合并: 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這個包,運行這行命令進(jìn)行安裝。 library(useful) build.x(~Herd+Year-1,data=dat,contrasts = F)
 5. 全部代碼# 示例數(shù)據(jù) 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. 怎么樣,學(xué)會了么快來關(guān)注我吧!公眾號:育種數(shù)據(jù)分析之放飛自我
|