统计中该用Fisher精确检验还是卡方检验?

Fisher精确检验和卡方检验的原理与代码实现,如何选择他们?

Posted by Chunfu Shawn on 2022/10/25
Last Updated by Chunfu Shawn on 2022/10/25

一、卡方检验

卡方检验属于非参数检验,由于非参检验不存在具体参数和总体正态分布的假设,所以有时被称为自由分布检验。卡方检验就是依靠卡方分布的统计检验。

什么是卡方分布:若n个相互独立的随机变量ξ₁,ξ₂,…,ξn ,均服从标准正态分布(也称独立同分布于标准正态分布),则这n个服从标准正态分布的随机变量的平方和构成一新的随机变量,其分布规律称为卡方分布(chi-square distribution)

对应卡方分布被称为服从自由度为n的卡方分布,记作:

卡方分布(Chi-square distribution)是一种连续型分布,它只有一个参数,即自由度n。按卡方分布的密度函数f(X)可给出自由度n= 1, 2,3,…的族/分布曲线, 且分布的形状依赖于自由度n的大小:

  1. 当自由度n≤2 时,曲线呈L形;
  2. 随着n的增加,曲线逐渐趋于对称;
  3. 当自由度n趋近无穷时,卡方分布趋近正态分布。

卡方检验(Chi-Squared Test)是一种统计量的分布在零假设成立时近似服从卡方分布的假设检验。在没有其他的限定条件或说明时, 卡方检验一般指代的是皮尔森卡方检验。在卡方检验的一般运用中,研究人员将观察量的值划分成若干互斥的分类, 且使用一套理论(或零假设)尝试去说明观察量的值落入不同分类的概率分布的模型。 而卡方检验的目的就在于去衡量这个假设对观察结果所反映的程度。卡方检验就是统计样本的实际观测值与理论推断值之间的偏离程度, 实际观测值与理论推断值之间的偏离程度就决定卡方值的大小,如果卡方值越大,二者偏差程度越大; 反之,二者偏差越小;若两个值完全相等时,卡方值就为0,表明理论值完全符合。

卡方统计量的公式:

公式中o代表observation,即实际频数;e代表Expectation,即期望频数。

为什么要在求和之前除以 ?

的差距是相对较大还是较小,取决于期望频数的大小

举例:我们准备在周末举办一个派对,并预期有1000个客人。实际来参加派对的人数为1040人。当我们计划接待1000人时,比预期多40个人并不是什么大问题,大家可能仍然有足够的啤酒和薯片。另一种情况,假设我们预期派对有10人出席,而实际上来了50人。在这种情况下,多出来的40个客人将会导致大麻烦,因为实际人数是预期人数的5倍,我们可能并没有足够的食物提供。

因此,差异如何显著取决于你原先的预期。

最后,我们详细来看两种不同的卡方检验:拟合度的卡方检验卡方独立性检验

1、拟合度的卡方检验

我们用几个例子来区分这两种卡方检验:

  • 对于可口可乐公司的两个领导品牌,大多数美国人喜欢哪一种?
  • 公司采用了新的网页页面B,相较于旧版页面A,网民更喜欢哪一种页面?

以上两个例子属于拟合度的卡方检验,原因在于它们都是有关总体比例的问题。我们只是将个体分类,并想知道每个类别中的总体比例。它检验的内容仅涉及一个因素多项分类计数资料,检验的是单一变量在多项分类中实际观察次数分布与某理论次数是否有显著差异。

(1)定义

主要使用样本数据检验总体分布形态或比例的假说。测验决定所获得的的样本比例与虚无假设中的总体比例的拟合程度如何。

拟合度的卡方检验又叫最佳拟合度的卡方检验,为何取名“最佳拟合”?这是因为最佳拟合度的卡方检验的目的是比较数据(实际频数)与虚无假设。确定数据如何拟合虚无假设指定的分布,因此取名“最佳拟合”。

