且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

《数学建模:基于R》一一1.5 列联表检验

更新时间:2022-10-02 18:57:57

本节书摘来自华章计算机《数学建模:基于R》一书中的第1章,第1.5节,作者:薛 毅 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.5 列联表检验

设两个随机变量X,Y均为离散型的,X取值于{a1,a2,…,aI},Y取值于{b1,b2,…,bJ}.设(X1,Y1),(X2,Y2),…,(Xn,Yn)为简单样本,记nij为(X1,Y1),(X2,Y2),…,(Xn,Yn)中等于(ai,bj)的个数.在求解问题时,常把数据列为形如表1.11的形式,称为列联表.根据列联表数据作的检验称为列联表检验.
《数学建模:基于R》一一1.5 列联表检验

1.5.1 Pearson χ2独立性检验
《数学建模:基于R》一一1.5 列联表检验
然后再计算***度.(X,Y)的值域一共划分成IJ个集合,但包含了一些未知参数.由于∑Ii=1pi·=1,pi·(i=1,2,…,I)中未知参数只有I-1个,同理,p·j(j=1,2,…,J)中未知参数只有J-1个,故共有I+J-2个未知参数,而K的***度就为IJ-1-(I+J-2)=(I-1)(J-1).
当I=J=2时,列联表中只有4个格子,称为“四格表”,这时式(1.70)简化为K=n(n11n22-n12n21)2n1·n2·n·1n·2***度为1.
对于四格列联表,由于χ2(1)为连续型变量,而K取离散值,当n较小时,这种近似不好,它往往导致K的值太大而轻易否定H0.为了改善K对χ2(1)的近似,Yate(耶茨)提出了一种修正方法,在式(1.70)中,分子的各项减去0.5,即K统计量的计算公式修改《数学建模:基于R》一一1.5 列联表检验
这种方法称为连续型修正.
前面介绍的chisq.test()函数可完成列联表数据的Pearson χ2独立性检验,只需将列联表写成矩阵形式即可.
例1.27 在一次社会调查中,以问卷方式调查了总共901人的月收入及对工作的满意程度,其中月收入A分为小于3000元、3000~7500元、7500~12000元及超过12000元四档.对工作的满意程度B分为很不满意、较不满意、基本满意和很满意4档.调查结果用4×4列联表表示,如表1.12所示.试分析工资收入与对工作的满意程度是否有关.
《数学建模:基于R》一一1.5 列联表检验

解 输入数据,用chisq.test()函数作检验(程序名:exam0127.R).x <- c(20, 24,`javascript
80, 82, 22, 38, 104, 125,
    13, 28, 81, 113, 7, 18, 54, 92)
X <- matrix(x, nc = 4, byrow = T)

chisq.test(X)
    Pearson's Chi-squared test
data: X

X-squared = 11.9886, df = 9, p-value = 0.214X-squared为统计量K, df为***度,p-value为P值.这里P值(=0.214)>0.05,接受原假设,即对工作的满意程度与个人收入无关.
例1.28 为了研究吸烟是否与患肺癌有关,调查了63位肺癌患者及43名非肺癌患者(对照组)中的吸烟人数,得到2×2列联表,如表1.13所示.
![image](https://yqfile.alicdn.com/20b9c882b53bb0138314c2f080e79f399ebff2df.png)

解 输入数据,用chisq.test()函数作检验(程序名:exam0128.R).> x <- matrix(c(60, 3, 32, 11), nc = 2)
> chisq.test(x, correct = FALSE)
    Pearson's Chi-squared test
data:  x
X-squared =9.6636, df =1, p-value =0.001880P值(=0.001880)<0.05,拒绝原假设,也就是说,吸烟与患肺癌是相关的.
对于2×2的列联表,参数correct的默认值为TRUE,即使用Yate连续修正,也就是用式(1.71)计算统计量K,目的是提高P值,避免“有显著差异”不可靠的情况发生.例如:> chisq.test(x)

    Pearson's Chi-squared test with
      Yates' continuity correction
data:  x
X-squared = 7.9327, df = 1, p-value = 0.004855在采用连续型修正的情况下,仍有相同的结论.
在用chisq.test()函数作计算时,要注意单元的期望频数.如果没有空单元(所有单元频数都不为零),并且所有单元的期望频数大于等于5,那么Pearson χ2检验是合理的;否则,计算机会显示警告信息.
当数据不满足χ2检验的条件时,应使用Fisher精确检验.
**1.5.2 Fisher精确独立性检验**
在样本数较小时(单元的期望频数小于4),需要用Fisher精确检验来完成独立性检验.
Fisher精确检验最初是针对2×2列联表提出的,现在可以应用到m×2或2×n的列联表中.当χ2检验的条件不满足时,这个精确检验是非常有用的.Fisher检验是建立在超几何分布的基础上的,对于单元频数较小的列联表来说,特别适合.
在R中,函数fisher.test()作精确的独立检验,其使用方法为fisher.test(x,y=NUL```javascript
L, workspace = 200000, hybrid = FALSE,
  control = list(), or = 1, alternative = "two.sided",
  conf.int = TRUE, conf.level = 0.95,

  simulate.p.value = FALSE, B = 2000)参数x为二维列联表形式的矩阵,或者是由因子构成的对象.y为因子构成的对象,当x为矩阵时,该值无效.
