Python:卡方列联检验(如何解释)

Posted

技术标签:

【中文标题】Python:卡方列联检验(如何解释)【英文标题】:Python: chi-squared contingency test (how to interpret) 【发布时间】:2021-08-04 15:12:20 【问题描述】:

我已经完成了如下卡方应变检验的练习,但我在如何解释结果方面遇到了问题。 以下测试的结果显示 p-val = 0。 那么这是否意味着两个变量不独立? 由于这是一个小数据,我认为变量是独立的。 p-val 为 0 似乎很奇怪。 我是不是做错了什么??

import pandas as pd
df = pd.DataFrame(
    "~60m2" : [54, 577, 143, 782],
    "60~85m2" : [2, 735, 1437, 1],
    "85m2~" : [0, 142, 44, 0],
    )
df.index = ["A", "B", "C", "D"]
df.columns.names = ["size"]
df.index.names = ["city"]

from scipy import stats
stats.chi2_contingency(df)

输出

(2064.576731417199,
 0.0,
 6,
 array([[ 22.24559612,  31.09522594,   2.65917794],
        [577.59101353, 807.36533061,  69.04365586],
        [645.12228746, 901.76155221,  77.11616033],
        [311.04110288, 434.77789124,  37.18100587]]))

【问题讨论】:

只是来自docs 的注释:An often quoted guideline for the validity of this calculation is that the test should be used only if the observed and expected frequencies in each cell are at least 5。可能不是答案,但可能是问题所在。 【参考方案1】:

我认为这是正确的。你们的城市非常不同。尝试按行归一化:

(df.T / df.sum(axis=1)).T                                             

size     ~60m2   60~85m2     85m2~
city                              
A     0.964286  0.035714  0.000000
B     0.396836  0.505502  0.097662
C     0.088054  0.884852  0.027094
D     0.998723  0.001277  0.000000

每一行都与其他行非常不同,所以是的,城市似乎不同,即从不同人群中抽样。

【讨论】:

以上是关于Python:卡方列联检验(如何解释)的主要内容,如果未能解决你的问题,请参考以下文章

我如何找到不适用卡方检验的2x2列联表的效果大小?

关于rc列联表的卡方检验 求助!!!

R语言构建仿真列联表并进行卡方检验(chisq.test):检验两个分类变量是否独立输出期望的列联表

R语言使用gmodels包的CrossTable函数计算获取二维列联表CrossTable函数可以设置输出比率(行比率列比率单元格比率)指定小数位的个数执行卡方检验Fisher精确检验等

spss怎么进行列联分析

R语言列联表的统计分析及假设检验