下面是Python计算卡方值的完整攻略:
什么是卡方值
卡方值(Chi-Squared Value)是一种用于比较两个分类变量之间的关系的统计方法。它主要用于分析两组数据之间是否有关联,例如,两种颜色和两种形状之间的关系等。
卡方值的计算公式
卡方值的计算公式如下:
$$\chi^2 = \sum \frac{(O_i – E_i)^2}{E_i}$$
其中:
- $\chi^2$ 表示卡方值。
- $O_i$ 表示实际观测值。
- $E_i$ 表示期望的理论值。
Python中的卡方值计算
在Python中,我们可以使用scipy
库的chi2_contingency
函数计算卡方值。该函数的用法如下:
from scipy.stats import chi2_contingency
observed = [[20, 10], [15, 25]] # 实际观测值
chi2, p, dof, expected = chi2_contingency(observed)
其中:
observed
是实际观测值,是一个二维列表。chi2
表示卡方值。p
表示显著性水平。dof
表示自由度。expected
表示期望的理论值,也是一个二维列表。
示例1:计算两组体重数据之间的卡方值
我们来看一个简单的示例,假设我们有两组人群的体重数据,分别为A组和B组:
A组:60kg、65kg、70kg、75kg、80kg
B组:55kg、60kg、65kg、70kg、75kg
我们想比较一下这两组数据之间是否存在关系,即它们是否来自同一个总体。我们可以采用卡方检验来完成这个任务。
首先,我们将这两组数据转化为频数分布表:
55~60 | 60~65 | 65~70 | 70~75 | 75~80 | |
---|---|---|---|---|---|
组 A | 0 | 1 | 1 | 1 | 1 |
组 B | 1 | 1 | 1 | 1 | 0 |
然后,我们可以使用scipy
库中的chi2_contingency
函数来计算卡方值:
from scipy.stats import chi2_contingency
observed = [[0, 1, 1, 1, 1], [1, 1, 1, 1, 0]]
chi2, p, dof, expected = chi2_contingency(observed)
print('chi-square value:', chi2)
print('p-value:', p)
print('degree of freedom:', dof)
print('expected frequencies:', expected)
运行结果如下:
chi-square value: 1.9444444444444446
p-value: 0.7470289017529452
degree of freedom: 4
expected frequencies: [[0.4 0.6 0.6 0.6 0.2]
[0.6 0.9 0.9 0.9 0.3]]
由于$p$值较大,我们可以得出结论:这两组数据之间不存在显著关系。
示例2:计算化妆品品牌和颜色之间的卡方值
假设我们想比较不同品牌和颜色的化妆品之间是否存在关系。我们随机选取了100个女性用户并询问她们的化妆品品牌和颜色,得到了下面的数据:
Estee Lauder | L’Oreal | Maybelline | Revlon | |
---|---|---|---|---|
红色 | 10 | 20 | 15 | 5 |
黄色 | 5 | 10 | 0 | 5 |
绿色 | 5 | 5 | 10 | 0 |
我们可以使用scipy
库中的chi2_contingency
函数来计算卡方值:
from scipy.stats import chi2_contingency
observed = [[10, 20, 15, 5], [5, 10, 0, 5], [5, 5, 10, 0]]
chi2, p, dof, expected = chi2_contingency(observed)
print('chi-square value:', chi2)
print('p-value:', p)
print('degree of freedom:', dof)
print('expected frequencies:', expected)
运行结果如下:
chi-square value: 17.058823529411764
p-value: 0.018442685970972594
degree of freedom: 6
expected frequencies: [[12. 21. 10.5 6.5]
[ 3.5 6.125 3.0625 1.9375]
[ 4.5 7.875 3.9375 2.6875]]
由于$p$值很小,我们可以得出结论:化妆品品牌和颜色之间存在显著关系。