卡方检验思想及其应用

卡方检验是以χ2分布为基础的一种常用假设检验方法,它的无效假设H0是:观察频数与期望频数没有差别。

  该检验的基本思想是:首先假设H0成立,基于此前提计算出χ2值,它表示观察值与理论值之间的偏离程度。根据χ2分布及自由度可以确定在H0假设成立的情况下获得当前统计量及更极端情况的概率P。如果当前统计量大于P值,说明观察值与理论值偏离程度太大,应当拒绝无效假设,表示比较资料之间有显著差异;否则就不能拒绝无效假设,尚不能认为样本所代表的实际情况和理论假设有差别。

卡方检验的主要应用:

(1)检验某个连续变量的分布是否与某种理论分布相一致。如是否符合正态分布、是否服从均匀分布等

①提出原假设H0:变量符合F(x)分布(针对连续型变量),若针对离散型变量,则要假设其分布律

②将样本划分区间k个,每个区间样本数不小于5,区间互不相交,获得每个区间的实际频数fi

③根据假设分布的分布函数,求出每个区间的理论概率pi,得到理论频数npi(n为样本总数)

④计算卡方统计量 

⑤计算自由度,即区间数减1,假设显著性α=0.05,得到x2(k-1)α临界值,如果卡方统计量大于临界值,说明理论与实际偏差过大,拒绝原假设


(2)检验某个分类变量各类的出现概率是否等于指定概率。如在36选7的彩票抽奖中,每个数字出现的概率是否各为1/36;掷硬币时,正反两面出现的概率是否均为0.5。

①提出原假设H0:假设该各类变量符合出现概率

②根据原假设得出理论频数,即对各分类变量其对应概率为pi,则理论频数为npi(n为样本总数)

③根据已有实际观测值fi,计算卡方统计量即 

④计算自由度,为分类变量数目减去一,与再显著性α=0.05下的临界值比较,若大于临界值,则认为偏差过大,拒绝原假设


(3)检验某两个分类变量是否相互独立。如吸烟(二分类变量:是、否)是否与呼吸道疾病(二分类变量:是、否)有关;产品原料种类(多分类变量)是否与产品合格(二分类变量)有关。该问题针对列联表。

①提出原假设H0:两个分类变量之间无关

②再假设无关的条件下,应用其独立同分布特点,计算出每个格子的理论概率值,比如吸烟并且没有呼吸道疾病的概率值,利用样本数据,分别求出吸烟的概率和患呼吸道疾病的概率,两者相乘得到联合概率,再乘以样本总调查数,就得到了理论数,这里有一个前提很重要,就是我们假设了分类变量之间独立,再能将其概率相乘。

③根据样本,得到实际观测值,计算出卡方统计量

④列联表自由度为(列数-1)(行数-1),再与显著性α=0.05下的临界值比较,若大于,则拒绝原假设,认为有关


(4)检验控制某种或某几种分类因素的作用以后,另两个分类变量是否相互独立。如在上例中,控制性别、年龄因素影响以后,吸烟是否和呼吸道疾病有关;控制产品加工工艺的影响后,产品原料类别是否与产品合格有关。

(5)检验某两种方法的结果是否一致。如采用两种诊断方法对同一批人进行诊断,其诊断结果是否一致;采用两种方法对客户进行价值类别预测,预测结果是否一致。

第四和第五种方法同上,关键都在于求出理论频数,这是构造卡方统计量的关键。



### 两个独立样本的卡方检验原理 卡方检验的核心思想是比较理论频数与实际频数之间的吻合程度或拟合优度问题[^1]。对于两个独立样本的情况,通常用于判断这两个样本所代表的总体是否存在显著差异或者它们是否具有某种关联性。 具体来说,在两个独立样本的情况下,可以通过构建列联表来表示不同类别下的观测频率,并通过卡方统计量评估这些类别的分布是否一致。无效假设通常是认为两组数据之间不存在显著差异,即两者来自相同的总体或彼此独立[^2]。 #### Python 实现两个独立样本的卡方检验 以下是使用 `scipy.stats` 中的 `chi2_contingency` 函数来进行两个独立样本卡方检验的具体实现: ```python from scipy.stats import chi2_contingency # 构建一个简单的列联表 (Contingency Table),这里是一个例子 observed = [[10, 20], [30, 40]] # 行列表示不同的分组,列表示分类变量的不同水平 # 执行卡方检验 chi2_stat, p_value, dof, expected = chi2_contingency(observed) print(f"Chi-Square Statistic: {chi2_stat}") print(f"P-value: {p_value}") print(f"Degrees of Freedom: {dof}") print("Expected Frequencies:") for row in expected: print(row) ``` 上述代码中,`chi2_contingency` 返回四个值:卡方统计量 (`chi2_stat`)、P 值 (`p_value`)、自由度 (`dof`) 和预期频数矩阵 (`expected`)。如果 P 值小于设定的显著性水平(如 0.05),则可以拒绝原假设,表明两组数据存在显著差异[^3]。 #### R 实现两个独立样本的卡方检验 在 R 中也可以轻松完成类似的分析过程。下面展示了一个简单的方法: ```R # 创建一个列联表作为输入数据 contingency_table <- matrix(c(10, 20, 30, 40), nrow=2, byrow=TRUE) # 使用 chisq.test 进行卡方检验 result <- chisq.test(contingency_table) # 输出结果 cat("Chi-Square Test Results:\n") cat(paste("X-squared:", result$statistic, "\n")) cat(paste("df:", result$parameter, "\n")) cat(paste("p-value:", result$p.value, "\n")) # 查看期望频数 print(result$expected) ``` 这段脚本同样会给出卡方统计量、自由度以及对应的 P 值等重要指标,帮助研究者决定是否接受零假设。 --- ### § 1. 如何解释卡方检验的结果及其背后的概率意义? 2. 当样本量较小时,卡方检验还适用吗?如果不适用,有哪些替代方案? 3. 列联表中的单元格数量对卡方检验的效果有何影响? 4. 如果需要处理多于两类的数据集,应该如何扩展卡方检验应用范围? 5. 在什么情况下应该选择 Fisher 精确检验而非传统的卡方检验
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值