首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >R语言系列第四期:③R语言表格数据率的比较

R语言系列第四期:③R语言表格数据率的比较

作者头像
微点
修改于 2019-05-13 02:26:17
修改于 2019-05-13 02:26:17
3.1K0
举报
文章被收录于专栏:sci666sci666

连续型数据的组间比较往往可以采用t检验/wilcoxon检验或者ANOVA方差分析/KW检验来完成。但是对于分类资料来说,这些方法就是行不通的了。详情点击:R语言系列第四期:①R语言单样本双样本差异性检验R语言系列第四期:②R语言多组样本方差分析与KW检验

在这个部分我们会介绍一系列用于分析表格数据的函数,我们会着重看prop.test(),binom.test() , chisq.test() 以及 fisher.test()函数。

A

▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼

与前面连续型资料分析的顺序一样,我们先来介绍一下单样本率的检验

▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲

我们考虑这样一个例子(Altman,1991),这里215名病人中39名被观测到患有哮喘,然后有人对“随机病人”患有哮喘的概率是0.15这个假设做检验。我们可以用函数prop.test()来做检验:

> prop.test(39,215,0.15)

1-sample proportions test with continuity correction

data:  39 out of 215, null probability 0.15

X-squared = 1.425, df = 1, p-value = 0.2326

alternative hypothesis: true p is not equal to 0.15

95 percent confidence interval:

 0.1335937 0.2408799

sample estimates:

        p

0.1813953

#Tips:函数prop.test()中的三个参数分别是阳性观测数,总数,以及参考概率值。最后一个参数如果没有设定的话,那么默认是0.5。我们可以从当前的结果中得到的结论是无差别(P>0.05),而且在95%置信区间里我们可以看出范围包含了0.15,所以也可认为无差别。

这里的0.15是人为构造出来的。但是如果我们有一组这样的数据,往往更希望得到这个概率参数的置信区间,这里输出结果的结尾已经给我们算好了。

除此之外,还可以利用函数binom.test()在二项分布下做检验。这是你能得到精确的检验概率,所以一般比上一个prop.test()更被人喜欢。不过prop.test()除了单比例检验之外还能做其他的事情。为了得到这个p值,我们先计算出x取每一个可能的点的概率,然后再将观测到的小于等于x的概率都加在一起。

> binom.test(39,215,0.15)

Exact binomial test

data:  39 and 215

number of successes = 39, number of trials = 215, p-value = 0.2135

alternative hypothesis: true probability of success is not equal to 0.15

95 percent confidence interval:

0.1322842 0.2395223

sample estimates:

probability of success

0.1813953

#Tips:在检验水准为0.05水平下的置信区间其实是从0.025水平下的双边检验中得到的。就是说两变分别是0.025和0.975的水平。这两个计算方式的结果是一致的。

B

▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼

两个独立的比例比较

▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲

前面提到的函数prop.test()也能够用于比较两个或多个比例。这种情况下它的参数就应该是两个向量,前一个向量里存放各组阳性观测数,后一个向量里是每组总数。

我们还是拿Altman的例子来演示(可以理解成两位医生手术成功率比较):

> success<-c(9,4)

> total<-c(12,13)

> prop.test(success,total)

2-sample test for equality of proportions with continuity correction

data:  success out of total

X-squared = 3.2793, df = 1, p-value = 0.07016

alternative hypothesis: two.sided

95 percent confidence interval:

0.01151032 0.87310506

sample estimates:

prop 1    prop 2

0.7500000 0.3076923

#Tips:可以看出来R会将数据自动识别成两样本率的差异检验,求的是阳性结果的概率差异。然后我们得到的P值是0.07016,这个值与0.05很近,得到的是无差异的阴性结果。但是95%的置信区间为[0.011531032,0.87310506]这个范围没有包含0,这个置信区间是比例之差的置信区间,它的结论是不可以认为两个医生的手术成功率是一样的阳性结果,二者的差异是由置信区间和假设检验使用的是不同的近似方法导致的。

我们还可以用Fisher精确概率法检验。这个检验在给定行和列的边际值的情况下计算2*2表格的条件分布。简单来讲Fisher确切概率法的结果是在这个四格表里出现当前数据情况或者更有利于阳性结果的概率之和,它会计算每一种情况的概率,然后再累加起来。

相关的函数就是fisher.test(),他要求输入的数据是矩阵形式的,如下:

> a<-matrix(c(9,4,3,9),nrow=2)

> a

[,1] [,2]

[1,]    9    3

[2,]    4    9

> fisher.test(a)

Fisher’s Exact Test for Count Data

