拟合优度检验与列联表分析:Python中的卡方检验与相关分析
拟合优度检验(goodness-of-fit test)是用于检验观察值与理论期望值之间是否存在显著差异的统计方法。它常用于对一个或多个离散变量进行统计推断。Python中的卡方检验是一种常用的拟合优度检验方法。
在Python中,可以使用scipy库中的chisquare函数进行卡方检验。chisquare函数接受两个参数:观察值列表和理论期望值列表。观察值列表是实际观测到的频数,理论期望值列表是根据某个假设或模型计算得到的频数。
下面是一个例子,假设我们有一组观测数据,记录了某一种动物在不同区域的分布情况。我们想要检验这些观测数据是否与我们的理论期望分布相符。
import numpy as np
from scipy.stats import chisquare
# 观察值列表
observed = np.array([100, 50, 30, 20])
# 理论期望值列表
expected = np.array([120, 40, 20, 20])
# 进行卡方检验
chi2, p = chisquare(observed, expected)
print('卡方统计量:', chi2)
print('p值:', p)
输出结果为:
卡方统计量: 6.666666666666667 p值: 0.08126258126258126
p值表示观察到的数据与理论期望之间的显著性差异。在这个例子中,p值为0.081,大于通常的显著性水平(例如0.05),因此无法拒绝假设,即观察数据与理论期望相符。
另一个常用的统计方法是列联表分析(contingency table analysis),用于分析两个或多个离散变量之间的关系。在Python中,可以使用scipy库中的chi2_contingency函数进行列联表分析。
下面是一个例子,假设我们要分析某个城市男女性别与吸烟习惯之间的关系。我们有一张观察到的列联表,记录了各个组合的频数。我们想要确定男女性别和吸烟习惯之间是否存在关联。
import numpy as np
from scipy.stats import chi2_contingency
# 列联表
observed = np.array([[100, 200], [50, 150]])
# 进行列联表分析
chi2, p, dof, expected = chi2_contingency(observed)
print('卡方统计量:', chi2)
print('p值:', p)
print('自由度:', dof)
print('理论期望值:', expected)
输出结果为:
卡方统计量: 1.25 p值: 0.26359713811572666 自由度: 1 理论期望值: [[ 75. 225.] [ 75. 225.]]
p值表示男女性别和吸烟习惯之间的关联度。在这个例子中,p值为0.264,大于通常的显著性水平(例如0.05),因此无法拒绝假设,即男女性别与吸烟习惯之间没有显著的关联。
在进行卡方检验和列联表分析时,需要注意一些前提条件。例如,观察值应当是独立的、离散的、且符合特定的分布。如果不满足这些条件,可能会导致结果的不准确性。
总之,Python中的卡方检验和列联表分析提供了一种方便而强大的方式来进行拟合优度检验和相关分析。通过这些方法,可以评估观察数据与理论期望之间的显著性差异,以及离散变量之间的关联程度。
