χ2χ2多维数据

机器算法验证 卡方检验 列联表 对数线性 克莱默斯-v
2022-03-16 13:42:57

我想测试名义数据的两个观察值是否符合相同的分布。我正在使用卡方统计来执行卡方同质性检验对结果进行归一化ϕ

不幸的是,我能找到的所有执行卡方同质性检验的例子(例如这里)都用两个一维观察结果进行了检验。例如,上面链接之后的示例根据男孩和女孩的观看偏好来比较男孩和女孩。这以的形式进行了两个观察。但是,我想以形式测试观察结果。我不知道,在这种情况下,“多维”是否是正确的术语。我想可能是这样。[x0,,xn][[x0,,xn],,[z0,...,zm]]

您能否向我解释一下,如何通过多行观察进行卡方同质性检验?我知道它有效,因为 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]]]))第一个值是卡方的地方。展平观测值会产生不同的值,因此肯定存在差异。

您如何计算以确定多维观测的同质性?χ2请注意,我知道如何在多行列联表上相反,我想知道如何为两个列联表的同质性执行 a 。χ2

例子:

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 允许确定多维观察的期望值(和预期值作为其调用的最后一个元素返回:χ2

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 的第一个单元格的快速证明:)。相反,他们的计算似乎在某种程度上相互依赖。χ2146165263=91.60

我想知道期望值如何相互依赖,以便我自己计算。

2个回答

要分析多向列联表,请使用对数线性模型事实上,对数线性模型是泊松广义线性模型的一个特例,所以你可以这样做,但对数线性模型对用户更友好。在 Python 中,您可能需要使用 Poisson GLM,因为我收集可能无法实现对数线性模型。我将使用您的数据和 R 来演示对数线性模型。

library(MASS)
tab = array(c(95, 31, 20, 70, 29, 18, 21, 69, 98, 54, 35, 11), dim=c(3,2,2))
tab = as.table(tab)
names(dimnames(tab)) = c("outcomes", "actions", "observations")
dimnames(tab)[[1]] = c("0", "1", "2")
dimnames(tab)[[2]] = c("0", "1")
dimnames(tab)[[3]] = c("1", "2") 
tab
# , , observations = 1
#         actions
# outcomes  0  1
#        0 95 70
#        1 31 29
#        2 20 18
# 
# , , observations = 2
#         actions
# outcomes  0  1
#        0 21 54
#        1 69 35
#        2 98 11

对数线性模型只是一系列拟合优度测试。我们可以从假设所有单元格具有相同期望值的(平凡的)空模型开始:

summary(tab)
# Number of cases in table: 551 
# Number of factors: 3 
# Test for independence of all factors:
#  Chisq = 159.18, df = 7, p-value = 4.772e-31

null 被拒绝。接下来,我们可以拟合一个饱和模型:

m.sat = loglm(~observations*actions*outcomes, tab)
m.sat
# Call:
# loglm(formula = ~observations * actions * outcomes, data = tab)
# 
# Statistics:
#                  X^2 df P(> X^2)
# Likelihood Ratio   0  0        1
# Pearson            0  0        1

自然,这非常适合。在这一点上,我们可以从空模型构建,看看附加项是否改善了拟合,或者从饱和模型中删除项,看看拟合是否明显变差。后者更方便,也更传统。要查看outcomesby的分布是否actions作为 的函数而不同observation,我们需要删除 和 之间的observations交互actions * outcomes如果我们还降低 的边际效应observations,我们正在测试 的两个水平之间的平均计数是否不同observations我不知道,你可能感兴趣也可能不感兴趣。

m1 = loglm(~observations + actions*outcomes, tab)
sum(tab[,,1])  # 263
sum(tab[,,2])  # 288
m2 = loglm(~actions*outcomes, tab)
anova(m2, m1)
# LR tests for hierarchical log-linear models
# 
# Model 1:
#   ~actions * outcomes 
# Model 2:
#   ~observations + actions * outcomes 
# 
#           Deviance df Delta(Dev) Delta(df) P(> Delta(Dev))
# Model 1   126.4172  6                                    
# Model 2   125.2825  5   1.134691         1         0.28678
# Saturated   0.0000  0 125.282534         5         0.00000

Model 1已经从Model 2(请注意,令人困惑的是,Model 1 m2, 和Model 2 m1),但模型拟合的下降非常小。这并不重要。没有足够的证据表明平均计数相差observation. 另一方面,Model 2Saturated模型相比,拟合度的下降非常显着。数据与两个级别的计数分布相同的想法不一致observation

我在5 下找到了答案:“三通表”。显然,我缺少的术语是三向列联表在三维列联表中确定预期值实际上与标准变体非常相似。

在正常的列联表中,您可以通过将行总和与列总和相乘并将乘积除以总和来获得预期值。通常表示为eij=oi.o.jn, 在哪里oi.是行总和,o.j是列总和,并且n是总数。

在三向列联表中,您不会将(即行或列)的总和相乘,而是将平面的总和相乘。因此,您除以所有涉及的观察值的平方

对于给定的示例,表 1 中第一个单元格的计算如下:

(95+70+21+54)(95+31+20+21+69+98)(95+31+20+70+29+18)(263+288)2=240313263303601=69.44

表2中最后一个单元格的计算:

(11+98+20+18)(70+29+18+54+35+11)(21+69+98+54+35+11)(263+288)2=30.26

备受追捧的χ2值是观察到的和预期的差异的平方和,除以预期,像往常一样。