Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 将gamma GLM反向转换为自然单位,以便能够预测未采样位置的值_R_Glm_Gamma Distribution - Fatal编程技术网

R 将gamma GLM反向转换为自然单位,以便能够预测未采样位置的值

R 将gamma GLM反向转换为自然单位,以便能够预测未采样位置的值,r,glm,gamma-distribution,R,Glm,Gamma Distribution,我正在研究生态数据,我使用摄像机对动物检测进行采样(转换为生物量),并运行各种模型,通过查看诊断图、AIC和参数效应大小来确定最佳拟合模型。该模型为伽马GLM(由于生物量具有连续响应),具有对数链接。所选模型具有到水的距离(“dist_water”)和到森林斑块的距离(“dist_F3”)的预测变量。这是模型摘要: glm(formula = RAI_biomass ~ Dist_water.std + Dist_F3.std, family = Gamma(link = "log"),

我正在研究生态数据,我使用摄像机对动物检测进行采样(转换为生物量),并运行各种模型,通过查看诊断图、AIC和参数效应大小来确定最佳拟合模型。该模型为伽马GLM(由于生物量具有连续响应),具有对数链接。所选模型具有到水的距离(“dist_water”)和到森林斑块的距离(“dist_F3”)的预测变量。这是模型摘要:

    glm(formula = RAI_biomass ~ Dist_water.std + Dist_F3.std, family = Gamma(link = "log"), 
    data = biomass_RAI)
Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-2.3835  -1.0611  -0.3937   0.4355   1.5923  

Coefficients:
               Estimate Std. Error t value Pr(>|t|)    
(Intercept)      5.3577     0.2049  26.143 2.33e-16 ***
Dist_water.std  -0.7531     0.2168  -3.474  0.00254 ** 
Dist_F3.std      0.5831     0.2168   2.689  0.01452 *  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for Gamma family taken to be 0.9239696)

    Null deviance: 41.231  on 21  degrees of freedom
Residual deviance: 24.232  on 19  degrees of freedom
AIC: 287.98

Number of Fisher Scoring iterations: 7
在运行模型之前,协变量被标准化。我现在需要做的是将该模型转换为自然单位,以便预测未采样位置(本例中为农场)的生物量值。我做了一张表格,列出了每个农场和它们到水的距离,以及到森林斑块的距离。我认为这样做的方法是使用exp(coef(biomatical_glm)),但当我这样做时,dist_water.std系数改变了方向并变为正值

exp(coef(biomass_glm8))
## Intercept       Dist_water.std     Dist_F3.std 
## 212.2369519      0.4709015         1.7915026
对我来说,这似乎是有问题的,因为在最初的GLM中,离水的距离增加意味着生物量的减少(这是有道理的)——但现在我们看到了相反的情况?计算的生物量响应范围非常窄,从210.97-218.9331(相比之下,原始数据中的生物量范围为3.04-2227.99)

然后,我尝试取整个模型的指数,而不是单独取每个系数的指数:

farms$biomass_est2 <- exp(5.3577 + (-0.7531*farms$Farm_dist_water_std) + (0.5831*farms$Farm_dist_F3_std))

我的问题是,为什么这些估计值不同,最好的方法是用日志链接将gamma GLM转换为可用于计算预测值的格式?如果有任何帮助,我们将不胜感激!

为什么不使用预测函数?这是否考虑了GLM与日志链接和新数据(在自然尺度下)我正试图获得@AishaUduman的预测值-我不这么认为,不。你应该使用原始数据的平均值和标准偏差来缩放新数据,然后在
predict()中使用它
函数。此外,我认为对数标度上的负系数在求幂时为正是有意义的——你可以将求幂后的系数解释为一个乘数:为农场制作一个带有dist_water和dist_F3列的新数据框(我需要一个预测的生物量估计),通过原始数据的平均值和标准差进行标准化:
farms\u predict Ignore-成功了!谢谢:)为什么不直接使用预测函数?这是否考虑到了glm与日志链接和新数据(自然尺度)之间的尺度差异?我正试图获得预测值?@AishaUduman-我不这么认为,不可以。您需要使用原始数据的平均值和标准偏差来缩放新数据,然后在
predict()
函数中使用该值。此外,我认为对数标度为负的系数在指数化时为正是有意义的——你可以将指数化的系数解释为一个乘数:为农场制作了一个包含dist_water和dist_F3列的新数据框(我需要一个预测的生物量估计),通过原始数据的平均值和标准差进行标准化:
farms\u predict Ignore--让它开始工作了!谢谢:)
(e^(-0.7531))-1  #dist_water = -0.5290955
(e^(0.5831))-1   #dist_F3 = 0.7915837
(e^(5.3577))-1   #intercept = 211.2362