四格表与列联表数据的统计处理

卡方检验用途:

  • 推断两个或两个以上总体率或总体构成比间有无差别;
  • 推断两种属性或两个变量(指标)之间有无关联性;
  • 频数分布的拟合优度检验(检验某实际分布与理论分布的吻合情况)

卡方检验类型:

  • 普通四格表资料卡方检验
  • 配对四格表资料卡方检验
  • 行×列(R×C)表资料卡方检验
  • 行×列(R×C)列联表卡方检验

四格表卡方检验应用条件:

  • 当n≥40且所有T≥5,用普通X2检验
  • 当n≥40,但1≤T<5时, 用校正的X2检验
  • 当n<40 或 T<1时,用四格表确切概率法
  • 若p ≈ α ,改用四格表确切概率法(直接计算概率法)

一、基础介绍

1、二项分布、Poisson分布

二项分布(binomial distribution):临床试验结果时常只有相互对立的结果,比如:生或死;有效或无效;阳性或阴性等。这种资料也叫二分类资料。其阳性率用π表示,阴性率用(1- π)表示,其对应分布是二项分布

二项分布资料的假设检验: u检验或卡方检验,二者是等价的

Poisson分布:当π很小而n很大时,二项分布逼近Poisson分布,因此, Poisson分布是二项分布的特例,

Poisson分布主要应用: 单位容积、面积、时间或人群内某事件的发生数。比如:单位体积水中细菌数,单位体积空气中粉尘数,单位时间内放射性物质放射出的质点数,单位空间中某些昆虫数,一定人群中某种恶性肿瘤发生或罕见非传染性疾病的患病数或死亡数

2、卡方值的计算方法(通用公式)

例如:

**研究目的:**判断A与B两药的有效率有无差别?

表 5-1 两种药物治疗脑血管病有效率比较

分组 有效 无效 合计 有效率 %
实验组A药 73(a) 9(b) 82 89.02 %
对照组B药 52(c) 22(d) 74 70.27 %
合 计 125 31 156 80.13 %

检验假设

H0: A、 B两药的有效率无差别?
H1: A、 B两药的有效率有差别?

计算理论频数

表 5-1 两种药物治疗脑血管病有效率比较

分组 有效 无效 合计 有效率 %
实验组A药 73(65.7) 9(16.3) 82 89.02 %
对照组B药 52(59.3) 22(14.7) 74 70.27 %
合 计 125 31 156 80.13 %

3、卡方检验基本思想

从卡方值计算公式可以看出,卡方检验是检验实际分布和理论分布的吻合程度。若H0假设成立,则实际分布(A)和理论分布(T)相差不大, 卡方值应较小;若H0假设不成立,则实际分布(A)和理论分布(T)相差较大,卡方值应较大。另外卡方值的大小尚与格子数(自由度)有关,格子数越多(自由度越大),卡方值越大。可以根据卡方分布原理,由卡方值确定P值,从而作出推论。

自由度: V=(行数-1)(列数-1)

4、解题思路

  1. 判断基本数字abcd是否给出?
  2. 总数是否大于40?(大于40,可考虑用卡方检验,小于40改用Fisher确切概率法)
  3. 判断是否需要校正?(计算最小理论数,若最小理论数>5,不需要校正。否则,用校正公式)
  4. 按假设检验基本步骤进行卡方检验(基本公式或专用公式均可)

二、样本率与总体率的比较

样本率与总体率比较,判断样本与总体有无差别,是统计推断内容,因计算的是率,因而介绍一下:

p <- 0.2
n_case <- 48
n <- 152
stde <- sqrt (p *(1- p)/n)
u <- (n_case/n-p)/stde
u
pvalue <- 2*(1-pnorm(u))
pvalue

三、 两个样本率的比较

x1 <-23x2 <-13
n1 <- 80
n2 <-85
p <- (x1+x2)/(n1+n2)
std<-sqrt(p*(1-p)*(1/n1+1/n2))
u <- (x1/n1-x2/n2)/std
pvalue <- 2*(1-pnorm(u))
pvalue

四、普通四格表代码实现

1、案例1

Example13_2  <- read.table ("example13_2.csv", header=TRUE, sep=",")
attach(Example13_2)
mytable  <-  xtabs(~a + b)
library(gmodels)
CrossTable(a, b)
chisq.test(mytable)
detach (Example13_2)

2、案例2

Example13_3  <- read.table ("example13_3.csv", header=TRUE, sep=",")
attach(Example13_3)
mytable  <-  xtabs(~a + b)
library(gmodels)
CrossTable(a, b)
# CrossTable(a, b, expected=TRUE,fisher=TRUE)这样也行
chisq.test(mytable)
chisq.test(mytable,correct=False) #默认是校正卡方
detach (Example13_3)

五、配对四格表

配对资料的展示形式:

