2014-09-23 3 views
5

Я запускаю обобщенную линейную смешанную модель в R для переменной двоичного ответа, и я получаю сообщение об ошибке.Обобщенная ошибка линейной смешанной модели (двоичный отклик)

Мой код:

library('lme4') 
m1<-glmer(data=mydata, REPRODUCE~F1TREAT*SO+(1|LINE/MATERNAL_ID), family=binomial) 

Где REPORDUCE = двоичный, F1TREAT и SO = коэффициент каждый с 2 ​​уровнями. Это возвращает предупреждение:

Warning messages: 
    1: In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv, : 
    unable to evaluate scaled gradient 
    2: In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv, : 
    Hessian is numerically singular: parameters are not uniquely determined 

Однако объект 'm1' по-прежнему отображается в моем списке «Значения». Typing:

summary(m1) 

возвращает ошибку:

Error in diag(vcov(object, use.hessian = use.hessian)) : 
    error in evaluating the argument 'x' in selecting a method for function 'diag': 
Error in solve.default(h) : 
    Lapack routine dgesv: system is exactly singular: U[5,5] = 0 

Кто-нибудь есть идея, что проблема есть? Смешно, я могу запустить модель просто отлично, если исключить переменную «SO».

Edit:

with(mydata,table(REPRODUCE,F1TREAT,SO))

, , SO = o 

    F1TREAT 
REPRODUCE control stress 
    0  61 167 
    1  125  8 

, , SO = s 

    F1TREAT 
REPRODUCE control stress 
    0  0  0 
    1  186 172 

Результаты GLM являются: Вызов: GLM (формула = ВОПРОИЗВЕДЕНИЕ ~ F1TREAT * SO, семья = бином, данные = MYDATA)

Deviance Residuals: 
Min  1Q Median  3Q  Max 
-1.49323 -0.30592 0.00005 0.00005 2.48409 

Coefficients: 
        Estimate Std. Error z value Pr(>|z|)  
(Intercept)   0.7174  0.1562 4.594 4.36e-06 *** 
F1TREATstress  -3.7560  0.3942 -9.529 < 2e-16 *** 
SOs     19.8486 1300.0538 0.015 0.988  
F1TREATstress:SOs 3.7560 1875.5931 0.002 0.998  
--- 
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

(Dispersion parameter for binomial family taken to be 1) 

Null deviance: 898.27 on 718 degrees of freedom 
Residual deviance: 300.37 on 715 degrees of freedom 
AIC: 308.37 

Number of Fisher Scoring iterations: 19 
+2

Возможно 'SO' является коллинеарны с одним из других переменных в модели. Я предлагаю (1) искать в Интернете что-то вроде «проверить коллинеарность» (2) опубликовать свой вопрос (с полным набором данных) на http://stats.stackexchange.com/. – bdemarest

+0

Мои фиксированные эффекты - оба фактора с 2 уровнями. Я не уверен, что могу иметь коллинеарность с факторами? Аналогично, если я удалю F1TREAT, то SO - единственный оставшийся фиксированный эффект. Модель все еще не запускается, и я получаю те же сообщения об ошибках –

+1

Немного сложно угадать проблему, не видя данных. Каковы результаты 'with (mydata, table (REPRODUCE, F1TREAT, SO))? –

ответ

1
with(mydata,table(REPRODUCE,F1TREAT,SO)) 

, , SO = o 

    F1TREAT 
REPRODUCE control stress 
0  61 167 
1  125  8 

, , SO = s 

    F1TREAT 
REPRODUCE control stress 
0  0  0 
1  186 172 

Мне было предложено, чтобы моя проблема была вызвана тем, что некоторых комбинаций не существует (complete separation). Вы можете видеть, что все растения в категории 's' расцвечены, поэтому SO = s, если вы прекрасно запустите REPRODUCE. Если я изменю пару строк, так что один элемент управления «цветет» и один растение «растёт», тогда я смогу запустить модель и получить результат сводки() (хотя и с предупреждающими сообщениями, возможно, из-за частичное разделение). Незначимость SO в glm обусловлена ​​Hauck-Donner phenomenon.

Я не уверен, что делать об этом

+1

Этот ответ может быть полезен: http: //stats.stackexchange .com/questions/45803/logistic-regression-in-r-result-in-hauck-donner-явление-now-what – bdemarest

+1

Вы можете иметь дело с Hauck-Donner, вычисляя тесты отношения правдоподобия (например, 'drop1') вместо Wald тесты. Вы можете справиться с полным разделением, установив предыдущие фиксированные эффекты через 'blme' или' MCMCglmm': см. Http://rpubs.com/bbolker/glmmchapter и найдите «полное разделение» для получения дополнительной информации ... –

+1

Я запустил модель, используя пакет 'blme', применяя обычные приоритеты к фиксированным эффектам' m1 <-bglmer (data = mimulus, REPRODUCE ~ F1TREAT * SO + (1 | LINE/MATERNAL_ID), family = binomial, cov.prior = NULL, fixef.prior = normal) 'Должен ли я продолжать анализировать эту модель, поскольку я бы построил модель с использованием glmer: исключив фиксированные эффекты и сравнив новую модель с полной моделью с помощью' lrtest'? Или есть лучший способ сообщить о фиксированных эффектах этой модели –