r语言 - 分母自由度(当使用lmer时)在循环内与在循环外不同

  • 本文关键字:循环 lmer r语言 自由度 r loops lme4
  • 更新时间 :
  • 英文 :


我正在循环一个超过20+ y个变量的lmer函数,其中包含159行观察值。当我在循环中运行一个lmer函数时,分母的自由度就丢失了。在循环外(或者即使我在循环内指定一个y变量),分母df是预期的。

我有一个包含20个y变量的df,用于4个处理的两个室中的植物(在两个处理中重复)。

lmer_test <- lmer(leaves_mean~Treatment + (1|Chamber), data = df)
aov_test <- anova(lmer_test)
aov_test

这给:

Type III Analysis of Variance Table with Satterthwaite's method
Sum Sq Mean Sq NumDF DenDF F value Pr(>F)
Treatment 97.593  32.531     3   153  1.1966 0.3131

我有一个循环:

for(u in colnames(df)[6:ncol(df)])
{
Y_variable_Rex <- names(df[u])
lmer_u_Rex <-lmer(get(u) ~ Treatment  + (1|Chamber), data = df)
aov_u_Rex <- anova(lmer_u_Rex) 
aov_u_Rex
}

,

Type III Analysis of Variance Table with Satterthwaite's method
Sum Sq Mean Sq NumDF      DenDF    F value Pr(>F)
Treatment 208420   69473     3 4.6406e-14 3.5911e+31      1

如果我在循环外指定确切的代码(用"leaves_mean"替换get(u))…我得到正确的结果:

Type III Analysis of Variance Table with Satterthwaite's method
Sum Sq Mean Sq NumDF DenDF F value Pr(>F)
Treatment 97.593  32.531     3   153  1.1966 0.3131

"get_u"规范应该在循环中产生完全相同的结果。发生了什么使得分母自由度不同(0)?

我回答了我自己的问题…循环为不同的变量(最后一个)报告分母df。该列中有缺失的值,因为这是采样值的y变量,有许多缺失的行。我能够重现错误,然后在循环中解决它。我在这里接近调试,就像你可能在Matlab循环中做的那样(逐步通过每一行),这是而不是修复R循环的好方法。感谢你阅读这个问题并考虑回答!

相关内容

  • 没有找到相关文章

最新更新