我有以下类型的数据。我评估了 10 个人,每个人重复 10 次。我有 10x10 关系矩阵(个体的所有组合之间的关系)。
set.seed(1234)
mydata <- data.frame (gen = factor(rep(1:10, each = 10)),
repl = factor(rep(1:10, 10)),
yld = rnorm(10, 5, 0.5))
这一代是不同品种的植物,因此每个都可以重复种植并测量产量。协方差矩阵是通过独立实验中的 ibd 概率计算的遗传相似性来衡量相关性。
library(lme4)
covmat <- round(nearPD(matrix(runif(100, 0, 0.2), nrow = 10))$mat, 2)
diag(covmat) <- diag(covmat)/10+1
rownames(covmat) <- colnames(covmat) <- levels(mydata$gen)
> covmat
10 x 10 Matrix of class "dgeMatrix"
1 2 3 4 5 6 7 8 9 10
1 1.00 0.08 0.06 0.03 0.09 0.09 0.10 0.08 0.07 0.10
2 0.08 1.00 0.08 0.09 0.04 0.12 0.08 0.08 0.11 0.09
3 0.06 0.08 1.00 0.10 0.05 0.09 0.09 0.07 0.04 0.13
4 0.03 0.09 0.10 1.00 0.02 0.11 0.09 0.06 0.04 0.12
5 0.09 0.04 0.05 0.02 1.00 0.06 0.07 0.05 0.02 0.08
6 0.09 0.12 0.09 0.11 0.06 1.00 0.12 0.08 0.07 0.14
7 0.10 0.08 0.09 0.09 0.07 0.12 1.00 0.08 0.03 0.15
8 0.08 0.08 0.07 0.06 0.05 0.08 0.08 1.00 0.06 0.09
9 0.07 0.11 0.04 0.04 0.02 0.07 0.03 0.06 1.00 0.03
10 0.10 0.09 0.13 0.12 0.08 0.14 0.15 0.09 0.03 1.00
我的模型是:
yld = gen + repl + error
gen 和 repl 都被认为是随机的,我想获得与每个 gen 相关的随机效应估计,但是我需要考虑关系矩阵。
如果嵌套模型太复杂,我会从模型中删除 repl,但理想情况下我会保留它。
yld = gen + error
如何使用 R 包(可能使用 nlme 或 lme4)来实现这一点?我知道 ASREML 可以做到,但我没有把握,我喜欢 R,因为它既健壮又自由。