计算卡方值是数据分析中的一个重要知识点,而 Python 也提供了相应的库进行计算。下面是使用 Python 计算卡方值的完整攻略。
什么是卡方值?
卡方值(Chi-Square Value)是一种统计量,用于计算观察值和期望值之间的差异程度,常用于独立性检验和拟合优度检验。在数据分析、机器学习等领域广泛应用。
计算卡方值的步骤
以下是使用 Python 计算卡方值的一般步骤:
- 构建数据表格,包括每个类别的实际观察值和期望值。
- 计算每个单元格的卡方值。
- 计算所有单元格的卡方值之和,得到总的卡方值。
Python 计算卡方值的库和函数
Python 通过 SciPy 库中的 stats 模块提供了卡方值的计算函数。其中, chi2_contingency
函数计算列联表的卡方值和 p 值, chisquare
函数计算单个数组的卡方值和 p 值。
以下是 chi2_contingency
、chisquare
函数的语法和参数说明:
# chi2_contingency函数
scipy.stats.chi2_contingency(observed, correction=True, lambda_=None)
参数说明:
- observed:列联表(二维数组),存储每个类别的实际观察值,需要注意每行和每列的总和必须相等。
- correction:是否应用 Yates 校正,默认 True。
- lambda_:指定进行卡方值计算时所采用的独立检验方法。
返回值说明:
- 卡方值
- p 值
- 自由度
- 期望值
# chisquare 函数
scipy.stats.chisquare(f_obs, f_exp=None, ddof=0, axis=None)
参数说明:
- f_obs:观察数组(一维或多维数组),存储每个类别的实际观察值。
- f_exp:期望数组(一维或多维数组),存储每个类别的期望值,默认使用 f_obs 计算期望值。
- ddof:自由度的减少量,默认为 0,仅用于多维数组。
- axis:计算的轴向。
返回值说明:
- 卡方值
- p 值
卡方值计算示例
列联表的卡方值计算
下面是一个简单的示例,演示如何用 Python 计算列联表的卡方值。
假设我们有一个这样的数据表格(行表示性别,列表示车型,数字表示数量),并希望计算行和列之间的独立性是否存在差异:
小轿车 跑车 SUV
男性 12 8 4
女性 6 9 5
使用 chi2_contingency
函数进行卡方值的计算,代码如下:
import numpy as np
from scipy.stats import chi2_contingency
obs = np.array([[12, 8, 4], [6, 9, 5]])
chi2, p, dof, ex = chi2_contingency(obs, correction=True)
计算结果如下:
卡方值: 2.082075106163864
p 值: 0.3541795562722749
自由度: 2
期望值: [[ 9.6 8.4 5. ]
[ 8.4 7.4 4.2]]
由于 p
值大于显著性水平,因此不能拒绝原假设(即行和列之间独立性不存在)。
单一数组的卡方值计算
下面是一个示例,演示如何使用 Python 计算单一数组的卡方值。
假设我们有一个数组 arr
,表示一组随机变量的观察数值:
import numpy as np
from scipy.stats import chisquare
arr = np.array([30, 20, 15, 5])
exp = np.array([15, 15, 15, 15])
chi2, p = chisquare(arr, f_exp=exp)
计算结果如下:
卡方值: 20.0
p 值: 0.00037572043251818365
由于 p
值小于显著性水平,因此可以拒绝原假设(即观察值和期望值之间存在差异)。
以上就是计算卡方值的完整攻略,希望能对大家有所帮助。