r - 如何从 GLM 输出中获取概率

标签 r probability glm

我现在非常困惑,因为我试图弄清楚如何从 R 中的 glm 输出计算概率。我知道数据非常微不足道,但我真的很想展示如何从这样的输出中获得概率。我正在考虑尝试 inv.logit() 但不知道要将哪些变量放在括号内。

数据来自入住率研究。我正在评估在检测 3 个物种(红松鼠、松貂和侵入性灰松鼠)时毛发捕捉方法与相机捕捉方法的成功率。我想看看是什么影响了各种物种的检测(或未检测)。一个假设是在该地点检测到另一种焦点物种会影响红松鼠的可检测性。鉴于松貂是红松鼠的天敌,而灰松鼠是竞争对手,这两个物种在一个地点的存在可能会影响红松鼠的可探测性。

这会显示概率吗? inv.logit(-1.14 - 0.1322 * 非 RS 事件)

 glm(formula = RS_sticky ~ NonRSevents_before1stRS, family = binomial(link = "logit"), data = data)
Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-0.7432  -0.7432  -0.7222  -0.3739   2.0361  
Coefficients:
                    Estimate Std. Error z value Pr(>|z|)  
(Intercept)              -1.1455     0.4677  -2.449   0.0143 *
NonRSevents_before1stRS  -0.1322     0.1658  -0.797   0.4255  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
   (Dispersion parameter for binomial family taken to be 1)
Null deviance: 34.575  on 33  degrees of freedom
   Residual deviance: 33.736  on 32  degrees of freedom
  (1 observation deleted due to missingness)
   AIC: 37.736
  Number of Fisher Scoring iterations: 5*

最佳答案

如果您想预测一组指定的预测变量值的响应概率:

pframe <- data.frame(NonRSevents_before1stRS=4)
predict(fitted_model, newdata=pframe, type="response")

其中 fitted_model 是您的 glm() 拟合的结果,您将其存储在一个变量中。您可能不熟悉 R 的统计分析方法,即将拟合模型存储为对象/变量,然后对其应用不同的方法(summary()plot (), predict(), residuals(), ...)

  • 这显然只是一个虚构的例子:我不知道 4 是否是 NonRSevents_before1stRS 变量的合理值)
  • 您可以同时指定更多不同的值进行预测 (data.frame(NonRSevents_before1stRS=c(4,5,6,7,8)))
  • 如果您有多个预测变量,则必须为每个预测的每个预测变量指定一些值,例如data.frame(x=4:8,y=mean(orig_data$y), ...)

如果您想要原始数据集中观测值的预测概率,只需predict(fitted_model, type="response")

你是对的 inv.logit()(来自一堆不同的包,不知道你使用的是哪个)或 plogis()(从基数 R,本质上是相同的)将从对数或对数赔率尺度转换为概率尺度,所以

plogis(predict(fitted_model))

也会起作用(predict 默认提供链接函数 [在本例中为 logit/log-odds] 尺度的预测)。

关于r - 如何从 GLM 输出中获取概率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48131237/

相关文章:

r - 子集列出与列表名称相同的所有元素

r - 缩短 R 中函数调用的长度 - revoScaleR rxGLM()

c++ - 如何将函数值更改为 C++ 中表( Gamma 分布)中的值?

algorithm - 如何编写函数以某种概率返回值?

r - 在R中打印所有glm系数

r - 使用 R 中的 predict() 函数绘制 glm 时,如何确保我的 x 和 y 长度没有差异?

r - 测试数据框列是否包含向量的任何元素

javascript - R:从网站下载 .csv

r - 如何识别一组有序列中的第一个零?

c - 覆盖所有随机数的迭代次数