如何在回归分析结果数据框中添加p值?
如何在回归结果数据框中添加p值?
你当前生成回归结果数据框的代码如下:
results <- data.frame(prov = rownames(reg1$coefficients), b = reg1$coefficients, se = 0) results$se[!is.na(reg1$coefficients)] <- reg1$se results
运行后得到的结果:
prov b se ln_Y ln_Y 1.028167431 0.02080551 ln_E ln_E 1.031713536 0.01992422 ln_DIST ln_DIST -0.667898564 0.03304988 CNTG CNTG 0.438520721 0.08357299 LANG LANG -0.013346340 0.08555195 CLNY CLNY 0.445627119 0.13327170 RTA RTA 0.003917042 0.04995412 ln_REM_EXP ln_REM_EXP 1.176112822 0.09881562 ln_REM_IMP ln_REM_IMP 1.186171498 0.08737484
要添加p值,只需在现有代码基础上通过t统计量计算双侧p值即可,修改后的代码如下:
# 构建包含变量名、系数、标准误的基础数据框 results <- data.frame( prov = rownames(reg1$coefficients), b = reg1$coefficients, se = reg1$se # 直接赋值,无需先设0再替换 ) # 计算t统计量:系数除以标准误 results$t_stat <- results$b / results$se # 计算双侧p值:利用t分布的尾部概率,自由度取回归模型的残差自由度 results$p_value <- 2 * pt(abs(results$t_stat), df = reg1$df.residual, lower.tail = FALSE) # 查看最终结果 results
说明:
- 若你的
reg1是lm()拟合的回归对象,reg1$df.residual会自动给出残差自由度,无需手动计算;如果是其他类型的回归模型,需要替换为对应模型的自由度数值 - 双侧p值的计算逻辑:取t统计量的绝对值,计算右侧尾部概率后乘以2,对应回归分析中常用的双侧检验标准
内容的提问来源于stack exchange,提问作者Daniel Gambito
相关产品推荐
相关产品推荐

