我有一个数据框架,我想为它计算一个齐平方和p值。然而,当我打印出预期的值时,它们不是我所期望的。我期望代码测试的零假设是,Q7不依赖于“改进”,因此我期望“预期频率”用于减少、增加,并且对每个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函数的源代码,因为文档没有太多的细节,但我仍然不明白为什么我没有看到我期望的东西。
发布于 2019-08-26 13:38:45
我在那里做了一个测试,使用与您相同的输入数据:
array([[ 2., 18., 21.],
[ 0., 2., 1.],
[ 3., 11., 5.],
[ 4., 24., 14.],
[ 1., 16., 8.]])得到的结果和你对预期频率的结果一样。如果我们查看第一个单元格(行“可能”,列“减少”)。“可能”的边际和为42,“减少”为10,表的边际和为130。因此,对于第一个单元,我们的期望值为:
(10 * 41) / 130 = 3.1538461538461537对于右下角单元格(行'Verly‘,列'No change'),我们有:
(49 * 25) / 130 = 9.423076923076923等等,这些结果与stats.scipy的结果相匹配。
https://stackoverflow.com/questions/57658325
复制相似问题