R sommer 包:用于基因组预测的带有 Predict.mmer 的 Dtable 错误

问题描述 投票:0回答:1

我有一个多环境试验数据集,在四个环境中测试基因型。我想预测所有基因型的环境特异性 BLUP。我使用 R 中 sommer-package 中的 mmer-function,它运行没有问题。但是,当我将 Predict.mmer 函数与从模型输出中提取的 Dtable 一起使用时,出现错误。下面是一个可重现的示例,它产生与我的数据集相同的错误。

library(sommer)

ID <- factor(1:50) # 50 genotype IDs
Env <- factor(1:4) # 4 environments

ID_test <- sample(ID, 15) # sample 15 genotype IDs for making a test set

# creating a data frame with all combinations of IDs and environments
df_example <- expand.grid(ID = ID, Env = Env) %>% 
  mutate(y = rnorm(n()), # random response variable
         yNA = ifelse(ID %in% ID_test, NA, y)) # masking test IDs with NA

# run mmer model
m_examp <- mmer(yNA ~ 1, 
         random= ~ vsr(dsr(Env), ID), 
         rcov= ~ units,
         data = df_example, naMethodY = "include")

# extract Dtable, and set include to T
Dt <- m_examp$Dtable
Dt[1:3,"include"] <- T
Dt

# predict Env effects
r <- predict.mmer(object = m_examp, Dtable = Dt, D = "Env")

预测环境影响会产生以下错误:

Error in `$<-.data.frame`(`*tmp*`, "start", value = c(1, 2, 52, 102, 152 : 
  replacement has 5 rows, data has 3

我尝试通过将 Dtable 扩展为交互项的两倍来解决此问题,以获得 5 行 Dtable,如错误所示。这很有效,尽管这似乎不是正确的解决方案。

# extend Dtable with interaction term
Dt_ext <- data.frame(type = "random", term = "Env:ID", include = T, average = F)

# predict Env:ID BLUPs
r <- predict.mmer(object = m_examp, Dtable = rbind(Dt, Dt_ext, Dt_ext), D = "ID:Env")

所以问题是:使用 sommer 包预测该模型的 ID:Env 交互项的正确方法是什么?或者我做错了什么?

r mixed-models genomics
1个回答
0
投票

您可能想尝试使用 mmec() 来拟合模型并使用 Predict.mmec() 函数。 mmer 的预测函数非常混乱,我无法调试。我正在努力移动 mmer 函数以使用与 mmec 相同的公式和函数,希望这将在第三季度完成。

© www.soinside.com 2019 - 2024. All rights reserved.