R中的emmeans函数出错。如何解决?

时间:2019-04-10 13:17:35

标签: r emmeans

我有一个像这样的文件:

enter image description here

我正在使用此数据集来预测线性混合模型,并且我想使用函数emmeans来计算针对我的情况的估计均值。我正在使用的代码在这里:

newtab5 <- read.csv(file="sliding_LMM_test.csv", header=T, sep=",")
head(newtab5)

library(lmerTest)

model <- lmer(formula = data1 ~ flabel + (1 | whichFragments), data = newtab5, control=lmerControl(check.nlev.gtr.1 = "ignore"))
sfit <-summary(model)
sfit$coefficients[,2][2]
sfit$coefficients[,5][2]

library(emmeans)

means <- emmeans(model, "flabel")
test<-summary(means)

我有这个错误:

>  Error in t(ZZ) %*% EE :Cholmod error 'X and/or Y have wrong dimensions' at file ../MatrixOps/cholmod_sdmult.c, line 90

当“哪些片段”列具有相同的值时,emmeans函数似乎不起作用。

您知道跳过这种情况或使emmeans适用于这种情况的任何方法吗?

提前谢谢

1 个答案:

答案 0 :(得分:0)

pbkrtest 软件包中,这是计算Kenward-Roger自由度所需的调整后协方差矩阵(这是默认的自由度方法)中出现的错误git submodule deinit -f {module_name} git add {module_name} git commit 个对象)。几乎可以肯定,这与拟合模型时遇到的未公开警告消息有关:

lmerMod

(对我而言)令人惊讶的是,如果您使用其他d.f,仍然可以得到结果。方法,例如Satterthwaite:

> model <- lmer(formula = data1 ~ flabel + (1 | whichFragments), 
+    data = data, control=lmerControl(check.nlev.gtr.1 = "ignore")) 
Warning message:
In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv,  :
   Hessian is numerically singular: parameters are not uniquely determined

具有0.26的自由度并不多:请查看CI。

仅作为一般性观察,当您尝试仅凭一个观察来估计方差时,总是会遇到麻烦。这就是模型根据-> emmeans(model, "flabel", mode = "satterth") flabel emmean SE df lower.CL upper.CL con1 0.599 0.147 0.26 -3879 3880 con2 0.107 0.147 0.26 -3880 3880 Degrees-of-freedom method: satterthwaite Confidence level used: 0.95 之间的差异进行的尝试。我当然希望您在实际研究中能获得比这更多的数据。

顺便说一句,如果您想要的只是均值,则只需计算均值:

whichFragments