data:  a

p-value = 0.04718

alternative hypothesis: true odds ratio is not equal to 1

95 percent confidence interval:

0.9006803 57.2549701

sample estimates:

odds ratio

6.180528

#Tips:这里的置信区间是比值比的结果,也就是计算(p1/(1-p1))/(p2/(1-p2))的区间,是一个衡量Fisher检验中相关程度的指标,得到的结果可以跟1比较。不过这里的结果同样和假设检验的结果相矛盾,原因同上。

和fisher.test()一样,在chisq.test()中的标准χ2检验需要矩阵类型的数据源。而作为一个2*2表格来说,这个检验与prop.test()的结果是完全一致的。

> chisq.test(a)

Pearson’s Chi-squared test with Yates’ continuity correction

data:  a

X-squared = 4.3672, df = 1, p-value = 0.03664

C

▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼

趋势检验,多组率

▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲

有的时候你想要比较多于两个部分,而这些部分又是有序的分类,所以你想找到一个随着分组序号递增或者递减的趋势。

这个部分我们使用Altman的数据,这个例子记录了一组女性是否使用剖腹产生育孩子,以及对应产妇鞋子码数的数据,数据在R语言ISwR数据包里。

> library(ISwR)

> caesar.shoe

<4   4   4.5  5  5.5  6+

Yes  5  7   6  7   8  10

No  17 28  36 41  46  140

#Tips:这里呢,有一个基于正态近似的检验可以使用。这个检验计算每组的观测比例和所有组的比例之间的加权平方和的偏差。检验统计量近似服从自由度为k-1的χ2分布。

为了使用prop.test(),我们需要将数据转化成两个分别放有阳性数据和总数的变量里:

> caesar.shoe.yes<-caesar.shoe[‘Yes’,]

> caesar.shoe.total<-margin.table(caesar.shoe,2)

> caesar.shoe.yes

<4   4 4.5   5 5.5  6+

5   7   6   7   8  10

> caesar.shoe.total

<4   4 4.5   5 5.5  6+

22  35  42  48  54 150

之后我们就可以检验了:

> prop.test(caesar.shoe.yes,caesar.shoe.total)

6-sample test for equality of proportions without continuity correction

data:  caesar.shoe.yes out of caesar.shoe.total

X-squared = 9.2874, df = 5, p-value = 0.09814

alternative hypothesis: two.sided

sample estimates:

prop 1  prop 2  prop 3  prop 4  prop 5  prop 6

0.22727273 0.20000000 0.14285714 0.14583333 0.14814815 0.06666667

Warning message:

In prop.test(caesar.shoe.yes, caesar.shoe.total) :

Chi-squared近似算法有可能不准

#Tips:得到结果是大于0.05的,结果并不显著,但是从细节上来说,剖腹产这一组的数值都相对较小,而在R语言的警告里,给我们提示,有一些格子的理论频数小于5,算法结果可能不准确。

同时可以使用函数prop.tend.test()函数来检测不同部分的趋势。它有3个参数:x,n和score。前两个与prop.test()中一致,而最后一个是赋予每组的分数,默认是简单的1,2,…,k,这些数据使得我们前后每组之间是有顺序的。这个检验的本质是一个用分数对不同部分进行的加权线性回归,我们对当前的数据进行检验,就成为了一个自由度为1的χ2检验。

> prop.trend.test(caesar.shoe.yes,caesar.shoe.total)

Chi-squared Test for Trend in Proportions

data:  caesar.shoe.yes out of caesar.shoe.total ,

using scores: 1 2 3 4 5 6

X-squared = 8.0237, df = 1, p-value = 0.004617

所以,如果我们假设鞋子码数是线性的,那么我们可以看到一个显著的趋势。

D

▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼

r × c表格

▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲

为了分析行列都多于两个分类的表格数据,可以使用函数chisq.test()和 fisher.test(),但是后者在每一格数字比较大而且超出两行或两列时的计算量非常大。我们使用我们之前在分类数据描述的章节中采用的例子,那个婚姻状况与咖啡因消费情况的数据:

> caff.marital<-matrix(c(652,1537,598,242,36,46,38,21,218,327,106,67),

+ nrow=3,byrow=T)

> colnames(caff.marital)<-c(“0″,”1-150″,”151-300″,”>300″)

> rownames(caff.marital)<-c(“Married”,”Divorced”,”Single”)

> caff.marital

0 1-150 151-300 >300

Married  652  1537     598  242

Divorced  36    46      38   21

Single   218   327     106   67

> chisq.test(caff.marital)

Pearson’s Chi-squared test

