「飞哥灌水感言:」 ❝在做GWAS分析时,虽然年份为2016,2017,2018,但是它并不是数值,而是因子!所以要将其作为协变量分析时,直接加进去作为数值肯定是不行的,而是要将其转化为虚拟变量(宁超大神的这篇博客介绍得很清楚:固定即回归,固定因子可以转化为回归分析的变量,虽然宁大神不更新,我只能用这种方式催更了!!!疯狂暗示)。问题来了,如果多个因子,model.matrix 函数只能一个一个的转化,然后再合并,麻烦!这里推荐使用useful 包的build.x ,可以支持多个因子同时转化,然后再放到GWAS模型中作为协变量就很666了。 ❞ 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. 怎么样,学会了么快来关注我吧!公众号:育种数据分析之放飞自我
|