如何从glm
对象中获取 Z - 统计数据的值作为向量?例如,我有
fit <- glm(y ~ 0 + x,binomial)
如何Pr(>|z|)
以与获取系数估计值相同的方式访问该列fit$coef
?
我相信
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值)
您可以通过以下方式访问您想要的信息
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))
看看这个函数是做什么的。
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 :)