我想测试名义数据的两个观察值是否符合相同的分布。我正在使用卡方统计来执行卡方同质性检验对结果进行归一化。
不幸的是,我能找到的所有执行卡方同质性检验的例子(例如这里)都用两个一维观察结果进行了检验。例如,上面链接之后的示例根据男孩和女孩的观看偏好来比较男孩和女孩。这以的形式进行了两个观察。但是,我想以形式测试观察结果。我不知道,在这种情况下,“多维”是否是正确的术语。我想可能是这样。
您能否向我解释一下,如何通过多行观察进行卡方同质性检验?我知道它有效,因为 scipy 为二维输入列表提供了唯一值。
import scipy.stats as sps
observation1 = [[95, 31, 20], [70, 29, 18]]
observation2 = [[21, 69, 98], [54, 35, 11]]
data = [observation1, observation2]
print sps.chi2_contingency(data)
上面的代码产生(159.18016188570166, 4.772222443744986e-31, 7, array([[[ 69.44008748, 47.45072645, 42.53205358], [ 45.11526642, 30.82876539, 27.63310068]], [[ 76.04085626, 51.96125177, 46.57502446], [ 49.40378984, 33.75925639, 30.25982128]]]))
第一个值是卡方的地方。展平观测值会产生不同的值,因此肯定存在差异。
您如何计算以确定多维观测的同质性?请注意,我知道如何在多行列联表上相反,我想知道如何为两个列联表的同质性执行 a 。
例子:
Table 1 Table 2
outcome0 outcome1 outcome2 sum outcome0 outcome1 outcome2
action0 95 31 20 146 action0 21 69 98
action1 70 29 18 117 action1 54 35 11
sum 165 60 38 263
问题:这些观察结果是否遵循相同的分布?
Scipy 允许确定多维观察的期望值(和预期值作为其调用的最后一个元素返回:
Expected table 1 Expected table 2
outcome0 outcome1 outcome2 outcome0 outcome1 outcome2
action0 69.44 47.45 42.53 action0 76.04 51.96 46.58
action1 45.12 30.83 27.63 action1 49.40 33.76 30.26
差的平方和除以期望值,得到值。但是请注意,预期的表格不仅仅是来自每个单独表格的预期值(表格 1 的第一个单元格的快速证明:)。相反,他们的计算似乎在某种程度上相互依赖。
我想知道期望值如何相互依赖,以便我自己计算。