1、配对资料的几种形式

  • 同一个病例/样本用两种不同方法处理的结果
  • 同一个病例/样本用两种方法诊断或检查结果
  • 同一个病例/样品治疗前后的疗效等指标比较
  • 结成对子的两个对象分别接受不同处理的结果

2、案例

Example13_5  <- read.table ("example13_5.csv", header=TRUE, sep=",")
attach(Example13_5)
mytable  <-  xtabs(~a + b)
library(gmodels)
CrossTable(a, b)
mcnemar.test(mytable)

使用kappa值评估两种检验方法是否一致

# Kappa.test(mytable, conf.level=0.95) # wrong 需提前载入 fmsb 包
library(vcd)
K<-Kappa(mytable)
K
confint(K)
summary(K)
print(K, CI = TRUE,level=0.95)
print(K, CI = TRUE,level=0.99)
detach (Example13_5)

六、R X C 列表卡方

1、列表分类

R X C 表可以分为:双向无序、单向有序、双向有序属性相同和双向有序属性不同等4 类。

  1. 双向无序R X C 表, 表中两个分类变量皆为无序分类变量: ①若研究目的为多个样本率(或构成比) 比较,可用行×列表资料的卡方检验: ②若研究目的为分析两个分类变量之间有无关联性以及关系的密切程度,可以用行×列表资料的卡方检验,以及Pearson 列联系数分析

  2. 单向有序R X C 表有两种形式:

    ①RXC 表中的分组变量是有序的,而结局变量是无序的,此种单向有序RXC 表资料可以用行×列表资料的卡方检验进行分析

    ②RXC 表中的分组变量是无序的,而结局变量是有序的,此种单向有序RXC表资料直用秩和检验分析

  3. 双向有序属性相同R X C 表,表中的两个分类变量皆为有序且属性相同。实际上是2 X 2配对设计的扩展,此时宜用一致性检验(或称Kappa 检验)

  4. 双向有序属性不同R X C 表,表中两个分类变量皆为有序且属性不同。对于该类资料,需要分析两个有序分类变量间是否存在线性变化趋势, 可用有序分组资料线性趋势检验

2、列变量为有序变量的行均分检验(Cochran-Mantel-Haenszel)

治愈赋值为4,显效赋值为3,好转赋值为2,无效赋值为1

ABC三种药物分布别用123表示

Example13_7  <- read.table ("example13_7.csv", header=TRUE, sep=",")
attach(Example13_7)
mytable  <-  xtabs(~a + b)
library(gmodels)
CrossTable(a, b)
library(vcdExtra)
CMHtest(mytable)
detach (Example13_7)输出为
Cochran-Mantel-Haenszel Statistics for a by b AltHypothesis  Chisq Df
cor        Nonzero correlation 46.297  1
rmeans  Row mean scores differ 58.678  2 #读取这一行
cmeans  Col mean scores differ 48.838  3
general    General association 66.958  6Prob
cor     1.0160e-11
rmeans  1.8125e-13
cmeans  1.4122e-10
general 1.7167e-12

也可以用回归,等级回归模型

# 用Ordinal logistic回归模型
Example13_7  <- read.table ("example13_7.csv", header=TRUE, sep=",")
attach(Example13_7)
Example13_7$x1  <- ifelse (a==1, 1, 0)#对于ABC三种药物设置哑变量
Example13_7$x2  <- ifelse (a==2, 1, 0)
Example13_7$x3  <- ifelse (a==3, 1, 0)
library(rms)
fit1 <- lrm(b~ x1 + x2 ,  data=Example13_7, model=FALSE, x=FALSE, y=FALSE) #以药物C为参照
fit1
coefficients(fit1)
exp(coefficients(fit1))
detach (Example13_7)
#对于累积比数因变量模型,平行性假设决定了每个自变量的OR值对于前g-1 个模型是相同的。
#例如,自变量xl 的OR=8.044 ,表示使用A 药物治愈的可能性是C药物的8.044 倍;
#也表示使用A 药物显效或治愈的可能性是C药的8.044倍;
#同时也表示使用A 药物至少好转的可能性是C药的8.044 倍。

备注:假设治愈与显效相比,显效与好转相比,好转与无效相比的风险是相同的,因而会有三个回归系数

结果输出为:

