You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 02:40:35