R中的glm对象和使用偏移量进行预测

5

我正在使用 R 进行逻辑回归,但是我正在使用偏移量。

  mylogit <- glm(Y ~  X1 + offset(0.2*X2) + offset(0.4*X3), data = test, family = "binomial")

输出结果只显示一个系数,即截距和其中一个预测变量X1。
    Coefficients:
    (Intercept)               X1
      0.5250748         0.0157259

我的问题是:如何从该模型的每个观察值中获取原始预测结果? 更具体地说,如果我使用“predict”函数,它是否会包括所有特征及其系数,即使模型系数仅列出截距和X1?

  prob = predict(mylogit,test,type=c("response"))

我需要使用predict函数吗?"mylogit"对象中是否包含可以直接计算的内容?(是的,我看过glm的文档,但仍然感到困惑。)

感谢您的耐心。

1个回答

7
我可以报告一些关于glmoffset()的实验结果。从这个实验来看,你调用predict得到的结果似乎没有考虑到offset。相反,看起来需要使用summary.glm来实现这一目的。我从?glm中的第一个示例进行了一些修改(如果您提供数据,那么这将更加相关,因为我们可以更多地尝试使用"test"所需的newdata参数)。
counts <- c(18,17,15,20,10,20,25,13,12)
outcome <- gl(3,1,9)
treatment <- gl(3,3)
print(d.AD <- data.frame(treatment, outcome, counts))
glm.D93 <- glm(counts ~ outcome + treatment + offset(1:9), family = poisson())
glm.D93d <- glm(counts ~ outcome + treatment , family = poisson())

> predict(glm.D93d, type="response")
       1        2        3        4        5        6        7        8        9 
21.00000 13.33333 15.66667 21.00000 13.33333 15.66667 21.00000 13.33333 15.66667 
> predict(glm.D93, type="response")
       1        2        3        4        5        6        7        8        9 
21.00000 13.33333 15.66667 21.00000 13.33333 15.66667 21.00000 13.33333 15.66667 

据我所知,只有在进行估计系数与空假设估计(通常为0)的比较以进行统计推断时,offset才会显现出来。这是由summary.glm完成的:
> summary(glm.D93)$coef
             Estimate Std. Error    z value      Pr(>|z|)
(Intercept)  2.044522  0.1708987  11.963362  5.527764e-33
outcome2    -1.454255  0.2021708  -7.193203  6.328878e-13
outcome3    -2.292987  0.1927423 -11.896644  1.232021e-32
treatment2  -3.000000  0.2000000 -15.000000  7.341915e-51
treatment3  -6.000000  0.2000000 -30.000000 9.813361e-198
> summary(glm.D93d)$coef
                 Estimate Std. Error       z value     Pr(>|z|)
(Intercept)  3.044522e+00  0.1708987  1.781478e+01 5.426767e-71
outcome2    -4.542553e-01  0.2021708 -2.246889e+00 2.464711e-02
outcome3    -2.929871e-01  0.1927423 -1.520097e+00 1.284865e-01
treatment2   1.337909e-15  0.2000000  6.689547e-15 1.000000e+00
treatment3   1.421085e-15  0.2000000  7.105427e-15 1.000000e+00

偏移量仅更改参考水平(在这个混乱的示例中进行了相当奇怪的更改),而对$linear.predictors$fitted与数据的拟合没有影响。我没有看到在glm中影响此项的评论,但在?lm中有一条评论:“由offset指定的偏移量将不会包含在predict.lm的预测中,而由公式中的偏移项指定的偏移量将会包含在预测中。”我承认我从阅读?model.offset中获得的见解很少。


谢谢您的全面回复,我会仔细审查并研究它。实际上,我认为模型确实考虑了它们,因为当我手动执行时,它报告相同的答案。我会整理我的代码并在这里发布。谢谢! - nerdlyfe
我并不认为这是“全面的”。在某些情况下,我曾经使用“偏移量”,但我承认我并不完全确定它是如何工作的。我的一些“实验性”发现让我感到惊讶。 - IRTFM
这个回答真的回答了问题吗?我遇到了和楼主类似的困难。 - Helen
哪个问题?有多相似?(我认为您可能需要构建一个 [MCVE] 并发布一个新问题。) - IRTFM

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接