fit1
Logistic Regression Modellrm(formula = b ~ x1 + x2, data = Example13_7, model = FALSE, x = FALSE, y = FALSE)Frequencies of Responses1   2   3   4 51 126  73  20 Model Likelihood      Discrimination    Rank Discrim.    Ratio Test             Indexes          Indexes    Obs           270    LR chi2      66.98      R2       0.241    C       0.686    max |deriv| 3e-07    d.f.             2      R2(2,270)0.214    Dxy     0.372    Pr(> chi2) <0.0001    R2(2,235.3)0.241    gamma   0.536    Brier    0.174    tau-a   0.249    Coef    S.E.   Wald Z Pr(>|Z|)y>=2  0.9782 0.2248   4.35 <0.0001 y>=3 -1.5521 0.2432  -6.38 <0.0001 y>=4 -3.7483 0.3375 -11.11 <0.0001 x1    2.0850 0.3088   6.75 <0.0001 x2    0.0028 0.2955   0.01 0.9926  > coefficients(fit1)y>=2         y>=3         y>=4 0.978150920 -1.552142851 -3.748324155 x1           x2 2.084976695  0.002753265
> exp(coefficients(fit1))y>=2       y>=3       y>=4         x1
2.65953400 0.21179365 0.02355719 8.04440400 x2
1.00275706

3、行列变量均为有序变量检验方法

3.1 双向有序属性不同R X C表

例13-8 为了研究晶状体混浊程度是否与年龄相关,将资料整理为表13 -6 的形式,试编写R程序,分析年龄与晶状体混浊程度的相关关系。

# 双向有序属性不同 秩相关
Example13_8  <- read.table ("example13_8.csv", header=TRUE, sep=",")
attach(Example13_8)
cor(Example13_8, method="spearman")
cor.test(a,  b, method="spearman")
detach (Example13_8)

还可进行线性趋势检验

# 双向有序属性不同 线性趋势检验
Example13_8  <- read.table ("example13_8.csv", header=TRUE, sep=",")
attach(Example13_8)
library(gmodels)
CrossTable(a, b)
mytable <-  xtabs(~a + b)
chisq.test(mytable)
fit <- lm(a~b)
summary(fit)
coefficients(fit)
confint(fit)
detach (Example13_8)

3.2 双向有序属性相同R X C表

例13-11 某学校学生的文化课成绩和体育课成绩整理如表13-7 所示,试对学生文化课和体育课成绩进行一致性检验

计算kappa值:

Example13_10  <- read.table ("example13_10.csv", header=TRUE, sep=",")
attach(Example13_10)
library(gmodels)
CrossTable(a, b)
mytable  <-  xtabs(~a + b)
mcnemar.test(mytable)#配对卡方,意义在于如优秀率与不及格率有差别
library(fmsb)
Kappa.test(mytable, conf.level=0.95)
detach (Example13_10)

4、分层行列表分析 Mantel-Haenszel 检验

例13-12 为研究心肌梗塞与近期使用避孕药之间的关系,在5所医院中采用病例-对照研究方法调查了234名心肌梗塞病人与1742 名对照者使用口服避孕药状况,资料见表13-8 。请在排除了研究医院影响后,分析使用口服避孕药与否对是否患心肌梗塞病的影响情况。

Example13_12  <- read.table ("example13_12.csv", header=TRUE, sep=",")
attach(Example13_12)
mytable  <-  xtabs(~drug + case + hos) #分层输出各家医院四格表频数
mytable
prop.table(mytable,3) #分层输出各家医院四格表百分数
addmargins(mytable) #分层输出各家医院四格表边际频数
mantelhaen.test(mytable)
detach (Example13_12)

6、线性趋势卡方检验

例13-14 为了研究晶状体混浊程度是否与年龄相关,将资料整理成表13-10 的形式,试编写趋势卡方检验的R程序,分析年龄与晶状体混浊程度的相关关系

Example13_13  <- read.table ("example13_13.csv", header=TRUE, sep=",")
attach(Example13_13)
library(gmodels)
CrossTable(a, b)
mytable  <-  xtabs(~a + b)
chisq.test(mytable)
fit  <-  lm(a~b)
summary(fit)
coefficients(fit)#回归系数
confint(fit)#回归系数95%CI
detach (Example13_13)

七、秩和检验处理四格表及列联表资料

1、等级分组资料的非参数检验

例14- 13 用某药治疗不同病情( A 型和B 型)的老年慢性支气管炎病人, 疗效见表14-10 ,试比较该药对两种病情的疗效

1为控制,2为显效,3为有效,4为治愈

example14_15  <- read.table ("example14_15.csv", header=TRUE, sep=",")
attach(example14_15)
wilcox.test(x ~ g)
detach(example14_15)

2、多个组的等级指标的非参数检验

例14-14 4 种疾病患者痰液内嗜酸性粒细胞的检查结果见表14-11。试分析4 种疾病患者痰液内嗜酸性粒细胞有无差别

# 多个组的等级指标的非参数检验
example14_16  <- read.table ("example14_16.csv", header=TRUE, sep=",")
attach(example14_16)
kruskal.test(x~ g)
library(nparcomp)
nparcomp(x ~ g, data=example14_16, alternative = "two.sided")
detach(example14_16)
cox.test(x ~ g)
detach(example14_15)

