如何用R的car包linearHypothesis检验期望失重≥95的单侧假设?
单侧线性假设检验实现(基于corrosion数据集模型)
你已使用faraway包的corrosion数据集构建了以loss为因变量、Fe为自变量的简单线性模型,此前通过car包的linearHypothesis完成了双侧假设检验,现需检验单侧原假设:H₀: 当Fe含量为1.5%时,期望失重 ≥ 95 mg/dm²/天(备择假设H₁: 期望失重 < 95 mg/dm²/天),可通过以下两种方式实现:
方法1:手动计算单侧p值
直接基于预测值、标准误和t分布计算,步骤清晰直观:
# 加载包与数据 library(faraway) library(car) data(corrosion) # 构建线性模型 model <- lm(loss ~ Fe, data = corrosion) # 1. 获取Fe=1.5时的预测期望失重及标准误 pred_result <- predict(model, newdata = data.frame(Fe=1.5), se.fit = TRUE) fit_value <- pred_result$fit # 模型预测的期望失重 se_value <- pred_result$se.fit # 预测值的标准误 # 2. 计算t统计量 t_statistic <- (fit_value - 95) / se_value # 3. 计算单侧p值(对应备择假设:期望失重 < 95) one_sided_p <- pt(t_statistic, df = df.residual(model)) cat("单侧检验p值:", one_sided_p, "\n")
方法2:基于双侧检验结果转换
利用linearHypothesis的双侧检验结果,转换为单侧p值:
# 先执行双侧检验 hypo_result <- linearHypothesis(model, c(1, 1.5), rhs = 95) # 从F统计量反推t统计量(保留符号,由预测值与95的差值方向决定) t_stat_from_f <- sign(fit_value - 95) * sqrt(hypo_result$F[2]) # 计算单侧p值 one_sided_p_from_f <- pt(t_stat_from_f, df = df.residual(model)) cat("转换后的单侧p值:", one_sided_p_from_f, "\n")
注意事项
- 若备择假设为期望失重 > 95,则单侧p值需改为
1 - pt(t_statistic, df = df.residual(model)) - 两种方法计算结果完全一致,可根据习惯选择
内容的提问来源于stack exchange,提问作者Adrien Riaux
相关产品推荐
相关产品推荐

