glmer和glmmTMB模型使用ggpredict的不同输出
我试图用物种存在作为反应来预测和绘制模型。但是,我遇到了以下问题:对于glmer和glmmTMB中的相同数据,ggpredict的输出相差很大。然而,估计值和AIC非常相似。这些是简化模型,仅包括日期(已居中并按比例缩放),这似乎是最难预测的问题glmer和glmmTMB模型使用ggpredict的不同输出,r,plot,predict,lme4,R,Plot,Predict,Lme4,我试图用物种存在作为反应来预测和绘制模型。但是,我遇到了以下问题:对于glmer和glmmTMB中的相同数据,ggpredict的输出相差很大。然而,估计值和AIC非常相似。这些是简化模型,仅包括日期(已居中并按比例缩放),这似乎是最难预测的问题 yntest<- glmer(MYOSOD.P~ jdate.z + I(jdate.z^2) + I(jdate.z^3) + (1|area/SiteID), family = binomial, data = s
yntest<- glmer(MYOSOD.P~ jdate.z + I(jdate.z^2) + I(jdate.z^3) +
(1|area/SiteID), family = binomial, data = sodpYN)
> summary(yntest)
Generalized linear mixed model fit by maximum likelihood (Laplace Approximation) ['glmerMod']
Family: binomial ( logit )
Formula: MYOSOD.P ~ jdate.z + I(jdate.z^2) + I(jdate.z^3) + (1 | area/SiteID)
Data: sodpYN
AIC BIC logLik deviance df.resid
1260.8 1295.1 -624.4 1248.8 2246
Scaled residuals:
Min 1Q Median 3Q Max
-2.0997 -0.3218 -0.2013 -0.1238 9.4445
Random effects:
Groups Name Variance Std.Dev.
SiteID:area (Intercept) 1.6452 1.2827
area (Intercept) 0.6242 0.7901
Number of obs: 2252, groups: SiteID:area, 27; area, 9
Fixed effects:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -2.96778 0.39190 -7.573 3.65e-14 ***
jdate.z -0.72258 0.17915 -4.033 5.50e-05 ***
I(jdate.z^2) 0.10091 0.08068 1.251 0.21102
I(jdate.z^3) 0.25025 0.08506 2.942 0.00326 **
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Correlation of Fixed Effects:
(Intr) jdat.z I(.^2)
jdate.z 0.078
I(jdat.z^2) -0.222 -0.154
I(jdat.z^3) -0.071 -0.910 0.199
yntest摘要(yntest)
广义线性混合模型的最大似然拟合(拉普拉斯近似)['glmerMod']
家庭:二项式(logit)
公式:MYOSOD.P~jdate.z+I(jdate.z^2)+I(jdate.z^3)+(1 |面积/场地ID)
数据:sodpYN
AIC BIC logLik偏差df.resid
1260.8 1295.1 -624.4 1248.8 2246
标度残差:
最小1季度中值3季度最大值
-2.0997 -0.3218 -0.2013 -0.1238 9.4445
随机效应:
组名为Variance Std.Dev。
站点ID:area(Intercept)1.6452 1.2827
面积(截距)0.6242 0.7901
OB数量:2252,组:SiteID:area,27;区域,9
固定效果:
估计标准误差z值Pr(>z)
(截距)-2.96778 0.39190-7.573 3.65e-14***
jdate.z-0.72258 0.17915-4.033 5.50e-05***
I(jdate.z^2)0.10091 0.080681.251 0.21102
I(jdate.z^3)0.25025 0.08506 2.942 0.00326**
---
签名。代码:0'***'0.001'***'0.01'*'0.05'.'0.1''1
固定效应的相关性:
(Intr)jdat.z I(.^2)
jdate.z 0.078
I(jdat.z^2)-0.222-0.154
I(jdat.z^3)-0.071-0.9100.199
glmmTMB模型+摘要:
Tyntest<- glmmTMB(MYOSOD.P ~ jdate.z + I(jdate.z^2) + I(jdate.z^3) +
(1|area/SiteID), family = binomial("logit"), data = sodpYN)
> summary(Tyntest)
Family: binomial ( logit )
Formula: MYOSOD.P ~ jdate.z + I(jdate.z^2) + I(jdate.z^3) + (1 | area/SiteID)
Data: sodpYN
AIC BIC logLik deviance df.resid
1260.8 1295.1 -624.4 1248.8 2246
Random effects:
Conditional model:
Groups Name Variance Std.Dev.
SiteID:area (Intercept) 1.6490 1.2841
area (Intercept) 0.6253 0.7908
Number of obs: 2252, groups: SiteID:area, 27; area, 9
Conditional model:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -2.96965 0.39638 -7.492 6.78e-14 ***
jdate.z -0.72285 0.18250 -3.961 7.47e-05 ***
I(jdate.z^2) 0.10096 0.08221 1.228 0.21941
I(jdate.z^3) 0.25034 0.08662 2.890 0.00385 **
---
Tyntest摘要(Tyntest)
家庭:二项式(logit)
公式:MYOSOD.P~jdate.z+I(jdate.z^2)+I(jdate.z^3)+(1 |面积/场地ID)
数据:sodpYN
AIC BIC logLik偏差df.resid
1260.8 1295.1 -624.4 1248.8 2246
随机效应:
条件模型:
组名为Variance Std.Dev。
站点ID:area(Intercept)1.6490 1.2841
面积(截距)0.6253 0.7908
OB数量:2252,组:SiteID:area,27;区域,9
条件模型:
估计标准误差z值Pr(>z)
(截距)-2.969650.39638-7.4926.78e-14***
jdate.z-0.72285 0.18250-3.9617.47e-05***
I(jdate.z^2)0.10096 0.08221 1.228 0.21941
I(jdate.z^3)0.25034 0.08662 2.890 0.00385**
---
预测产出
testg<-ggpredict(yntest, terms ="jdate.z[all]")
> testg
# Predicted probabilities of MYOSOD.P
# x = jdate.z
x predicted std.error conf.low conf.high
-1.95 0.046 0.532 0.017 0.120
-1.51 0.075 0.405 0.036 0.153
-1.03 0.084 0.391 0.041 0.165
-0.58 0.072 0.391 0.035 0.142
-0.14 0.054 0.390 0.026 0.109
0.35 0.039 0.399 0.018 0.082
0.79 0.034 0.404 0.016 0.072
1.72 0.067 0.471 0.028 0.152
Adjusted for:
* SiteID = 0 (population-level)
* area = 0 (population-level)
Standard errors are on link-scale (untransformed).
testgTMB<- ggpredict(Tyntest, "jdate.z[all]")
> testgTMB
# Predicted probabilities of MYOSOD.P
# x = jdate.z
x predicted std.error conf.low conf.high
-1.95 0.444 0.826 0.137 0.801
-1.51 0.254 0.612 0.093 0.531
-1.03 0.136 0.464 0.059 0.280
-0.58 0.081 0.404 0.038 0.163
-0.14 0.054 0.395 0.026 0.110
0.35 0.040 0.402 0.019 0.084
0.79 0.035 0.406 0.016 0.074
1.72 0.040 0.444 0.017 0.091
Adjusted for:
* SiteID = NA (population-level)
* area = NA (population-level)
Standard errors are on link-scale (untransformed).
testg testg
#MYOSOD的预测概率
#x=jdate.z
x预测标准错误配置低配置高
-1.95 0.046 0.532 0.017 0.120
-1.51 0.075 0.405 0.036 0.153
-1.03 0.084 0.391 0.041 0.165
-0.58 0.072 0.391 0.035 0.142
-0.14 0.054 0.390 0.026 0.109
0.35 0.039 0.399 0.018 0.082
0.79 0.034 0.404 0.016 0.072
1.72 0.067 0.471 0.028 0.152
调整为:
*SiteID=0(总体级别)
*面积=0(人口水平)
标准误差在链接范围内(未转换)。
testgTMB testgTMB
#MYOSOD的预测概率
#x=jdate.z
x预测标准错误配置低配置高
-1.95 0.444 0.826 0.137 0.801
-1.51 0.254 0.612 0.093 0.531
-1.03 0.136 0.464 0.059 0.280
-0.58 0.081 0.404 0.038 0.163
-0.14 0.054 0.395 0.026 0.110
0.35 0.040 0.402 0.019 0.084
0.79 0.035 0.406 0.016 0.074
1.72 0.040 0.444 0.017 0.091
调整为:
*SiteID=NA(总体级别)
*面积=NA(人口水平)
标准误差在链接范围内(未转换)。
估计完全不同,我不知道为什么。
我尝试过使用CRAN的ggeffects包和开发者版本,以防发生任何变化。事实并非如此。我正在使用最新版本的glmmTMB
这是我第一次在这里提问,请让我知道我是否应该提供更多信息来帮助解释问题
我检查了,当使用predict而不是ggpredict时,问题是相同的,这意味着这是一个glmmTMB问题?
GLMER:
dayplotg我联系了ggpredict开发人员,发现如果我在glmmTMB模型中使用poly(jdate.z,3)
而不是jdate.z+I(jdate.z^2)+I(jdate.z^3)
,那么glmer和glmmTMB的预测是相同的
即使我能够回答自己的问题,我也会留下这篇帖子,以防以后有人问这个问题。如果你直接使用predict()
和type=“response”
你看到类似的问题了吗?注意:对于merMod对象,您需要使用re.form=NA
进行人口级别预测,但对于glmmTMB对象,您必须手动将分组变量设置为NA才能获得相同的结果(请参见predict.glmmTMB
的帮助页面)。是的,使用predict时是相同的,我编辑了上述问题以反映这一点。所以这似乎是glmmTMB的问题?好吧,现在我已经详细阅读了glmmTMB的文档,它说“在不同的组件中具有相同数据相关基类型的不同版本的模型(例如公式=y~多边形(x,3),dispformula=~多边形(x,2))可能不会产生正确的预测。”Perr
tag(悬停查看):对数据使用dput()
,并使用library()
calls.aa指定所有非基本包,并且此错误(您的原始代码应该可以工作,使用poly()
是一种变通方法)应该很快在开发版本中修复:
dayplotg<-expand.grid(jdate.z=seq(min(sodp$jdate.z), max(sodp$jdate.z), length=92))
Dfitg<-predict(yntest, re.form=NA, newdata=dayplotg, type='response')
dayplotg<-data.frame(dayplotg, Dfitg)
head(dayplotg)
> head(dayplotg)
jdate.z Dfitg
1 -1.953206 0.04581691
2 -1.912873 0.04889584
3 -1.872540 0.05195598
4 -1.832207 0.05497553
5 -1.791875 0.05793307
6 -1.751542 0.06080781
dayplot<-expand.grid(jdate.z=seq(min(sodp$jdate.z), max(sodp$jdate.z), length=92),
SiteID=NA,
area=NA)
Dfit<-predict(Tyntest, newdata=dayplot, type='response')
head(Dfit)
dayplot<-data.frame(dayplot, Dfit)
head(dayplot)
> head(dayplot)
jdate.z SiteID area Dfit
1 -1.953206 NA NA 0.4458236
2 -1.912873 NA NA 0.4251926
3 -1.872540 NA NA 0.4050944
4 -1.832207 NA NA 0.3855801
5 -1.791875 NA NA 0.3666922
6 -1.751542 NA NA 0.3484646