我是这方面的新手,所以我无法确定这是否愚蠢。基本上,我想在一个巨大的数据集中的所有连续变量之间做成对的混合效应模型。显而易见的替代方案是简单的 spearman 相关,但我有我的理由,要解释我为什么要使用混合效应模型需要很长时间。
数据看起来像这样:
0 X1507.07 XAB1524.33 XAB1624.21 XAB1808.09...(~4000 columns)
1 12 19 12 45
2 15 35 2 25
3 22 23 65 33
4 0 55 23 67
5 12 10 90 94
6 34 22 11 2
...
90 13 8 14 45
目标是所有列的成对模型。
这是脚本有问题的部分:
for(i in 1:ncol(dat))
{
ni<-names(dat)[i]
pvalue <- apply(dat, 2, function(x)
{
formula<-as.formula(paste(ni,"~", x," + Location",sep=""))
model<-do.call("lme", args = list(formula, random=~1|Subject, data=dat))
summary(model)$tTable[2,5]
})
错误:
invalid model formula in ExtractVars
对于那些感到困惑的人:我使用 as.formula 因为如果您尝试:
model<-lme(X1507.07~x+Region,random=~1|Subject, data=dat)
错误:
Error in eval(expr, envir, enclos) : object 'x' not found
(“位置”和“主题”是数据框 dat 中的因素)。我只关心一个 p 值(我知道它与混合效应有争议)。我尝试在 as.formula() 中传递 x as.matrix(x) 和 colnames(x) 但似乎没有任何效果。重点是:有谁知道这是否可能?如果我必须循环大约 10 ^ 7 次,它不值得花时间(年),所以 apply() 是我能想到的唯一合理的选择。