卡方独立性检验chisq.test()

本文介绍了如何使用R语言中的卡方独立性检验来评估两个分类变量之间的相关性,并通过实例展示了如何运用chisq.test()函数进行独立性检验。

先引用一段R IN ACTION 的话:R提供了多种检验类别型变量独立性的方法。本节中描述的三种检验分别为卡方独立性检验、Fisher精确检验和Cochran-Mantel–Haenszel检验。

你可以使用chisq.test()函数对二维表的行变量和列变量进行卡方独立性检验。示例参见代码清单7-13。 

# Listing 7.13 - Chis-square test of independence
> library(vcd)
> mytable <- xtabs(~Treatment+Improved, data=Arthritis)    --这里是要检验的两个列属性:Treatment ,Improved,构建一个交叉相乘表。
> mytable
         Improved
Treatment None Some Marked                --这里显示交叉相乘的结果               
  Placebo   29    7      7
  Treated   13    7     21
> chisq.test(mytable)                     --下面使用了卡方函数测量两个变量是否对立。                     


        Pearson's Chi-squared test


data:  mytable
X-squared = 13.055, df = 2, p-value = 0.001463         --从结果显示, p-value非常小, 可认为是Treatment ,Improved不独立, 存在某种相关关系。


下面我们再用卡方独立检查函数检查一组相互独立的属性, 以进行对比学习:

> mytable <- xtabs(~Sex+Improved, data=Arthritis)
> mytable
        Improved
Sex      None Some Marked
  Female   25   12     22
  Male     17    2      6
> chisq.test(mytable)


        Pearson's Chi-squared test


data:  mytable
X-squared = 4.8407, df = 2, p-value = 0.08889      --从这个列在看出, Sex, Improved之间是相对独立的。


那么问题来类, 卡方函数是根据什么原理来判断两个属性是否相对独立的呢? 查了些资料, 卡方函数的计算原理如下:

首先我们介绍一下相关的一个重要概念: 变量类型。


一:分类变量(定性的变量)

该类变量如分类, 等级等等, 如男女, 用于表示变量的属性, 他的取值一定是离散的, 而且不同的取值, 代表不同的性质。


二:定量变量(定量的变量)

该类变量一般为实数, 表示大小不同的度量。


研究不同类型变量的相关性, 自然方法上也会用一些区别:

一:定量变量: 回归分析(三点图, 相关系数等等)

二:定性变量:独立性检查(卡方独立性检查等等)


显然, 卡方独立检测, 是针对分类变量(也叫定性)来使用的, 其基础原理也不复杂, 更多的是使用了概率算法, 如下:

Sex 与Improved到底是否相关? 

> addmargins(mytable)
        Improved
Sex          None   Some   Marked    Sum
  Female   25           12          22      59
  Male        17             2            6       25
  Sum        42           14          28      84


假设: 如果Sex与Improved相互独立, 那么Female的治愈比例和Male的治愈比例应该是大致相等的, 否则可以认为Sex与Improved之间存在某种关系, 影像了Improved的情况, 导致不同性别的Improved情况存在差异.

 用公式来表示关系如下:

     Female(Marked/SUM(Female)) = Male(Marked/sum(Male))

     22/59 = 6/25

     0. 37  =  0.24


当数据量巨大的时候, 上述等式应该与接近, 假设在大量数据下, 上述等式还是存在很大差异, 这说明两个变量之间不相互对立。


上述只是基本原理, 卡方检查在此基础上做了很多数学处理(用兴趣的可以查询详情), 建立了卡方检查表作为对立性检查的参考:

当 p-value < 0.1时就可以认为他们之间没有显著的相关性。

     








