【发布时间】:2018-05-21 19:13:01
【问题描述】:
我在每个类别中都有这样的预期和频率,如下所示:
它们看起来很相似,但卡方检验却不这么认为:
stats.chisquare(city_ans.answered, city_ans.sent)
# Power_divergenceResult(statistic=893005.32003277098, pvalue=0.0)
过滤小于 10 的值变化不大:
stats.chisquare(city_ans[city_ans.answered > 10].answered, city_ans[city_ans.answered > 10].sent)
# Power_divergenceResult(statistic=892917.3023088905, pvalue=0.0)
我做错了什么? 我如何在这里申请 F 测试?
附言。使用与 obs 和 exp 相同的值的测试 - return p_val = 1
stats.chisquare(city_ans.sent, city_ans.sent)
# Power_divergenceResult(statistic=0.0, pvalue=1.0)
但是这样的代码也应该返回 p_val = 1,但它不会:
stats.chisquare(0.9*city_ans.sent, city_ans.sent)
# Power_divergenceResult(statistic=10591.249999999995, pvalue=0.0)
UPD:
f_obs = weeks_ans.answered / np.sum(weeks_ans.answered)
f_exp = weeks_ans.sent / np.sum(weeks_ans.sent)
stats.chisquare(f_obs, f_exp)
# Power_divergenceResult(statistic=0.064491479990141154, pvalue=1.0)
这似乎是一个不错的结果,但我认为有些东西不在这里。
例如看看下面的分布,同样的方法:
# Power_divergenceResult(statistic=0.064491479990141154, pvalue=1.0)
使用分布相同的测试是否公平
【问题讨论】:
-
你的数据集有多大?
-
@WarrenWeckesser 仅 54 个类别(x 轴)和频率 - 从非常低的值到高达数千个
-
大尖峰是否出现在相同的 x 值上?否则,它们会导致频率出现巨大差异。
-
@WarrenWeckesser 不,他们匹配
-
“但是这样的代码也应该返回 p_val = 1,但它不会:...” 这是不正确的。 p 值不是相关系数。值的任何差异都会导致正的卡方统计量,并导致 p 值小于 1(尽管如果差异很小,数值计算的 p 值可能仍为 1)。
标签: python python-3.x scipy statistics