【问题标题】:Why aren't the expected frequencies returned by scipy.ststs.contingency.expected_freq what I expect?为什么 scipy.ststs.contingency.expected_freq 返回的预期频率不是我所期望的?
【发布时间】:2019-12-30 16:04:25
【问题描述】:

我有一个数据框,我想为其计算卡方和 p 值。但是,当我打印出预期值时,它们并不是我所期望的。我期望代码测试的零假设是 Q7 不依赖于“ConcernImprovement”,因此我预计每个 Q7 条目的“预期频率”减少、增加和没有变化是相同的

这是我观察到的数据框,名为LikelihoodConcern

ConcernImprovement  Decrease  Increase  No change
Q7                                               
Likely                   2.0      18.0       21.0
Not likely at all        0.0       2.0        1.0
Not very likely          3.0      11.0        5.0
Somewhat likely          4.0      24.0       14.0
Very likely              1.0      16.0        8.0

我试过这段代码:

from scipy.stats import chi2_contingency
chi2, p, dof, expected = chi2_contingency(LikelihoodConcern, correction=False)
expected

它为预期的频率返回这个:

array([[ 3.15384615, 22.39230769, 15.45384615],
       [ 0.23076923,  1.63846154,  1.13076923],
       [ 1.46153846, 10.37692308,  7.16153846],
       [ 3.23076923, 22.93846154, 15.83076923],
       [ 1.92307692, 13.65384615,  9.42307692]])

我预计它会返回:

array([[ 13.67777777, 13.67777777, 13.67777777],
       [ 1.00000000,  1.00000000,  1.00000000],
       [ 6.33333333, 6.33333333,  6.33333333],
       [ 14.00000000, 14.00000000, 14.00000000],
       [ 8.33333333, 8.33333333,  8.33333333]])

我已经查看了 expected_freq 函数的源代码,因为文档没有太多细节 - 但我仍然不明白为什么我没有看到我所期望的

【问题讨论】:

  • 每行值的相对比例由各列之和的相对比例决定。在您的示例中,列的总和为 [10, 71, 49]。在预期的数组中,每一行都与该边际总和成正比。
  • 嗨沃伦,我想我明白你在说什么。所以我认为在我想做的情况下,scipy 的预期频率是不合适的。但我会先查课本和网上。
  • 啊,我现在明白公式是如何工作的了。我的预期是不正确的,因为行和列的总和都必须等于他们之前所做的,但在预期的版本中,我认为我应该得到它们没有。

标签: python pandas scipy contingency


【解决方案1】:

我在那里做了一个测试,输入数据和你一样:

array([[ 2., 18., 21.],
   [ 0.,  2.,  1.],
   [ 3., 11.,  5.],
   [ 4., 24., 14.],
   [ 1., 16.,  8.]])

并得到与预期频率相同的结果。如果我们查看第一个单元格(“可能”行,“减少”列)。 “可能”的边际总和为 42,“减少”的边际总和为 10。表格的边际总和为 130。因此,对于第一个单元格,我们的预期值为:

(10 * 41) / 130 = 3.1538461538461537

对于右下角的单元格(“很可能”行,“无变化”列),我们有:

(49 * 25) / 130 = 9.423076923076923

等等。这些与stats.scipy 的结果相匹配。

【讨论】:

  • 啊,好的,谢谢!因此,如果 scipy 计算正确,那么我想我的问题是完全独立的,因为我不了解预期的频率。谢谢您的回答!我现在去找一些统计资源来帮助我:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-08
  • 2016-10-01
  • 1970-01-01
  • 2021-05-30
  • 1970-01-01
相关资源
最近更新 更多