如何使用R语言进行卡方检验

Python021

如何使用R语言进行卡方检验,第1张

我们想知道喝牛奶对感冒发病率有没有影响,以下为数据统计的四格表:

从上文中我们通过卡方计算公式手动计算出P在0.1到0.5,说明牛奶对感冒发病率没有影响。

下面我们通过R计算一下具体p直:

x<-matrix(c(43,28,96,84),ncol=2,nrow=2)

chisq.test(x)$p.value

此外出来2X2联表,还可以计算一维表(自由度为个数),例如下面:

判断5种品牌啤酒的爱好者有无显著差异:

P值越大,支持原假设的证据就越强,给定显著性水平α(取0.05), 当P值小于α时,就拒绝原假设。

查找三维列联表数据的分析方法时,找到了 这篇 介绍二维的,各种情况分类很详细。

更好的高维列联表统计方法介绍还请留言赐教!

原文如下:

分类资料在医学统计中很常见,有些统计学书上称为计数资料,比如(有效、无效),(发病、不发病),(男、女),血型(A、B、O、AB)等等。 分类资料一般根据频数整理成列联表的形式,一般的列联表多是二维的(也称行列表,或R×C列联表,高维列联表下次讨论),列联表根据变量是否有序可以分为双向无序、单项有序、双向有序列联表,统计方法是不同的,分析如下:

是指行、列变量均为无序的列联表,例如要研究吸烟和肺癌之间的关系,行变量为是否吸烟:吸烟、不吸烟,列变量为肺癌发病:发病,不发病,如下表:

对于这种数据,我们的统计目的是分析行列变量的独立性,即:肺癌发病是否与吸烟有关,可选用的方法有以下两种:

基于卡方分布,H0为行、列变量相互独立,SPSS中“分析->描述性统计->交叉表”可实现。 四格表使用条件:专用公式①样本总数大于40;②各个单元格理论值均大于5。校正公式:①样本总数大于40;②理论值1

基于超几何分布,当数据不满足Pearson卡方检验时使用。SPSS中“分析->描述性统计->交叉表”可实现。注意SPSS仅提供了2×2表的精确概率,需要计算R×C列联表的精确概率,可以选择精确按钮中的蒙特卡罗近似法实现。

条件:不能有任何一个格子的理论频数T

如若不符合:可以增加研究样本量(通常少用);对理论频数较小的行或者列进行合并或者删除;采用R×C表的Fisher确切概率法(通常采用蒙特卡洛近似法)

操作:分析—描述—交叉表—设置好行列变量—点击精确—选择蒙特卡洛。

常见的情况是结果变量有序,而原因变量无序。比如要比较AB两种药物的治疗效果,药物分组(AB)是无序的,而结果变量是有序的(无效,显效,治愈),可以整理成如下的表格:

可以选择的统计方法主要有:

基于卡方分布,H0为两组总体分布一致,SPSS中“分析->非参数检验->独立样本”中可实现。

注意:在SPSS中,如果是整理成了列联表资料,需要用频数进行数据加权。变量编码为:①药物(名义):A=1,B=2,②疗效(度量):无效=1,有效=2,治愈=3,③频数(度量)。

用于分组数大于2的情况,比如要比较3种或以上药物的疗效。实现方法与Mann–WhitneyU类似。

注意:当行变量为有序时,通常当作无序处理。但若行变量为有序,列变量为二分类率时,根据研究目的,也可以选择趋势性卡方检验。

比如这个例子:要比较某种药物对某种疾病的治疗效果,按年龄段的分组,要考察治疗效果是否与年龄段相关,整理成下表:

行、列都是有序的,这是我们主要关心的:行列变量之间是否有相关性,如果有相关性,是线性相关还是曲线关系。可以选择的方法如下:

检验有无相关性,基于卡方检验,在SPSS中“分析->相关->双样本”中可实现。

检验有无线性关系,基于卡方检验,SPSS“分析->交叉表”卡方结果表格中的“线性和线性组合”就是。

通常是为了检验一致性。比如用两台仪器对同一样本进行检验,结果分为阴性、阳性,现在要比较两台仪器的结果是否据有一致性。整理成下表:

常用的方法为:

H0为行列变量无一致性。在SPSS中“分析->描述性统计->交叉表”中可实现。

行列变量为配对资料,比如有某种药物可以缓解某种疾病的某种症状,在同一个患者身上比较用药前后的症状,评价药物的资料效果,列成下表:

可以选用的统计方法:

仅用于2×2列联表。基于卡方分布。在SPSS中“分析->描述性统计->交叉表”中可实现。本检验与Pearson卡方检验具有同一性,使用条件必须满足Pearson卡方检验的条件。如果条件不能满足,需要进行Yate校正。

是McNemar检验的扩展,用于分类数目大于2的配对列联表分析。在SPSS中“分析->描述性统计->交叉表”中可实现。 SPSS中依然选择的是Mcnemar,结果输出的是Mcnemar-Bowker结果。