R语言如何让coeftest报告置信区间?基于coef结果计算方法
coeftest输出/计算置信区间方法
coeftest函数本身默认不会直接返回置信区间,有两种常用的实现方法:
方法1:用配套的coefci函数直接计算(推荐)
lmtest包提供了和coeftest完全适配的coefci函数,会自动匹配和coeftest一致的标准误、检验分布计算置信区间,不会出现结果口径不一致的问题。
示例代码:
library(lmtest) data("mtcars") testmodel <- glm(am ~ vs, data = mtcars, family = quasibinomial(link = "logit")) testcoef <- coeftest(testmodel) # 计算默认95%置信区间,可通过level参数调整置信水平 testci <- coefci(testmodel, level = 0.95) # 合并系数检验结果与置信区间,直接输出完整报表 cbind(testcoef, testci)
如果调用coeftest时指定了特殊的方差估计(比如稳健标准误、聚类标准误),只需要在coefci里传入完全相同的参数即可,结果会和检验结果完全匹配。
方法2:基于coeftest返回结果手动计算
如果需要自定义计算逻辑,也可以直接从coeftest返回的矩阵里提取系数估计值、标准误,结合对应分布的分位数计算置信区间,核心公式为:
置信区间边界 = 系数估计值 ± 对应检验分布的分位数 * 标准误
你示例中使用的是z检验,95%置信水平对应的正态分布分位数约为1.96,手动计算代码如下:
# 提取coeftest结果中的系数和标准误 est <- testcoef[, "Estimate"] se <- testcoef[, "Std. Error"] # 计算95%置信水平的z分布置信区间 z_crit <- qnorm(0.975) ci_manual <- cbind( lower = est - z_crit * se, upper = est + z_crit * se ) ci_manual
如果是t检验场景,把分位数计算替换为对应自由度的t分布分位数qt(0.975, df = 模型剩余自由度)即可。
注意:手动计算时一定要和coeftest使用的检验分布、标准误口径保持一致,否则会出现结果偏差。
内容的提问来源于stack exchange,提问作者tchoup
相关产品推荐
相关产品推荐