拟合优度检验中公式如上,自由度为:k-1,k代表分类变量数;

当期望次数并不假定是均匀分布时,也可以采用拟合优度检验。

(2)卡方拟合优度检验在R中的实现

我们用上面的一个例子来实践,假设有一个数据集包含60名被试对新旧版网页的喜好选择。是否网民更喜欢新网页的布局?

H0:在一般总体中,网民对新旧网页没有特定的偏爱。

H1:在一般总体中,网民更偏爱新网页的布局。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
head(prefsAB)
Subject Pref
1 1 B
2 2 B
3 3 B
4 4 B
5 5 B
6 6 B
summary(prefsAB)
Subject Pref
1 : 1 A:14
2 : 1 B:46
3 : 1
4 : 1
5 : 1
6 : 1
(Other):54

数据包含两列,第一列为被试,第二列为喜好(A为旧版页面,B为新版页面)

选择A的共有14人,选择B的共有46人。

采用xtabs生成频数表

1
2
3
4
5
6
prfs = xtabs( ~ Pref, data=prefsAB)
prfs

Pref
A B
14 46

进行卡方拟合优度检验

1
2
3
4
5
6
 chisq.test(prfs)

Chi-squared test for given probabilities

data: prfs
X-squared = 17.067, df = 1, p-value = 3.609e-05

p值小于0.05,拒绝原假设H0,被试对新网页有着显著的偏爱。

如何报告卡方值

APA为在科学杂志上报告卡方统计指定了具体的格式。

被试对新旧网页布局的喜好有着显著的不同,新网页更受到偏爱,

https://www.zhihu.com/equation?tex=%5Cchi%5E%7B2%7D%EF%BC%881%2Cn%3D60%EF%BC%89%3D17.067%2C+p%3C0.05

卡方符号后的括号中包含自由度以及样本大小n

2、卡方独立性检验

卡方独立性检验是用于两个或两个以上因素多项分类计数资料分析,即研究两类变量之间(以列联表形式呈现)的关联性和依存性,或相关性、独立性、交互作用性。

(1)定义

卡方独立性检验的虚无假设指所测量的两个变量之间是独立的,即对于每个个体,所得到的一个变量值与另一个变量的值是不相关的。

同样,我们通过例子来区分卡方独立性检验和卡方拟合优度检验

Example:研究人员正在研究学习成绩和自尊之间的关系。样本为n=150名10岁的儿童,每名被试均根据学习成绩和自尊水平分类。下表显示了该例中的频率分布和实际频数。

可以看出两种不同的卡方检验中,一种用于不同水平的单一分类变量,另一种用于不同水平的多类别变量。

在上例中,存在两个分类变量(学习成绩、自尊),每个变量含有不同水平(学习成绩有高低两个水平、自尊有高中低三个水平)。该例需要看期望的高中低三个自尊水平的学生数,与目前学习成绩高和低两组中统计数的偏差,如果偏差足够大,不符合卡方分布,则这两个分类变量不是独立的。

卡方独立性检验的公式和卡方拟合优度相同,自由度为:

其中,R为行数row,C为列数column

对于四格表资料的χ2检验的卡方值,也可以使用下面专用公式计算:

(2)卡方独立性检验在R中的实现

我们使用vcd包中的Arthritis数据集。该数据来自**Kock & Edward (1988)**,是一项风湿关节炎新疗法的双盲临床实验结果。

1
2
3
4
5
6
7
8
9
library(vcd)
head(Arthritis)
ID Treatment Sex Age Improved
1 57 Treated Male 27 Some
2 46 Treated Male 29 None
3 77 Treated Male 30 None
4 17 Treated Male 32 Marked
5 36 Treated Male 46 Marked
6 23 Treated Male 58 Marked

