警告消息glmer

时间:2017-03-10 21:04:47

标签: r warnings lme4

我正在研究2个固定变量和1个随机变量的相互作用。年份有19个级别并且是数字,海滩是一个因素并且有4个级别,方法是一个因素并且有3个级别。 我对以下错误消息感到困惑。 NS1是我的巢成功,它由鸡蛋总数加权。

fit10<-glmer(NS1~0+beach+method+(1|year)+(1+beach*method|year),data=new1,weights=egg_total,family=binomial())

警告讯息:

  

1:在eval(expr,envir,enclos)中:非整数#successes in a   二项式glm!

     

2:在commonArgs(par,fn,control,environment())中:maxfun&lt; 10 *   长度(par)^ 2不推荐。

     

3:在optwrap中(优化器,devfun,start,rho $ lower,control = control,   :来自bobyqa的汇聚代码1:bobyqa - 最大数量   功能评估超出

     

4:In(函数(fn,par,lower = rep.int(-Inf,n),upper =   rep.int(Inf,:未能在10000次评估中收敛

     

5:在checkConv(attr(opt,“derivs”)中,选择$ par,ctrl =   control $ checkConv,:无法评估缩放渐变

     

6:在checkConv(attr(opt,“derivs”)中,选择$ par,ctrl =   control $ checkConv,:模型未能收敛:退化Hessian   具有17个负特征值

编辑: 我已将代码更改为:

    fit10<-glmer(NS1~0+beach+method+(1|year)+(1|beach/year)+  (1+method|year),data=new1,weights=crawls,family=binomial(),control=glmerControl(optimizer = "Nelder_Mead",optCtrl=list(maxfun=100000)))

它只给了我这个警告信息:

   Warning message:
    In eval(expr, envir, enclos) : non-integer #successes in a binomial glm!

A sample of my data looks like this:
 year     beach     method FC..         NS        NS1     egg_total   crawls
1   1997 Hillsboro   HTL only    7  12.500000 0.12500000         0      8
2   1997 Hillsboro   HTL only    4  33.333333 0.33333333        99      6
3   1997 Hillsboro   HTL only    3  57.142857 0.57142857         0      7
4   1997 Hillsboro   HTL only    2  33.333333 0.33333333         0      3
5   1997 Hillsboro   HTL only    0 100.000000 1.00000000       104      2
6   1997 Hillsboro   HTL only    0 100.000000 1.00000000         0      2
7   1997 Hillsboro   HTL only    0 100.000000 1.00000000       190      4
8   1997 Hillsboro   HTL only    1  66.666667 0.66666667         0      3
9   1997 Hillsboro   HTL only    0 100.000000 1.00000000       114      1
10  1997     P/FTL   HTL only    0 100.000000 1.00000000         0      1
11  1997     P/FTL   no clean    0 100.000000 1.00000000       140      1
12  1997     P/FTL   no clean    3  40.000000 0.40000000       277      5
13  1997     P/FTL HTL and SB    0 100.000000 1.00000000         0      1
14  1997       JUL   no clean    0 100.000000 1.00000000       153      2
15  1997       JUL   no clean    0 100.000000 1.00000000       113      2
16  1997       JUL   no clean    0 100.000000 1.00000000         0      1

NS1很简单NS / 100

这在excel

中总共有866行

2 个答案:

答案 0 :(得分:1)

在此重复模型以供参考。

fit10<-  glmer(NS1~0+beach+method+(1|year)+ 
    (1+beach*method|year),
    data=new1,
    weights=egg_total,family=binomial())

(1+beach*method|year)一词似乎很乐观;这是估计beachmethod之间的相互作用的年际变化,其表示12x12方差 - 协方差矩阵(= n *(n + 1)/ 2 = 78个参数)。除非你有至少1000个观测值,否则你可能不应该尝试这个。此外,(1|year)(拦截变化)和(1+beach*method|year)项是多余的,因为后者估计拦截,海滩效应,方法效果,它们之间的相互作用的年际变化...尝试(1|beach/year) + (1+method|year)适合拦截海滩,年,海滩之间的变化,年度相互作用以及年间方法效应的变化可能更为现实 - 总共1 + 1 +(3 * 4/2) )= 8个方差 - 协方差参数,根据您的数据,这些参数可能仍然太多。

  

1:在eval(expr,envir,enclos)中:二项式glm中的非整数#successes!

要弄清楚这里发生了什么,正如上面的@aosmith评论,y <- NS1*egg_total必须接近整数(请参阅binomial()$initialize进行测试,(any(abs(y - round(y)) > 0.001))如果NS1应该是一部分存活的蛋,那么除非你在某处犯了某种错字/舍入错误,否则这应该有效。

这是你想要弄清楚的,以确保模型真正有意义;它也可能lme4 will behave badly with non-integer response variables for a distribution that's supposed to be integral

  

2:在commonArgs(par,fn,control,environment())中:maxfun&lt;不推荐10 *长度(标准杆)^ 2。

当你的模型有很多参数时会发生这种情况。您可以使用maxfun增加control=glmerControl(optCtrl=list(maxfun=1e6)),但使用真正的

  

3:在optwrap中(优化器,devfun,start,rho $ lower,control = control,:来自bobyqa的收敛代码1:bobyqa - 超出最大功能评估数

这意味着该功能没有完成优化(参见上一条评论)

  

4:In(函数(fn,par,lower = rep.int(-Inf,n),upper = rep.int(Inf,:未能收敛于10000次评估

同上。

  

5:在checkConv(attr(选择,&#34;衍生品&#34;)中,选择$ par,ctrl = control $ checkConv,:无法评估缩放的渐变
     6:在checkConv(attr(opt,&#34; derivs&#34;)中,选择$ par,ctrl = control $ checkConv,:模型未能收敛:使用17个负特征值退化Hessian

在你的模特最低限度地工作之前,不值得担心这些。

答案 1 :(得分:0)

遗漏的水平是您的参考水平。模型摘要中显示级别的每个参数都应从参考级别中添加/减去(未列出的一个)。参考水平是在拦截项中估计的参数。