data:  caff.marital

X-squared = 51.656, df = 6, p-value = 2.187e-09

检验结果显示高度显著。当然,我们也可以查看chisq.test()函数的一些额外的返回值。比如每个格子的期望值:

> chisq.test(caff.marital)$expected

0    1-150   151-300   >300

Married  705.83179  1488.01183  578.06533  257.09105

Divorced  32.85648   69.26698    26.90895   11.96759

Single   167.31173   352.72119   137.02572   60.94136

然后如果你有兴趣可以自己手动计算卡方值统计量,按照χ2检验的计算公式,我们可以用(A-T)2/T来表示(A实际频数,T理论频数):

> chisq.test(caff.marital)$expected->T

> chisq.test(caff.marital)$observed->A

> (A-T)^2/T

0    1-150   151-300      >300

Married   4.1055981  1.612783  0.6874502  0.8858331

Divorced  0.3007537  7.815444  4.5713926  6.8171090

Single   15.3563704  1.875645  7.0249243  0.6023355

#Tips:我们把每个格子里的数值加起来就是总的统计量大小,而每个格子里的数值代表的是各自的贡献量。

也可以对原始数据使用chisq.test(),这里我们使用之前的juul数据作为例子:

> attach(juul)

> chisq.test(tanner,sex)

Pearson’s Chi-squared test

data:  tanner and sex

X-squared = 28.867, df = 4, p-value = 8.318e-06

> chisq.test(tanner,sex)$observed

sex

tanner   1   2

1  291 224

2  55  48

3  34  38

4  41  40

5  124 204

#Tips:数据会被汇总成为一个表格里。然后通过χ2检验来计算差异。

关于表格数据的统计分析就介绍到这里了,我们下期再见。