R之四格表与列联表数据的统计处理相关推荐

  1. R语言四格表、列联表秩和检验

    R语言四格表.列联表秩和检验 秩和检验方法最早是由维尔克松(Wilcoxon)提出,叫维尔克松两样本检验法.后来曼-惠特尼将其应用到两样本容量不等(n1不等于n2)的情况,因而又称为曼-惠特尼U检验. ...

  2. R语言生成频数表和列联表crosstable函数讲解

    列联表crosstable 列联表不仅可以用来做简单的描述性统计,还可以在机器学习中用来比较识别正确率,FPR,TPR等等数据,以便我们比较不同的ML模型 or 调参. 2x2列联表一般长下面这样: ...

  3. 单表千万级数据 count() 统计优化

    1. 创建一张测试表: DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `id` bigint(20) PRIMARY key not null ...

  4. R语言四格表的统计分析及假设检验

    R语言四格表与列联表的统计分析及假设检验 卡方检验是一种确定两个分类变量之间是否存在显着相关性的统计方法. 这两个变量应该来自相同的人口,他们应该是类似 是/否,男/女,红/绿等. 例如,我们可以建立 ...

  5. 列联表篇之二:四格表的分析

    转载出处:https://zhuanlan.zhihu.com/p/27312651 在列联表中,二维表是最基础的一类表,在二维表中,四格表是最基础的一类表. 四格表的基本形式在<经典比较篇之十 ...

  6. spssχ2检验_实用医学统计:配对四格表资料的χ2检验之SPSS操作篇

    上一篇文章我们分享了应用SPSS软件(SPSS18.0)快速掌握四格表资料的χ2检验操作: 本文我们开始分享应用SPSS软件(SPSS18.0)快速掌握配对四格表资料的χ2检验操作. 请看例题: 例8 ...

  7. mysql 删除表中重复数据并保留一条

    最近有个需求,给角色添加菜单权限,这是一个role_menu 表.里面存放的是角色id和菜单id,是批量给一种类型角色添加,但有可能角色人为添加过,因为数据量还是比较大的,如果先查询这个有没有添加过再 ...

  8. Python处理Excel表中单元格带有换行的数据

    Python处理Excel表中单元格带有换行的数据 文章目录 Python处理Excel表中单元格带有换行的数据 问题样式 实例问题 实例实现代码 实例结果 问题样式 在数据处理过程中常常会遇到这样一 ...

  9. 学习Python处理Excel 难度1级别 多表合并、数据透视表、拆分合并单元格并获得一维表

    #本代码要点:多表合并.数据透视表.拆分合并单元格并获得一维表 #主题:各门店合并,计算各店当月回店做服务2次+的客人数量 #EXCEL工作表:存在合并单元格 #备注: import pandas a ...

最新文章

  1. 上交大博士生:博三经历5轮审稿被拒后,如今发10篇论文成为审稿人
  2. python爬虫 - Urllib库及cookie的使用
  3. PCA原理分析和意义(一)
  4. 用Office2010做博客园客户端
  5. 1)Linux学习笔记:crontab命令
  6. Python数据结构之字节,字节数组
  7. 从零实现 Spring Boot 2.0 整合 weixin-java-mp(weixin-java-tools) 获取 openId,用于微信授权
  8. 解决 No utmpx entry. You must exec login from the lowest level shell.
  9. 软件基本功:垃圾代码的共同特征
  10. 博时基金的大数据平台建设之道
  11. java jvm理解_深入理解JVM(一)——基本原理
  12. Excel合并两列中的文本内容
  13. 无人机倾斜摄影在矿山测量测绘中有哪些应用
  14. 缺氧游戏 不给计算机加水,缺氧 泥土用完了怎么办 | 手游网游页游攻略大全
  15. HDU 5383 Yu-Gi-Oh!(费用流)
  16. 传美云商系统软件方案详解
  17. excel vba如何在不打开的情况下获取.pdf文件的打印页码数
  18. html5制作课程表app,课程表软件哪个好用些?5款便捷实用的课程表软件推荐
  19. Game boy模拟器(8):中断
  20. vue-baidu-map插件中bm-marker组件嵌套bm-info-window组件使用,在地图上生成多个点

热门文章

  1. linux命令:查看本机IP地址 curl ip.gs
  2. UTF8字符编码转换工具
  3. 1T固态硬盘Linux最优分区,1t固态硬盘如何分区才合理?
  4. 【SEO工具】批量查询百度指数(Python编写)
  5. 2021-11-21 根据身高 体重计算出bmi指数,检测自己是否属于肥胖
  6. Java ASP Post
  7. jQuery框架开发一个最简单的幻灯效果
  8. 小功率静电保护器与TVS管选型,看完醍醐灌顶
  9. Charles打开后,Pc电脑端浏览器展示空白页面,无法正常使用or浏览网页
  10. lgo怎么打开o文件_GO语言文件的创建与打开实例分析