分母自由度(当使用lmer时)在回路中与回路外不同

bf1o4zei  于 2023-01-15  发布在  其他
关注(0)|答案(1)|浏览(135)

我在20 + y变量上循环lmer函数,有159行观测值,当我在循环内运行lmer函数时,分母自由度丢失,在循环外(或者即使我在循环内指定一个y变量),分母df如预期。
我有一个df与20个y变量的植物在两个室与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

如果我将确切的代码指定为在循环之外(将get(u)替换为"leaves_mean")......我会得到正确的结果:

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)?

4dbbbstv

4dbbbstv1#

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

相关问题