<think>嗯,用户问的是如何在R语言中使用chisq.test函数来检验数据的分布。首先,我需要回忆一下检验的类型。检验主要有两种应用:独立性检验和拟合优度检验。用户这里提到的是检验数据分布,应该属于拟合优度检验,也就是检验样本数据是否符合某种理论分布。 接下来,我得确认chisq.test函数在R中是否支持拟合优度检验。根据之前引用的资料,引用[3]提到chisq.test可以用于评估两个分类变量的关联性,但拟合优度检验可能需要不同的参数设置。查阅R的帮助文档或者引用中的内容,比如引用[5]提到可以对二维表进行独立性检验,但拟合优度可能需要将数据作为向量输入,并指定理论概率。 然后,用户可能需要具体的步骤和示例。我需要解释如何使用chisq.test进行分布检验,例如检验数据是否符合特定的概率分布,比如均匀分布或正态分布。需要注意的是,对于连续分布,通常需要先进行分箱,将数据分成几个区间,计算每个区间的观测频数和期望频数,再进行检验。 另外,要提醒用户注意检验的前提条件,比如期望频数不能过低,通常每个类别的期望频数至少为5,否则检验结果可能不可靠。这可能需要在示例中说明,比如在检验正态分布时,先进行分箱处理,计算每个区间的期望概率,再乘以样本量得到期望频数。 还要考虑用户可能的误区,比如直接对连续数据使用检验而不进行分箱,或者理论概率设置不正确。因此,示例中应该展示正确的分箱步骤和概率计算法。 最后,需要引用相关的参考资料,比如引用[3]和引用[5],说明chisq.test函数的使用法,并指出进行拟合优度检验时需要注意的参数设置,比如是否正确设置p参数,或者是否需要关闭连续性校正(根据引用[4],correct参数可能会影响结果,但在拟合优度检验中可能不需要校正)。 总结回答的结构:先区分检验的类型,说明拟合优度检验法,给出具体步骤和示例代码,强调注意事项,最后提供相关问题。同时确保使用正确的LaTeX格式,比如行内公式用$...$,独立公式用$$...$$。</think>在R语言中,`chisq.test()`函数主要用于两种场景:独立性检验(判断两个分类变量是否独立)和拟合优度检验(判断观测分布是否符合理论分布)。检验数据分布属于后者,需通过**理论概率参数**明确目标分布。 --- ### 一、拟合优度检验步骤 1. **数据分组**:将连续数据分箱为$k$个区间(或直接使用分类数据) 2. **计算观测频数**:统计每个区间的实际观测频数$O_i$ 3. **计算期望频数**:根据理论分布计算每个区间的期望频数$E_i = n \cdot p_i$,其中$n$为总样本量,$p_i$为理论概率 4. **执行检验**:通过`chisq.test(x = 观测频数, p = 理论概率)`完成检验 --- ### 二、示例:检验骰子是否均匀 假设投掷骰子60次,观测频数为$[9, 10, 11, 8, 12, 10]$,检验其是否均匀分布: ```r # 观测频数 observed <- c(9, 10, 11, 8, 12, 10) # 理论概率(均匀分布时每个类别概率为1/6) expected_prob <- rep(1/6, 6) # 执行检验 result <- chisq.test(observed, p = expected_prob) print(result) ``` 输出结果包含统计量$X^2$和P值: ``` Chi-squared test for given probabilities data: observed X-squared = 1, df = 5, p-value = 0.9626 ``` 若P值>0.05,则接受原假设,认为骰子均匀[^3][^5]。 --- ### 三、检验正态分布(需分箱) 假设数据`x`服从正态分布$N(\mu, \sigma^2)$,步骤如下: ```r # 生成样本数据 set.seed(123) x <- rnorm(100, mean = 50, sd = 10) # 分箱处理(4个区间) breaks <- c(-Inf, 40, 50, 60, Inf) observed <- table(cut(x, breaks)) # 计算理论概率 mu <- mean(x) # 估计均值 sigma <- sd(x) # 估计标准差 expected_prob <- diff(pnorm(breaks, mean = mu, sd = sigma)) # 执行检验 result <- chisq.test(observed, p = expected_prob) print(result) ``` --- ### 四、注意事项 1. **期望频数限制**:所有$E_i \geq 5$,否则需合并区间或使用其他法[^3] 2. **参数估计影响自由度**:若理论分布的参数由样本估计,自由度需调整为$df = k - m - 1$($m$为估计的参数个数) 3. **连续性校正**:对低样本量数据可使用`correct = FALSE`禁用校正[^4] ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值