Ошибка с функцией emmeans в RКак это исправить? - PullRequest
0 голосов
/ 10 апреля 2019

У меня есть такой файл:

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 голосов
/ 12 апреля 2019

Это ошибка, которая появляется в пакете pbkrtest при вычислении скорректированной ковариационной матрицы, необходимой для степеней свободы Кенварда-Роджера (что является методом степеней свободы по умолчанию для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

Удивительно (для меня), вы все равно можете получить результаты, если используете какой-то другой метод df, например Satterthwaite:

> 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 степеней свободы - это не много: посмотрите на КИ.

Так же, как общее наблюдение, вы всегда напрашиваетесь на неприятности, когда пытаетесь оценить дисперсию только одним наблюдением.Это то, что пытается сделать эта модель, с точки зрения дисперсии между * whichFragments.Я действительно надеюсь, что у вас есть больше данных, чем это в вашем реальном исследовании.

Кстати, если все, что вам нужно, это средства, вы можете просто вычислить средства:

> with(data, tapply(data1, flabel, mean))

  con1   con2 
0.5991 0.1072 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...