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

在Python中使用Scipy计算卡方检验的p值

发布时间:2023-12-26 00:45:30

卡方检验是一种用来衡量观察频数与理论频数之间的差异的统计方法。在Python中,可以使用Scipy库中的stats模块来进行卡方检验的计算。

首先,我们需要导入所需的库和函数:

from scipy import stats
import numpy as np

接下来,我们需要创建一个观察频数矩阵和一个理论频数矩阵。观察频数矩阵包含我们观测到的频数,而理论频数矩阵包含我们期望的频数。这两个矩阵的维度需要相同,并且要求每个单元格的值都是非负整数。

下面是一个示例,我们将使用一个简单的二维矩阵来进行计算:

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

现在,我们可以使用scipy.stats.chisquare函数来进行卡方检验的计算。该函数接受两个参数:观察频数矩阵和理论频数矩阵。默认情况下,该函数假设观察频数与理论频数之间的差异是显著的。

chi2, p_value = stats.chisquare(observed)

chi2变量是卡方检验统计量的值,p_value变量是计算得到的p值。我们可以打印出这两个值来查看结果:

print("卡方检验统计量的值:", chi2)
print("p值:", p_value)

接下来,我们可以根据p值来进行假设检验。通常,如果p值低于我们事先设定的显著性水平(如0.05),我们可以拒绝原假设。如果p值高于显著性水平,我们无法拒绝原假设。

下面是一个完整的示例,展示了如何使用Scipy进行卡方检验的计算:

from scipy import stats
import numpy as np

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

chi2, p_value = stats.chisquare(observed)

print("卡方检验统计量的值:", chi2)
print("p值:", p_value)

运行代码后,我们将获得卡方检验统计量的值和p值。根据p值的大小,我们可以判断观测频数与理论频数之间的差异是否显著。