理解matlab中的chi2gof函数

Understanding the chi2gof function in matlab

我试图通过一个非常简单的测试来了解如何在 matlab 中使用 chi2gof 函数。假设我抛硬币 190 次,得到 94 次正面和 96 次反面。零假设应该是我得到 95h,95t。据我了解文档,我应该能够通过 运行

来检验假设

[h,p,stats] = chi2gof([94,96], 'expected', [95,95])

然而,这个returnsh = 1,按理说是拒绝原假设的意思,没有意义。另一个特别之处是 stats returns 中的 O 参数与 O: [0 2] 一样——但这不应该是我的输入 ([94,96]) 吗?我做错了什么?

我做错了什么?

问题是您将抛硬币的累积结果传递给 chi2gof。必须对整个样本进行拟合优度检验。来自官方文档(参考here):

  • x = 假设检验的样本数据,指定为向量(代码的错误部分
  • Expected = 每个 bin 的预期计数(代码的正确部分

让我们用正确的变量做一个例子:

ct = randsample([0 1],190,true,[0.49 0.51]);
[h,p,stats] = chi2gof(ct,'Expected',[95 95]);

h的返回值为0,绝对正确

现在,让我们举一个应该失败的例子:

ct = randsample([0 1],190,true,[0.05 0.95]);
[h,p,stats] = chi2gof(ct,'Expected',[95 95]);

如您所见,从第二次测试返回的 h 将等于 1

最后,不要忘记看一下第二个输出参数,它是测试的p-value,是评估结果重要性的重要元素。