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

R与在线计算器卡方拟合优度检验结果差异的原因排查

卡方拟合优度检验的R代码错误分析

你在R中调用chisq.test(A, C)时犯了参数使用错误,导致R执行的是卡方独立性检验(列联表检验),而非你需要的拟合优度检验,这是结果与在线计算器差异极大的核心原因。

错误原因详解

chisq.test()函数的参数规则是:

  • 如果只传一个向量x,且指定p参数(预期概率),才会执行拟合优度检验;
  • 如果传入两个向量x和y,R会自动将它们转换为列联表,执行独立性检验(检验两个分类变量是否独立)。

你传入的A和C都是长度为4的向量,R会把它们处理成2行4列的列联表:

C1    C2   C3    C4
A1  45     4    10    59
A2 28.32 20.06  5.9  63.72

此时计算的是这个列联表的独立性检验,自由度为(2-1)*(4-1)=9,和你得到的输出中df=9完全对应,这显然不是你要的拟合优度检验。

正确的R代码实现

拟合优度检验需要通过p参数传递预期概率分布(而非直接传预期值)。因为你的预期值C是面积占比乘以总观测数(118),所以预期概率就是C的相对比例(或者直接用面积占比B转换为比例):

A <- c(45, 4, 10, 59) # 各植被类型的观测标本数
C <- c(28.32, 20.06, 5.9, 63.72) # 计算得到的预期值

# 正确调用:指定p为预期值的相对比例
chisq.test(A, p = C / sum(C))

或者直接用面积占比B(因为sum(B)=100,比例就是B/100):

B <- c(24, 17, 5, 54) # 各植被类型的面积占比(百分比)
chisq.test(A, p = B / 100)

执行上述正确代码后,得到的结果会和在线计算器一致:X-squared≈25.88,p-value≈1e-05,自由度为4-1=3(类别数减1)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 03:23:26