微网站开发难度,网站推广怎么做才有效果,网站建设销售工作好么,长白山开发建设集团网站卡方检验在计数资料中的应用#xff0c;包括推断两个总体率或构成比之间有无差别、多个总体率或构成比之间有无差别、多个样本率间的多重比较、两个分类变量之间有无关联性、多维列联表的分析和频数分布拟合优度的卡方检验。选自#xff1a;周支瑞老师下面分别介绍计数资料怎… 卡方检验在计数资料中的应用包括推断两个总体率或构成比之间有无差别、多个总体率或构成比之间有无差别、多个样本率间的多重比较、两个分类变量之间有无关联性、多维列联表的分析和频数分布拟合优度的卡方检验。选自周支瑞老师下面分别介绍计数资料怎么进行卡方检验。目 录1. 四格表资料的卡方检验1.1 数据集数据1.2 向量或矩阵数据1.3 chisq.test()函数2. Fisher确切概率法3. 配对四格表资料的卡方检验3.1 bc 403.2 bc ≥ 403.3 mcnemar.test()函数4. Cochran-Mantel-Haenszel检验4.1 mantelhaen.test()函数4.2 数据集形式的数据4.3 向量或数组数据4.4 计算各层OR值4.5 Breslow-Day检验4.6 BreslowDayTest()函数4.7 WoolfTest()函数5. 计算列联系数6. 频数分布拟合优度的卡方检验1. 四格表资料的卡方检验1.1 数据集数据选用survival包的colon数据集。library(survival) #加载内置数据集的包data(colon) # 加载数据集mytable chisq.test(mytable) # 进行连续性校正chisq.test(mytable, correct FALSE) # 不进行连续性校正无论是否进行连续性校正结果都显示p值0.05接受原假设说明sex和status无关。还可以输出卡方检验摘要chisq.test(mytable)$observed # 实际频数(和mytable一样)chisq.test(mytable)$expected # 期望频数chisq.test(mytable)$residuals # Pearson 残差chisq.test(mytable)$stdres # 标准化残差1.2 向量或矩阵数据compare706,792,184,176), nr 2, dimnames list(c(male, female), c(Yes, No)));comparechisq.test(compare)注意在使用chisq.test()函数计算时要注意单元格的期望频数。如果所有单元格频数都不为零并且所有单元的期望频数≥5那么Pearson卡方检验是合理的否则会显示警告信息。如果在计算时出现警告信息表明表中单元格期望频数有5的值这可能会使卡方近似无效。如果数据不满足卡方检验的条件时应使用Fisher精确检验。1.3 chisq.test()函数chisq.test()函数可以进行卡方列联表检验和拟合优度检验。chisq.test(x, y NULL, # x是由数据构成的向量或矩阵y是数据向量(当x为矩阵时y忽略) correct TRUE, # 逻辑词默认为TRUE在计算2x2列联表的检验统计量时是否使用连续性校正 p rep(1/length(x), length(x)), # p是原假设落在小区间的理论概率默认值表示均匀分布. # P是和x长度相同的概率向量P值如果输入有负值会返回错误信息。 rescale.p FALSE, # 逻辑词为TRUE则p将缩放成和为1的向量为FALSE如果p向量和≠1则会返回错误信息 simulate.p.value FALSE, # 为TRUE则不进行连续性校正根据蒙特卡洛检验计算p值 B 2000) # B为整数在蒙特卡洛检验中使用的重复次数。对于2x2的列联表参数correct的默认值为TRUE即使用Yate连续修正目的是提高P值避免有显著差异不可靠的情况发生2. Fisher确切概率法在样本较小时(单元的期望频数5)需要用Fisher精确检验来完成独立性检验。Fisher检验开始是针对2x2四格表提出的当卡方检验的条件不满足时可以使用精确检验。fisher.test(x, y NULL, # 参数x为二维列联表形式的矩阵或者由因子构成的对象。y为因子构成的向量当x为矩阵时此值无效。 workspace 200000, # 正整数表示用于网络算法工作空间的大小 hybrid FALSE, # 逻辑词仅用于2x2列联表为FALSE时(默认值)表示精确计算概率取TRUE表示用混合算法计算概率。 hybridPars c(expect 5, percent 80, Emin 1), control list(), or 1, # 为列表指定低水平算法的组成or为优势比的原假设默认值为1仅用于2x2列联表。 alternative two.sided, # 备择假设默认值two.sided表示双侧检验(不独立)“less”表示单侧小于检验(负相关)“greater”表示单侧大于检验(正相关)。 conf.int TRUE, # 逻辑词为TRUE则给出优势比的置信区间。 conf.level 0.95, # 置信水平默认0.95 simulate.p.value FALSE, B 2000) # 逻辑词为TRUE表示用Monto Carlo方法计算P值B为正整数表示Monto Carlo重复的次数。例研究COPD与吸烟之间的关系调查了52名COPD患者和33名非COPD患者吸烟的人数。compare49,28,3,5),nr 2, byrow TRUE, dimnames list(c(smoke, Notsmoke), c(COPD, normal)))comparechisq.test(compare)$expected # 查看期望频数fisher.test(compare) # 进行fisher精确检验因为p-value0.25180.05,并且优势比的置信区间包含1故接受原假设, 认为吸烟与COPD无关。3. 配对四格表资料的卡方检验计数资料的配对设计常用于两种检验方法、培养方法、诊断方法的比较。特点是对样本中各观察单位分别用两种方法处理然后观察两种处理方法的某两分类变量的计数结果。假设检验为McNemar卡方检验检验统计量有两种(分bc ≥ 40和bc 40的情况)。该法一般用于样本含量不太大的资料。当bc 40时使用连续性校正即correctTRUE。当bc ≥ 40时不使用连续性校正即correctFALSE。3.1 bc 40例某实验室分别用乳胶凝集法和免疫荧光法对58名可疑系统性红斑狼疮患者血清中抗核抗体进行测定问这两种方法的检测结果有无差别X 11,2,12,33), nrow 2, byrow FALSE, dimnames list(免疫荧光法 c(,-),乳胶凝集法 c(,-)));X# 乳胶凝集法# 免疫荧光法 -# 11 12# - 2 33mcnemar.test(X,correctTRUE)# McNemars Chi-squared test with continuity correction# data: X# McNemars chi-squared 5.7857, df 1, p-value 0.01616结论p-value 0.01616 0.05可以认为两种方法的检测结果不同免疫荧光法的阳性检测率较高3.2 bc ≥ 40例某医院同时用A、B两种方法测定160份痰标本中的抗酸杆菌问A、B两种方法的检出率有无显著性差异X 52,20,35,53), nrow 2, byrow FALSE, dimnames list(A方法 c(,-),B方法 c(,-)));X# B方法# A方法 -# 52 35# - 20 53mcnemar.test(X,correctFALSE) # McNemars Chi-squared test# data: X# McNemars chi-squared 4.0909, df 1, p-value 0.04311结论p-value 0.04311 0.05可以认为两种方法的检测结果不同。3.3 mcnemar.test()函数使用mcnemar.test()函数进行McNemar检验。mcnemar.test(x, yNULL, #参数x为二维列联表形式的矩阵或者由因子构成的对象。y为因子构成的向量当x为矩阵时此值无效。 correctTRUE) #逻辑词默认为TRUE仅在2x2列联表下进行连续校正。4. Cochran-Mantel-Haenszel检验CMH检验可以理解为分层卡方检验CMH检验用于高维列联表的分析即在控制了某一个或几个混杂因素(分层变量)之后检验二维RxC表中行变量与列变量之间是否存在统计学关联。假设检验H0为任一层的行变量X与列变量Y均不相关 H1为至少有一层X与Y存在统计学关联。当H0成立时CMH统计量渐近卡方分布。需要注意的是当各层间行变量与列变量相关的方向不一致时CMH统计量的检验效能较低。根据行变量X和列变量Y的类型不同CMH卡方统计量包括1.相关统计量适用于双向有序分类变量 2.方差分析统计量也称行平均得分统计量适用于列变量Y为有序分类变量 3.一般关联统计量适用双向无序分类变量目的是检验X和Y是否存在关联性。4.1 mantelhaen.test()函数mantelhaen.test()函数用来进行CMH卡方检验。其原假设是两个分类变量在第三个变量的每一层中都是条件独立的。mantelhaen.test(x, y NULL, # x为数组形式的三维列联表行与列的维度至少为2最后一个维度为分层变量; # 或者x为至少有2个水平的因子y也为至少有2个水平的因子如果x为三维数组时y忽略; z NULL, # 至少有2个水平的因子表示哪一层对应x中的元素哪一层对应y的元素如果x为三维数组则z忽略; alternative c(two.sided, less, greater), # 备择假设默认为two.sided双侧检验; correct TRUE, # 逻辑词计算检验统计量时使用连续性校正; exact FALSE, # 逻辑词是否计算精确检验; conf.level 0.95) # 置信水平默认0.95注意数组或向量不允许存在缺失值xyz必须为长度相同的数字向量。4.2 数据集形式的数据选用survival包的colon数据集。xtabs()函数可以基于三个或多个分类变量生成多维列联表。mytable mantelhaen.test(mytable)结果中p-value 2.921e-08表明患者接受的治疗与结局状态在性别的每一水平下并不独立。4.3 向量或数组数据为研究心肌梗死与近期使用避孕药之间的关系采用病例对照研究方法调查了234 名心肌梗死病人与1742名对照使用口服避孕药的状况。考虑到年龄是混杂因素按照年龄分层后结果见下表。试分析排除了年龄因素的影响后心肌梗死是否与近期使用口服避孕药有关。mydata 17, 121, 47, 944, 12, 14, 158, 663), dim c(2, 2, 2), dimnames list(心肌梗死 c(病例, 对照), 近期使用口服避孕药 c(是, 否), 年龄 c(, ≥ 40岁)))mydatamantelhaen.test(mydata, correct F) # 经典的2x2xk水平 CMH 检验结果显示P0.001按a0.05的检验水准拒绝H0接受H1可认为控制了年龄的影响后心肌梗死与近期服用口服避孕药有关。4.4 计算各层OR值apply(mydata, 3, function(x) (x[1,1]*x[2,2])/(x[1,2]*x[2,1]))# # 2.821874 3.596745 4.5 Breslow-Day检验对于分层病例对照研究或队列研究资料通常应用Breslow-Day检验对各层的效应值(OR或RR)进行齐性检验。若不拒绝齐性假设(p0.05)才可依据CMH检验的结果推断出暴露因素是否与疾病相关。如果相关可进一步用Mantel-Haenszel法估计OR或RR值及其可信区间。若拒绝了齐性假设(p0.05)则提示分层变量与暴露因素间存在交互作用此时CMH检验的结果不能说明问题可进行多元logistic回归分析。4.6 BreslowDayTest()函数BreslowDayTest(x, # 2x2xk列联表 OR NA, # 要检验的OR值,默认使用Mantel-Haenszel估算值。 correct FALSE) # 为TRUE则使用Tarone调整的Breslow-Day检验library(DescTools) # 加载包BreslowDayTest(mydata) # 进行Breslow-Day检验# Breslow-Day test on Homogeneity of Odds Ratios# data: mydata# X-squared 0.23409, df 1, p-value 0.6285BreslowDayTest(mydata, correct TRUE) # Tarone校正的Breslow-Day检验# Breslow-Day Test on Homogeneity of Odds Ratios (with Tarone correction)# data: mydata# X-squared 0.23369, df 1, p-value 0.6288结果为P0.6285可认为两年龄组口服避孕药对心肌梗死的总体OR值同质用Mantel-Haenszel法估计OR值及其95%可信区间为3.09(1.93-4.93)。4.7 WoolfTest()函数除了BreslowDayTest()函数外WoolfTest()函数也可以对2x2xk列联表的同质性进行检验。WoolfTest(x) # x为2x2xk列联表最后一个维度为分层变量WoolfTest(mydata)# Woolf Test on Homogeneity of Odds Ratios (no 3-Way assoc.)# data: mydata# X-squared 0.23358, df 1, p-value 0.6289结论和BreslowDayTest检验一样。5. 计算列联系数若行x列表资料的两个分类变量都为无序分类变量进行多个样本率的比较、样本构成比的比较都可以用卡方检验也就是使用chisq.test()函数来计算。若得知两个分类变量之间有关联性需进一步分析关系的密切程度时可计算Pearson列联系数。列联系数C (Contingency Coeff) 取值为0-1之间0表示完全独立, 1表示完全相关愈接近于1关系愈密切。vcd包中的assocstats()函数可以用来计算二维列联表的phi系数、列联系数和Cramer’s V系数。例测得某地 5801 人的 ABO 血型和 MN 血型结果如下问这两种血型之间是否有关联。mytable 431, 388, 495, 137, 490, 410, 587, 179, 902, 800, 950, 32), nrow 4, byrow FALSE, dimnames list(ABO血型 c(O,A,B,AB), MN血型 c(M,N,MN)))mytablechisq.test(mytable) # 判断两分类变量有无关联性p-value 2.2e-16可以认为两种血型系统间有关联可进一步计算Pearson列联系数以分析其密切程度。library(vcd)assocstats(mytable) # 查看关联性的强弱从上面可以看出列联系数为0.188虽然有关联性但列联系数比较小虽然有统计学意义但关系不太密切。6. 频数分布拟合优度的卡方检验频数分布拟合优度(goodness-of-fit)检验还是使用chisq.test()函数。chisq.test(x, # x为向量或单行/单列矩阵参数 x 必须全部是非负整数。 p, # P是和x长度相同的概率向量P值如果输入有负值会返回错误信息。 # p中向量的和应为1p不给出则向量值全部相等。 rescale.p TRUE) # 逻辑词为TRUE则p将缩放成和为1的向量为FALSE,如果和≠1则会返回错误信息。x 10,25,15) chisq.test(x) # chisq.test(as.table(x))等效x 82,47,20,18,22) # x为向量p 45,25,25,18,15) # p为概率chisq.test(x, p p) # 返回错误信息,概率总和必须为1chisq.test(x, p p, rescale.p TRUE) # 运行正常相关文章R语言统计与绘图ROC曲线上32种截断值的计算 2020-06-18 R语言统计与绘图ROC曲线的统计计算 2020-06-17 R语言统计与绘图绘制不同坐标轴置信区间的森林图 2020-06-05 R语言统计与绘图方差分析 2020-06-01 R语言统计与绘图pROC包绘制ROC曲线 2020-05-25