数据中的变量包含:

  1. 被试号(ID)
  2. 治疗情况(Treatment):安慰剂治疗(Placebo)、用药治疗(Treated)
  3. 性别:男性(Male)、女性(Female)
  4. 年龄(Age)
  5. 改善情况:无改善(None)、一定程度的改善(Some)、显著改善(Marked)

2-4均为计数资料,在R语言中称为类别型因子(factor)

我们想知道治疗情况和改善情况是否相关或独立

生成列联表

1
2
3
4
5
6
mytable <- xtabs(~Treatment+Improved, data = Arthritis)
mytable
Improved
Treatment None Some Marked
Placebo 29 7 7
Treated 13 7 21

进行卡方独立性检验

1
2
3
4
5
6
chisq.test(mytable)

Pearson's Chi-squared test

data: mytable
X-squared = 13.055, df = 2, p-value = 0.001463

患者接受的治疗和改善水平看上去存在某种关系(p < 0.01)

这里的p值表示从总体中抽取的样本行变量与列变量时相互独立的概率,由于p的概率值很小,所以我们拒绝了治疗类型和治疗结果相互独立的原假设。

二、Fisher精确检验(Fisher’s exact test)

1、超几何分布

超几何分布Fisher精确检验的理论依据 ,Fisher精确检验实际就是超几何分布检验

  • 超几何分布是统计学上一种离散概率分布。它描述了由有限个物件中抽出n个物件,成功抽出指定种类的物件的次数(不归还)。称为超几何分布,是因为其形式与“超几何函数”的级数展式的系数有关

总共有N件产品,其中M件次品,现在从中抽取n件做检查,抽到k件次品的概率分布服从超几何分布。

2、定义

Fisher精确检验是用于分析列联表(contingency tables)统计显著性检验方法,它用于检验两个分类的关联(association)。虽然实际中常常使用于小数据情况,但同样适用于大样本的情况。

例子:分析男人女人节食是否有显著区别;原假设男女节食没有区别,

figure3

Fisher说明了,出现上述情况的概率是:

p-value越小,越能拒绝原假设。

该测试还可用于量化两组之间的重叠。例如,在统计遗传学的富集分析中,可以为给定的表型注释一组基因,并且用户可能有兴趣测试他们自己的集合与那些基因的重叠。在这种情况下,可以生成一个 2 × 2 列联表,并通过识别应用 Fisher 精确检验

  1. 两个列表中提供的基因
  2. 第一个列表中提供的基因,而不是第二个列表中提供的基因
  3. 第二个列表而不是第一个列表中提供的基因
  4. 任一列表中均未提供的基因

该测试假定任一列表中的基因取自更广泛的基因组(例如所有剩余基因)。然后可以计算 p 值,总结两个列表之间重叠的重要性。这样就是超几何分布检验。

3、例子:

则出现此表的概率是:

比上表更极端的例子为:

该表的概率是:

所以p-value=0.001346076 + 0.000033652 = 0.001379728

p-value越小,越能拒绝原假设。

4、R中实现

> fisher.test(rbind(c(1,9),c(11,3)), alternative="less")$p.value [1] 0.001379728

为什么只计算其中一类就可以了?

因为这个列联表得自由度是1,比如第一行中如果有一个是确定的,那么因为和是定值,所以另一个数也就确定了。

//从分子来看,b和d和是一定的,那么,如果两者差值越大,对应的二项式系数都会越小。那么分子就会越小。但是分母并不是这个规律。a和b在变小变大的过程中会有一个趋势。

三、Fisher精确检验还是卡方检验?

为便于说明情况,我将这位朋友做的课题简要介绍下:比较两种方法(方法A和方法B)治疗某种疾病的效果,设计的细节就不再赘述了。最终研究者发现29例患者接受了A法治疗,15例有效;27位患者接受了B法治疗,21位有效。

