如何手动计算R逻辑回归标准误差值?

时间:2016-09-15 12:03:42

标签: r statistics

我想知道,标准误差值如何从R中的逻辑回归中手动计算出来。

我拿了一个样本数据并在其上应用二项逻辑回归

data = data.frame(x = c(1,2,3,4,5,6,7,8,9,10),y = c(0,0,0,1,1,1,0,1,1,1))
model = glm(y ~ x, data = data, family = binomial(link = "logit"))

我对模型的总结如下,我不知道如何计算标准误差

> summary(model)

Call:
glm(formula = y ~ x, family = binomial(link = "logit"), data = data)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-1.9367  -0.5656   0.2641   0.6875   1.2974  

Coefficients:
            Estimate Std. Error z value Pr(>|z|)  
(Intercept)  -2.9265     2.0601  -1.421   0.1554  
x             0.6622     0.4001   1.655   0.0979 .
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 13.4602  on 9  degrees of freedom
Residual deviance:  8.6202  on 8  degrees of freedom
AIC: 12.62

Number of Fisher Scoring iterations: 5

如果有人会回答这个问题,那就太棒了......先谢谢

1 个答案:

答案 0 :(得分:1)

您可以将此计算为summary(model)

输出的非标度协方差矩阵的对角线元素的平方根
sqrt(diag(summary(model)$cov.unscaled)*summary(model)$dispersion)
# (Intercept)           x 
#   2.0600893   0.4000937

对于您的模型,分散参数为1,因此如果您愿意,可以忽略最后一个术语(summary(model)$dispersion)。

要获得此非缩放协方差矩阵,请执行

fittedVals = model$fitted.values
W = diag(fittedVals*(1 - fittedVals))
solve(t(X)%*%W%*%X)
#             (Intercept)          x
# (Intercept)   4.2439753 -0.7506158
# x            -0.7506158  0.1600754