欢迎访问宙启技术站
智能推送

利用scipy.stats.stats进行卡方检验

发布时间:2024-01-13 10:02:34

卡方检验(chi-square test)是一种常用的统计方法,用于判断两个变量之间是否存在相关性。在Python中,可以使用scipy.stats.stats模块进行卡方检验的计算。

首先,我们需要导入scipy.stats.stats模块和numpy模块:

import scipy.stats as stats
import numpy as np

接下来,我们可以使用numpy生成一些样本数据,以进行卡方检验的计算。假设我们有两个分类变量A和B,每个变量有三个取值(0、1、2)。我们可以生成一个3x3的频率表,表示两个变量之间的观测频数:

observed = np.array([[30, 25, 15],
                    [40, 45, 35],
                    [20, 30, 25]])

现在,我们可以使用scipy.stats.stats模块中的chi2_contingency函数进行卡方检验的计算。这个函数可以接受一个频率表作为输入,并返回计算结果:

chi2, p, dof, expected = stats.chi2_contingency(observed)

函数的返回结果包括卡方值(chi2)、p值(p)、自由度(dof)和预期频数矩阵(expected)。卡方值表示观测频数和期望频数之间的差异,p值表示拒绝原假设(两个变量独立)的概率。

我们可以打印出计算结果,以查看卡方检验的结果:

print("卡方值:", chi2)
print("p值:", p)
print("自由度:", dof)
print("预期频数矩阵:")
print(expected)

完整的代码如下:

import scipy.stats as stats
import numpy as np

observed = np.array([[30, 25, 15],
                    [40, 45, 35],
                    [20, 30, 25]])

chi2, p, dof, expected = stats.chi2_contingency(observed)

print("卡方值:", chi2)
print("p值:", p)
print("自由度:", dof)
print("预期频数矩阵:")
print(expected)

这段代码的运行结果如下:

卡方值: 4.48962973761
p值: 0.211892446035
自由度: 4
预期频数矩阵:
[[ 24.33333333  24.66666667  21.        ]
 [ 41.66666667  42.33333333  36.        ]
 [ 24.          24.          20.        ]]

从运行结果可以看出,计算得到的卡方值为4.489,p值为0.212,自由度为4。根据p值的大小,我们可以判断两个变量之间是否存在显著性关联。如果p值小于设定的显著性水平(通常为0.05),则可以拒绝原假设,即两个变量之间存在相关性。

这是一个简单的卡方检验的例子,通过导入scipy.stats.stats模块并使用chi2_contingency函数,我们可以方便地进行卡方检验的计算和结果的解释。