对于此类数据的处理,相信大多数同行都会异口同声地说应该用卡方检验。的确,这种典型的四格表,且没有任何配对设计的元素,理论上讲是可以用卡方检验观察两个变量之间是否有关联的。经卡方检验后,得出P等0.042(具体的过程略,感兴趣者可阅读后续章节中关于如何在GraphPad Prism中进行卡方检验的内容)。于是研究者认定:B法优于A法!  

这个结论看起来是成立的,但事实真是如此吗?如果我们换一种统计方法,用Fisher确切概率法,会得到什么结果呢?笔者算了一下,P=0.054。这下问题来了:卡方检验和Fisher确切概率法的结果,该取哪一个呢?  

统计学教科书上通常会说:如果总样本量大于40,最小理论频数大于5,就应该用卡方检验;如果总样本量大于40,最小理论频数介于1和5之间,就应该使用卡方检验的校正公式;如果总样本量小于40,或(注意这个或字)最小理论频数小于1,就应该用Fisher确切概率法。

在本案例中,总样本量为56,最小理论频数为:27×20/56=9.64,明显是大于5的,因此应采用卡方检验。  

这里穿插一段关于最小理论频数的计算方法,实际上就是最小的横排合计数据和最小的纵列合计数据的乘积再除以总样本量。在本案例中,横排合计数据只有两个(29和27),纵列合计数据也只有两个(36和20),总样本量是56,因此最小理论频数就是27×20/56=9.64。在多行多列表格中寻找最小理论频数的方法与此类似。  

实际上,在本案子里中,笔者认为应该采用Fisher确切概率法的结果,即两组治疗效果之间的差异无统计学意义。教科书上虽然说明了如果总样本量大于40,最小理论频数大于5,就应该用卡方检验,但部分教科书会遗漏一句很关键的话,即“如果采用卡方检验得到的P值在0.05附近时,应该用Fisher确切概率法”。本案例中,卡方检验得到的P值是0.042,属于0.05附近,因此应采用Fisher确切概率法进行统计。实际上,对于未进行配对的四格表的卡方检验,任何时候都应该以Fisher确切概率法结果为准。  

也许有的读者会说:为什么发表的SCI论文,教科书上都说卡方检验呢?笔者分析主要是以下原因:  

第一,卡方检验最大的优势在于计算比较简便,不需要任何计算器,徒手都能算出卡方值,然后到卡方界值表中查找相应的结果即可。相比之下,Fisher确切概率法的计算要相对复杂些,尤其是样本量很大时。  

第二,如果差异很大,采用卡方检验和Fisher确切概率法得到的结果是相差甚小。比如卡方检验得到P=0.00025,而Fisher确切概率法可能会得到P=0.00026。即不管采用何种方法,不会改变研究结论。  

第三,在发明统计软件以前,人们无法用Fisher确切概率法分析数据,且已经习惯于用卡方检验,久而久之,认为卡方检验才是正确的检验的方法。熟不知,在统计软件发明后,Fisher确切概率法的计算已经是十分简单的事情了。  

既然历史和现实难免产生摩擦,应该如何权衡呢?在发表论文时,应该如何描述自己的统计学方法,如何进行统计学分析呢?笔者建议采用以下策略:  

第一,在论文的统计学中描述中,统一采用“the differences between rates were tested by χ2 or Fisher exact tests, if appropriate”的阐述。之所以采用这样的阐述,实属无奈之举,因为卡方检验对研究人员的影响太深刻了,如果作者不写卡方检验,可能会遭到审稿专家质疑,特别是自己还不是学术界大腕时。  

第二,在进行统计学处理时,应同时进行卡方检验和Fisher确切概率法进行统计。如果出现上述“相互矛盾”的情况,应以Fisher确切概率法结果为准。

四、参考:

  1. 卡方检验
  2. 第七章 χ2检验
  3. 统计学——卡方检验和卡方分布
  4. 超几何分布检验
  5. Fisher’s exact test
  6. 四格表统计中该用Fisher确切概率法还是卡方检验?