分享

GWAS分析中协变量的处理

 育种数据分析 2021-11-18

「飞哥灌水感言:」

在做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. 怎么样,学会了么

快来关注我吧!公众号:育种数据分析之放飞自我

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多