8

如何从glm对象中获取 Z - 统计数据的值作为向量?例如,我有

fit <- glm(y ~ 0 + x,binomial)

如何Pr(>|z|)以与获取系数估计值相同的方式访问该列fit$coef

4

3 回答 3

11

我相信

coef(summary(fit))[,"Pr(>|z|)"]

会给你你想要的。(summary.glm()返回一个对象,该对象具有coef()返回系数表的方法。)(顺便说一下,如果存在访问器方法,则最好使用它们而不是直接访问拟合模型的组件——例如coef(fit)fit$coef.)

从线性回归中提取 p 值和 r 平方给出了类似的答案。

我建议methods(class="summary.glm")找到可用的访问器方法,但实际上比这有点棘手,因为默认方法(在这种情况下coef.default())也可能是相关的......

PS如果你想要Z值,coef(summary(fit))[,"z value"]应该这样做(你的问题有点模棱两可:通常当人们说“Z统计”时,他们的意思是想要测试统计的值,而不是p值)

于 2012-09-09T17:41:04.157 回答
1

您可以通过以下方式访问您想要的信息

utils::data(anorexia, package="MASS") # Some data

anorex.1 <- glm(Postwt ~ Prewt + Treat + offset(Prewt),
                family = gaussian, data = anorexia)  # a glm model 
summary(anorex.1)

summary(anorex.1)$coefficients[,3] # vector of t-values
(Intercept)       Prewt   TreatCont     TreatFT 
   3.716770   -3.508689   -2.163761    2.138933 

summary(anorex.1)$coefficients[,4] # vector of p-values
 (Intercept)        Prewt    TreatCont      TreatFT 
0.0004101067 0.0008034250 0.0339993147 0.0360350847 

summary(anorex.1)$coefficients[,3:4] # matrix 
              t value     Pr(>|t|)
(Intercept)  3.716770 0.0004101067
Prewt       -3.508689 0.0008034250
TreatCont   -2.163761 0.0339993147
TreatFT      2.138933 0.0360350847

str函数将向您显示对象中每个元素的位置,并且[[访问器(比$@DWin 和 @Ben Bolker 指出的更好)将为您提取信息。试着str(summary(anorex.1))看看这个函数是做什么的。

于 2012-09-09T17:45:11.577 回答
0

I use the summary syntax like: summary(my_model)[[1]][[2]]. You can try to use different combinations of numbers in "[[]]" to extract the data required. Of course, if I correctly understood your question :)

于 2012-09-10T05:46:53.990 回答