R 中的 emmeans 函数出错。如何解决?
Error with emmeans function in R . How to fix it?
我有一个这样的文件:
我正在使用此数据集来预测线性混合模型,我想使用函数 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
函数在 which fragments 列具有相同值时不起作用。
你知道有什么方法可以跳过这个或让 emmeans
为那个案例工作吗?
提前致谢
这是 pbkrtest 包中出现的错误,在计算 Kenward-Roger 自由度(这是默认度数)所需的调整协方差矩阵时-lmerMod
个对象的自由方法)。几乎可以肯定这与拟合模型时遇到的未公开警告消息有关:
> 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
令我惊讶的是,如果您使用其他 d.f,您仍然可以获得结果。方法,例如萨特思韦特:
> 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
拥有 0.26 个自由度并不多:看看 CI。
就像一般观察一样,当您尝试仅通过一个观察来估计方差时,您总是在自找麻烦。就 between-whichFragments
方差而言,这就是该模型试图做的事情。我当然希望你在真正的研究中有比这更多的数据。
顺便说一句,如果你想要的只是均值,你可以直接计算均值:
> with(data, tapply(data1, flabel, mean))
con1 con2
0.5991 0.1072
我有一个这样的文件:
我正在使用此数据集来预测线性混合模型,我想使用函数 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
函数在 which fragments 列具有相同值时不起作用。
你知道有什么方法可以跳过这个或让 emmeans
为那个案例工作吗?
提前致谢
这是 pbkrtest 包中出现的错误,在计算 Kenward-Roger 自由度(这是默认度数)所需的调整协方差矩阵时-lmerMod
个对象的自由方法)。几乎可以肯定这与拟合模型时遇到的未公开警告消息有关:
> 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
令我惊讶的是,如果您使用其他 d.f,您仍然可以获得结果。方法,例如萨特思韦特:
> 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
拥有 0.26 个自由度并不多:看看 CI。
就像一般观察一样,当您尝试仅通过一个观察来估计方差时,您总是在自找麻烦。就 between-whichFragments
方差而言,这就是该模型试图做的事情。我当然希望你在真正的研究中有比这更多的数据。
顺便说一句,如果你想要的只是均值,你可以直接计算均值:
> with(data, tapply(data1, flabel, mean))
con1 con2
0.5991 0.1072