一、卡方值的定义
卡方值,即卡方统计量,是一种用于衡量两个分类变量之间的相关性的统计量。它的值越大,表示两个变量之间的相关性越强。
二、卡方值的计算公式
卡方值的计算公式如下:
(Fo - Fe)^2 χ^2 = Σ --------------------------- Fe 其中,Fo 表示观察值,Fe 表示期望值,χ^2 表示卡方统计量。
根据上面的公式,我们可以分步计算得到卡方值。
三、卡方值的计算步骤
1. 构建列联表
首先需要构建一个列联表,用来记录两个分类变量的频数。
A1 A2 A3 ... An B1 f11 f12 f13 ... f1n B2 f21 f22 f23 ... f2n B3 f31 f32 f33 ... f3n ... ... ... ... ... ... Bm fm1 fm2 fm3 ... fmn
其中,B1~Bm 为行分类变量,A1~An 为列分类变量,fij 表示在 B 行 A 列条件下的频数。
2. 计算期望频数
根据列联表可以计算出期望频数,即每个分组的期望频数。
A1 A2 A3 ... An Σfi B1 E(B1,A1) E(B1,A2) E(B1,A3) ... E(B1,An) f1• B2 E(B2,A1) E(B2,A2) E(B2,A3) ... E(B2,An) f2• B3 E(B3,A1) E(B3,A2) E(B3,A3) ... E(B3,An) f3• ... ... ... ... ... ... ... Bm E(Bm,A1) E(Bm,A2) E(Bm,A3) ... E(Bm,An) fm• Σfj f•1 f•2 f•3 ... f•n N
其中,E(Bi,Aj) 表示在 A 列条件下 B 行的期望频数。
3. 计算卡方值
利用上面的公式就可以计算卡方值。
(fij - E(Bi,Aj))^2 χ^2 = Σ --------------------------- E(Bi,Aj)
四、代码示例
下面的代码示例演示了如何使用 Python 来计算卡方值。
import numpy as np from scipy.stats import chi2_contingency # 构建列联表 table = np.array([[10, 20, 30], [40, 50, 60]]) # 计算卡方值和 p 值 stat, p, dof, expected = chi2_contingency(table) print('卡方值:', stat) print('p 值:', p) print('自由度:', dof) print('期望值:\n', expected)
上面的代码中使用了 numpy 库中的 np.array 函数来创建一个列联表,之后使用 scipy 库中的 chi2_contingency 函数计算出卡方值、p 值、自由度和期望值。