参考资料: 1.《R语言统计入门(第二版)》 人民邮电出版社  Peter Dalgaard著 2.《R语言初学者指南》 人民邮电出版社  Brian Dennis著 3.Vicky的小笔记本《blooming for you》 by   Vicky

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
R语言卡方检验方法总结
因为最近又有一批临床数据要进行统计,所以趁机把卡方检验的R语言实现再重新梳理一遍。
医学和生信笔记
2022/11/15
3.8K0
R语言卡方检验方法总结
R语言入门之独立性检验
对于2维的频率表,我们可以使用R语言的卡方检验函数chisq.test()来进行独立性检验,用以判断行变量和列变量之间是否相关。其实独立性检验本身就是用来判断变量之间相关性的方法,如果两个变量彼此独立,那么两者统计上就是不相关的。
生信与临床
2020/08/06
2.8K0
R语言入门之独立性检验
R语言系列第三期:③R语言表格及其图形展示
分类数据通常以表格的形式来描述。这一部分就来为大家介绍如何用你的数据创建一个表格及计算相关的频率。
微点
2019/05/11
4.1K0
「R」频数检验
你有分类数据然后想要检验是否这些数据值的频数分布是否与预期不符,或者是否组间的频数分布有(显著)差异。
王诗翔呀
2020/07/06
1.4K0
「R」基本统计分析
因为书中列举的方法和知识点比较多,没必要全都掌握,会一种,其他的了解即可。我就简要地整理一下我觉得重要的吧。
王诗翔呀
2020/07/06
1.8K0
数学建模学习笔记:离散变量联列表检验
P值>0.05并且优势比的置信区间包含1,由此说明两变量是独立的,即认为总体感染率并无差异。
用户7010445
2020/03/03
7490
【数据分析 R语言实战】学习笔记 第七章 假设检验及R实现(下)
程序包BDSA中的函数z.test()可以快速地实现方差己知时两总体均值差的假设检验。
Ai学习的老章
2019/04/10
2.1K0
【数据分析 R语言实战】学习笔记 第七章 假设检验及R实现(下)
「R」统计检验函数汇总
通常先用 lm() 函数对数据建立线性模型,再用 anova() 函数提取方差分析的信息更方便。
王诗翔呀
2020/07/03
2.4K0
R语言系列第四期:①R语言单样本双样本差异性检验
之前详细介绍了利用R语言进行统计描述,详情点击:R语言系列第三期:③R语言表格及其图形展示、R语言系列第三期:①R语言单组汇总及图形展示、R语言系列第三期:②R语言多组汇总及图形展示
微点
2019/05/11
2.2K0
R语言系列第四期:②R语言多组样本方差分析与KW检验
R语言系列四的第二个部分是对多组连续性数据的处理,分组往往是三组或者三组以上,当然两组数据也可以利用方差分析,但是两组数据还是建议使用t检验。同样多组数据的比较也分为参数法和非参数法,包括这个部分介绍的重点参数法方差分析,以及非参数方法kruskal—Wallis检验。
百味科研芝士
2019/05/23
7.5K0
R in action读书笔记(6)-第七章:基本统计分析(中)
table(var1, var2, …, varN) 使用 N 个类别型变量(因子)创建一个 N 维列联表
Ai学习的老章
2019/04/10
1.7K0
R语言系列第四期:④R语言简单相关与回归
lm(formula = short.velocity ~ blood.glucose)
百味科研芝士
2019/05/23
1.6K0
【学习】【R语言读书会】《R实战》读书笔记(第七章)
读书会是一种在于拓展视野、宏观思维、知识交流、提升生活的活动。PPV课R语言读书会以“学习、分享、进步”为宗旨,通过成员协作完成R语言专业书籍的精读和分享,达到学习和研究R语言的目的。读书会由辅导老师或者读书会成员推荐书籍,经过讨论确定要读的书,每个月读一本书且要精读,大家一起分享。 第七章 基本统计 本章概要 1 描述统计 2 频次和相依表 3 相关系数和协方差 4 t-检验 5 非参数统计 本章所介绍内容概括如下。 一旦数据合理组织后,首先,基于数据可视化探索数据,接下来,我们要探索某个变量的分布
小莹莹
2018/04/19
7780
【学习】【R语言读书会】《R实战》读书笔记(第七章)
R语言统计相关函数总结
R 语言在统计分析方面起了很大的作用,并且其开开放性更是促进了大量分析R包的出现。今天我们就不一一去列举相关的R包,而是总结一下R语言自带的统计学函数。 一、统计学数据的生成函数: norm 正态分布 f F分布 unif 均匀分布 cauchy 柯西分布 binom 二项分布 geom 几何分布 diag 对角阵 二、基础的运算函数 abs 绝对值 sqrt 平方根 exp e^x次方 log 自然对数 log2,log10 其他对数 sin,cos,tan 三角函数 sinh,cosh,tanh 双曲
一粒沙
2019/07/31
1.1K0
R语言多项逻辑回归-因变量是无序多分类
因变量是无序多分类资料(>2)时,可使用多分类逻辑回归(multinomial logistic regression)。
医学和生信笔记
2022/11/15
1.1K0
R语言多项逻辑回归-因变量是无序多分类
R语言系列五:②R语言与逻辑回归建立
在上一篇文章里,我们给大家介绍了之前系列里提及的线性回归的扩展部分,详情点击:R语言系列五:①R语言与多元回归
百味科研芝士
2019/05/23
1.6K0
(数据科学学习手札19)R中基本统计分析技巧总结
在获取数据,并且完成数据的清洗之后,首要的事就是对整个数据集进行探索性的研究,这个过程中会利用到各种描述性统计量和推断性统计量来初探变量间和变量内部的基本关系,本篇笔者便基于R,对一些常用的数据探索方法进行总结: 1.描述性统计量部分 1.1 计算描述性统计量的常规方法 summary() summary()函数提供了最小值、最大值、四分位数和数值型变量的均值,以及因子向量和逻辑型向量的频数统计: > #挂载鸢尾花数据 > data(iris) > #计算鸢尾花各变量的基本描述统计量 > summary(
Feffery
2018/04/17
2.6K0
R中的常用的检验方法
如,年长的男性与年轻的男性失业率概率是否相同,此时,年龄与失业率是有关的,所以是非独立的。 非独立样本的t检验假定组间差异呈正态分布。 调用格式:其中y1,y2为非独立的数值向量
生信编程日常
2020/11/26
1.1K0
R中的常用的检验方法
R语言各种假设检验实例整理(常用)
一、正态分布参数检验 例1. 某种原件的寿命X(以小时计)服从正态分布N(μ, σ)其中μ, σ2均未知。现测得16只元件的寿命如下:                  159 280 101 212 224 379 179 264                   222 362 168 250 149 260 485 170     问是否有理由认为元件的平均寿命大于255小时? 解:按题意,需检验                      H0: μ ≤ 225 H1: μ > 225    
用户1680321
2018/04/27
4.6K0
R语言各种假设检验实例整理(常用)
R语言倾向性评分:回归和分层
倾向性评分有4种应用,前面介绍了倾向性评分匹配及matchIt和cobalt包的使用:R语言倾向性评分:匹配
医学和生信笔记
2023/02/14
1.5K0
R语言倾向性评分:回归和分层
相关推荐
R语言卡方检验方法总结
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档