workspace为正整数,表示用于网络算法工作空间的大小.
hybrid为逻辑变量,仅用于2×2列联表,表示是否使用混合算法近似计算概率,取FALSE (默认值)表示精确计算.
control为列表,指定低水平算法的组成.
or为优势比的原假设,默认值为1,仅用于2×2列联表.
alternative为备择假设选项,取"two.sided"(默认值)表示双侧检验(不独立),取"less"表示备择假设为“<”的单侧检验(负相关),取"greater"表示备择假设为“>”的单侧检验(正相关).
conf.int为逻辑变量,表示是否计算优势比(odds ratio)的置信区间,默认值为TRUE.
conf.level为置信水平,默认值为0.95.
simulate.p.value为逻辑变量,表示是否使用Monte Carlo方法仿真计算P值,默认值为FASLE.
B为正整数,表示Monte Carlo仿真的次数,默认值为2000.
对于二维列联表,原假设“两变量无关”等价于优势比等于1.
例1.29 某医师为研究乙肝免疫球蛋白预防胎儿宫内感染HBV的效果,将33例HBsAg阳性孕妇随机分为预防注射组和对照组,结果如表1.14所示.问两组新生儿的HBV总体感染率有无差别.
《数学建模:基于R》一一1.5 列联表检验

解 有一个单元频数小于5,应该作Fisher精确概率检验.输入数据,并计算Fisher检验(程序名:exam0129.R).> x <- matrix(c(4, 5, 18, 6), nc = 2)

> fisher.test(x)

    Fisher's Exact Test for Count Data
data:  x
p-value = 0.121
alternative hypothesis: true odds ratio is not equal to 1
95 percent confidence interval:
0.03974151 1.76726409
sample estimates:
odds ratio

0.2791061P值(=0.1210)>0.05,并且优势比的置信区间包含有1,由此说明两变量是独立的,即认为两组新生儿的HBV总体感染率并无显著差异.
当用Pearson χ2检验(chisq.test()函数)对例1.29的数据作检验,会发现计算机在得到结果的同时,也给出警告,认为其计算值可能有误.
用Fisher精确检验(fisher.test()函数),对吸烟数据(例1.28)作检验得到P值(=0.002820)<0.05,拒绝原假设,即认为吸烟与患肺癌有关.由于优势比的置信区间[1.63,40.36]>1,说明优势比大于1,表示正相关,也就是说,吸烟越多,患肺癌的可能性也就越大.> X <- matrix(c(60, 3, 32, 11), nc = 2)

> fisher.test(X)

    Fisher's Exact Test for Count Data
data:  X
p-value = 0.002820
alternative hypothesis: true odds ratio is not equal to 1
95 percent confidence interval:
 1.626301 40.358904
sample estimates:
odds ratio
 6.74691