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

R语言单样本方差卡方检验(Chi-squared test)实现疑问咨询

单样本方差检验实现问题解答

现有代码的错误原因

  • 第一版使用t.test()的实现逻辑错误:t.test()是针对总体均值的假设检验工具,你基于它的均值估计计算离均差平方和直接和假设方差比较的逻辑,完全不符合单样本方差检验的统计规范,返回的TRUE没有参考价值。
  • 直接调用chisq.test()的调用方式错误:R基础包的chisq.test()默认执行卡方拟合优度检验,用于比对观测频数和理论频数的吻合度,并不支持直接传入连续型样本做方差检验。你传入样本向量后函数将其误判为计数数据,输出的p=1是无意义的错误结果,不代表原假设100%成立。

单样本方差检验的正确实现

单样本方差检验的核心逻辑是:原假设H₀为总体方差等于给定值σ₀²,构造检验统计量χ² = (n-1)*s²/σ₀²,该统计量服从自由度为n-1的卡方分布,基于该分布计算p值即可完成检验。

手动实现代码

# 预设参数
sigma2_0 <- 0.0001 # 待检验的假设总体方差
sample_data <- c(8.99, 9.01, 8.98, 9.00, 9.01)
alpha <- 0.05
n <- length(sample_data)

# 计算检验统计量
sample_var <- var(sample_data)
chisq_stat <- (n-1)*sample_var / sigma2_0

# 计算双侧检验p值
p_value <- 2 * min(
  pchisq(chisq_stat, df = n-1), 
  1 - pchisq(chisq_stat, df = n-1)
)

# 结果输出与判断
cat("卡方统计量:", round(chisq_stat,3), "\n")
cat("自由度:", n-1, "\n")
cat("p值:", round(p_value,3), "\n")
if(p_value < alpha){
  cat("显著性水平0.05下拒绝原假设,总体方差不等于", sigma2_0)
}else{
  cat("显著性水平0.05下无法拒绝原假设,没有足够证据说明总体方差不等于", sigma2_0)
}

结果说明

运行上述代码可得p值约为0.302,大于0.05,因此无法拒绝原假设,没有足够证据证明该样本对应的总体方差不等于0.0001。

补充说明

假设检验中不存在“原假设100%成立”的结论,p值仅反映原假设成立的前提下观测到当前样本的概率,p值大于显著性水平仅能说明没有足够证据拒绝原假设,不能直接证明原假设为真。

内容的提问来源于stack exchange,提问作者WPHakoon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 13:36:01