首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >用固定因素矫正表型值,要用残差值?

用固定因素矫正表型值,要用残差值?

作者头像
邓飞
发布2026-04-16 14:21:25
发布2026-04-16 14:21:25
1330
举报

大家好,我是邓飞。

最近有小伙伴问了一个问题:

数据中有一些固定因子,比如性别、场年季、胎次等数据,怎么进行表型矫正。

文章中有一个截图,介绍表型数据是通过固定因子矫正后的表型值:

其实GWAS和GS分析,都可以使用固定因子进行表型矫正,就是使用GLM模型,将残差值作为校正后的表型值,进行后续的GWAS分析和GS分析。另外一种更简单的方法,是直接将其作为协变量进行模型的分析。

这两种方法都是一样的,不过现在大都是将其作为协变量直接加入到模型中,因为现在的软件GCTA、GEMMA、rMVP、asreml等软件都支持协变量的加入。

还有一个经常思考的问题:为何要用残差作为矫正后的表型值?

在 GWAS 和 GS 里用残差当作校正表型,核心原因就一句话:把环境、批次、重复等非遗传干扰去掉,只留下真正能反映个体遗传差异的表型信号。剩下的就是残差,它不再包含系统误差,只剩下:随机误差+个体遗传差异。

对于GWAS和GS而言,我们要找的就是遗传差异,所以,我们就把残差作为矫正后的表型值。

写到这里,没有R语言的示例是不完整的,所以,talk is cheap,show me the code:

代码语言:javascript
复制
# 1. 加载数据(你换成自己的数据)
# 数据必须包含:表型、性别、胎次、场年季
set.seed(123)
data <- data.frame(
  个体ID = 1:200,
  表型值 = rnorm(200, 10, 3),  # 你的真实表型
  性别 = factor(sample(c("公","母"), 200, replace=T)),
  胎次 = factor(sample(c("1","2","3","4"), 200, replace=T)),
  场年季 = factor(sample(c("场1-2022-春","场2-2023-秋"), 200, replace=T))
)
# 2. 构建校正模型:去掉 性别 + 胎次 + 场年季
# 固定效应模型 GLM
model <- lm(表型值 ~ 性别 + 胎次 + 场年季, data = data)
# 3. 提取残差 → 这就是【校正后的表型值】
data$校正表型 <- residuals(model)
# 查看结果
head(data[,c("个体ID","表型值","校正表型","性别","胎次","场年季")])

容易翻车的点:这里的胎次虽然是1-2-3-4,但是要将其作为factor才可以。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-04-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 育种数据分析之放飞自我 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档