如何修复R中出现警告的数字0或1的拟合概率



为什么在运行GLM时收到此警告?pcurv是的平方

"glm.fit:出现数值为0或1的拟合概率">

>summary(df.1)
lon              lat           Roughness           Pcurv         
Min.   :-71.00   Min.   :-29.98   Min.   :-0.7575   Min.   :-6.62627  
1st Qu.:-68.70   1st Qu.:-23.90   1st Qu.:-0.7048   1st Qu.:-0.08573  
Median :-67.34   Median :-19.13   Median :-0.4133   Median : 0.28108  
Mean   :-66.62   Mean   :-20.71   Mean   : 0.0000   Mean   : 0.00000  
3rd Qu.:-65.11   3rd Qu.:-17.45   3rd Qu.: 0.4076   3rd Qu.: 0.32911  
Max.   :-60.15   Max.   :-14.07   Max.   : 4.7961   Max.   : 6.09728  
Mean.MIN.Temp     Mean.MAX.Temp     Precipitation          pres    
Min.   :-1.7400   Min.   :-1.9045   Min.   :-0.8101   Min.   :0.0  
1st Qu.:-0.7141   1st Qu.:-0.7716   1st Qu.:-0.6943   1st Qu.:0.0  
Median :-0.4810   Median :-0.3799   Median :-0.4338   Median :0.5  
Mean   : 0.0000   Mean   : 0.0000   Mean   : 0.0000   Mean   :0.5  
3rd Qu.: 1.0841   3rd Qu.: 1.0467   3rd Qu.: 0.5794   3rd Qu.:1.0  
Max.   : 1.7223   Max.   : 1.8859   Max.   : 4.3427   Max.   :1.0  
grp   
Min.   :1  
1st Qu.:2  
Median :3  
Mean   :3  
3rd Qu.:4  
Max.   :5  

我的型号代码:

mdl.glm <- glm(pres~Roughness+Pcurv*I(Pcurv^2)+Mean.MIN.Temp+Mean.MAX.Temp, family=binomial(link=logit), data=subset(df.1,grp!=1))

警告意味着,当R在内部计算概率时,作为拟合过程的一部分,它们有时会"下溢/上溢也就是说,它们非常接近0或1,以至于当使用R的标准64位浮点精度(例如,小于约1e-308或大于约1-1e-16的值(时无法将它们与它们区分开来。

对此你无能为力,它通常与你的数据结构有关。您可以通过以下两种通用策略来提高拟合的数值稳定性并避免警告:

  • 将所有连续变量居中并缩放(例如,使用scale()函数(。(这将改变系数的数值,但不会改变它们的p值[截距除外],并且根本不会影响模型的整体拟合(R^2、预测等(。(
  • 使用正交多项式CCD_ 2;生的";二次型CCD_ 3。(这将改变这两个参数及其p值等,但不会影响模型的整体拟合。(

如果你不能让警告消失,我会仔细检查以下问题:

  • 您是否有完全分离的症状,即大的(绝对(参数值(例如|beta|>8(和可能大得离谱的标准误差/p-值?请参阅此处,此处,此处以获取如何处理它的建议(例如,用似然比检验代替Wald检验;通过brglm2的Firth回归;具有正则化先验的贝叶斯模型(
  • 您的拟合通常有意义吗,即诊断看起来正常(例如,请参阅DHARMa软件包(,预测值是否合理?(当然,这是你应该始终检查的事情,但要格外小心(

之后,忽略警告,继续分析。

最新更新