Python 计算卡方值,值 x^2 基于
其中 e
是预期值,O
是观测到的值。示例中有两个维度:轮换 s
和缺陷类型 t ,因此最终可以表示为:
可以如下所示计算该特定公式的值:
diff = lambda e, o: (e-o)**2/e
chi2 = sum(
diff(expected[s, t], defects[s, t])
for s in shift_totals
for t in type_totals
)
这样就定义了一个小型匿名函数来优化计算。这使得只需执行一次expected[s,t]
和defects[s,t]
属性的计算,即便两处用到了期望值。对于这个数据集,最终的 x^2 值为19.18。
由于有3个轮换和4种缺陷类型,因此自由度一共为6。由于我们认为它们是彼此独立的,所以会得到(3-1)×(4-1) = 6。根据卡方表显示,任何低于12.5916的数据都有1/20的概率是完全随机的。由于结果是19.18,因此数据不太可能是随机的。
累积分布函数表明值19.18的概率值为0.00387,相当于有4/1000的概率是随机的。完整分析的下一步是设计一个后续研究,用于发现不同缺陷类型和轮换的详细特性。需要找到与缺陷相关性最大的自变量,进而继续分析。这项工作的合理性在于 x^2 的值表明结果并不是简单的随机变化。
一个补充问题是关于阈值12.5916的。可以在统计表中找到这个值,也可以直接计算这个阈值。这会引出许多函数式编程的有趣示例。