R语言帮助的使用

Python026

R语言帮助的使用,第1张

R语言帮助的使用

想要学好一门语言,灵活利用帮助也是高效学习的一种方法,R语言的帮助获取有哪些呢?

8个PDF文档

首先在RGui标签项“帮助”里面有8个文档,可以直接打开,不过是英文的,下面提到的R文档都是英文的哈哈,呵呵!

输入help.start(),点击回车键,打开网页获取帮助

如果没有反应,就把给出的网址复制下来在浏览器中打开。其实,这与右边区域帮助是一样的,直接看右面的就行了。

使用help(函数名、包名)

这里查看一下求和函数sum()的用法帮助。

对于特殊字符和保留关键字必须用引号(单双都行)括起来。

help('<')或者help('for')

当然了,如果输入错误,会有提示,学习语言时,要养成 学会看错误提示 的好习惯。

>help(package = data.table)

点击包名就会跳转到这个包的详细介绍页面。

使用?函数名,获得关于函数的解释

用?sum与上面一样的效果。对于特殊字符和保留关键字必须用引号(单双都行)括起来

?'<'或者?'for',就会有相应的帮助。

使用??函数名,获得包含该函数名的其它函数

比如??sum就会获得包含该函数名sum()的其它函数。

使用example(函数名)获取函数的案例并且自动运行。

“persp”是R语言三维图像绘制函数,执行

>example("persp")

只需根据向导按“Enter”键,会画出几个漂亮的图像

有没有觉得画的图很漂亮,R语言作为优秀的数据可视化工具,能画的图远不止这些,丰富的第三方包为R语言提供了强大的画图功能,后面会慢慢看到。

向量是 R 语言中最基本的数据类型,在 R 中没有单独的标量(例如 1 本质上是 c(1)) 。

R 中可以用 = 或者 <- 来进行赋值 , <-的快捷键是 alt + - 。

R的下标是从1开始的,和python等不同(python四从0开始的)

当然我们也可以用逻辑进行筛选,例如

负数下标表示不选这个这些下标,例如:

c() 可以合并向量,例如

向量有个比较有趣的性质,当两个向量进行操作时,如果长度不等, 长度比较短的一个会复制自己直到自己和长的一样长。

a 自动变成了 c(3,4,3,4) 然后与b相加 , 得到了下面的结果。

遇到不懂得函数,可以用help("函数")查看函数用法。

矩阵,从本质上来说就是多维的向量,我们来看一看 我们如何新建一个矩阵。

可以看到向量元素变为矩阵元素的方式是按列的,从第一列 到第二列,如果我们想按行输入元素,那么需要加入 byrow = TRUE 的参数:

与向量相似,我们可以用下标来筛选矩阵, 例如:

a[行,列]

当我们对两个矩阵相乘,我们得到的结果是 对应元素两两相乘的结果,例如:

而这不是我们想要的矩阵乘法,在 R 中我们在乘法旁边加两个 百分号来做矩阵乘法:

此外,我们可以用 t() 来求矩阵的转置 , 用 solve() 来求矩阵的逆。

数据框类似矩阵,与矩阵不同的是,数据框可以有不同的数据类型。 一般做数据分析,我们把一个类似 excel 的表格读入 R ,默认的格式 就是数据框 , 可见数据框是一个非常重要的数据结构。

一般来说我们需要分析的数据,每一行代表一个样本,每一列代表一个 变量。

下面我们用 R 内置的数据集 iris 来看一看数据框的使用。

我们用 data 函数调入了 iris 这个数据集 , 然后用 head 函数来看一看这个数据 的前几行 , 可以看到有 sepal 的长度,宽度,petal 的长度和宽度,还有一个变量 Species 来描述样本的类别。

我们可以用 summary 函数来对数据集做大致的了解。

可以直观地看到每个变量的信息,对于几个数值变量,我们可以看到最小值,中位数等等统计信息。而对于 Species 这个分类变量,我们看到的是计数信息。

筛选数据框与矩阵相似,都可以通过数字下标来获取子集,不同地是因为数据框有不同的列名,我们也可以通过列名来获取某一特定列,例如:

我们可以用 names() 函数来获取数据框的列名

并可以通过为其赋值改变列的名字。

列表是一种递归式的向量,我们可以用列表来存储不同类型的数据,比如:

列表有多种索引方式,可以用如下方式获取。

今天我们实验的对象就是一组从原始 R 进化出来的工具链 Tidyverse , 它是由 Hadley Wickham 主导开发的一系列 R 包的集合。 Tidyverse 继承了R语言进行快速统计分析的优势 , 并实现了一些新的理念 , 例如 magrittr 包中的管道操作 , 让线性嵌套的函数组合变得更加清晰易懂;可视化方面中的 ggplot ,使绘图变成搭积木式的图层叠加。

这样的小发明有的改变了分析的运作方式 , 有的改变了使用者的认知方式 , 聚在一起形成了一种新的数据分析的生态链 。具体来看 , Tidyverse 有如下核心组件:

mpg 数据集是刻画不同汽车的排放状况的一个数据集, 总过有 234 个样本 , 11 个变量 。 这 11 个变量分别是:

manufacture: 制造商

model: 车型

dispel: 汽车排放量

year: 制造年度

cyl: 排气管数量

trans: 排放类型

drv: 驱动方式

cty: 每公里耗油量(城市道路)

hwy: 每公里耗油量(高速路)

fl: 油的种类

class: 车的类型

更多数据相关信息可以通过 help(mpg) 指令获取。

在属性映射中加入 color=class 参数后 , 我们可以看到每个点的汽车对应的类型被用 不同颜色表现了出来 , 对于散点图 , 还有 size(大小) , shape(形状) 等等参数 可以用于确定点的属性。

对于条形图的y轴就是数据框中原本的数值时,必须将geom_bar()函数中stat(统计转换)参数设置为’identity’,即对原始数据集不作任何统计变换,而该参数的默认值为’count’,即观测数量。

文|程瑞林(山东大学第二医院足踝外科)

来源|(微信公众号)云中瑞麟(ID:ruilinfly)

瑞麟导读:

对于计量资料,临床医学研究中常用的统计分析方法是t检验;而对于计数资料,卡方检验是一个常用的统计分析方法。

最近看到一篇文章,里面分析了骨巨细胞瘤患者术后复发的比例,其中计数资料使用卡方检验(又称χ 2 检验),下面针对卡方检验的使用方法及其R语言实现方法进行简单介绍。

卡方检验是一种用途很广的 计数资料 的假设检验方法,由卡尔·皮尔逊提出。它属于非参数检验的范畴,主要是比较两个及两个以上样本率( 构成比)以及两个分类变量的关联性分析。其根本思想就是在于比较理论频数和实际频数的吻合程度或拟合优度问题。

它在分类资料统计推断中的应用,包括:两个率或两个构成比比较的卡方检验;多个率或多个构成比比较的卡方检验以及分类资料的相关分析等。

可以分为成组比较(不配对资料)和个别比较(配对,或同一对象两种处理的比较)两类。

通常卡方检验的应用主要为:

1、 卡方拟合优度检验

2、卡方独立性检验

我们想知道喝牛奶对感冒发病率有没有影响,以下为数据统计的四格表:

通过简单的统计我们得出喝牛奶组和不喝牛奶组的感冒率为30.94%和25.00%,两者的差别可能是抽样误差导致,也有可能是牛奶对感冒率真的有影响。

为了确定真实原因,我们先假设喝牛奶对感冒发病率是没有影响的,即喝牛奶喝感冒时独立无关的,所以我们可以得出感冒的发病率实际是(43+28)/(43+28+96+84)= 28.29%

所以,理论的四格表应该如下表所示:

即下表:

如果喝牛奶喝感冒真的是独立无关的,那么四格表里的理论值和实际值差别应该会很小。

那如何来描述这种差别呢,我们定义卡方值为

其中,A为实际值,T为理论值。

x2用于衡量实际值与理论值的差异程度(也就是卡方检验的核心思想),包含了以下两个信息:

根据卡方检验公式我们可以得出例1的卡方值为:

卡方 = (43 - 39.3231)平方 / 39.3231 + (28 - 31.6848)平方 / 31.6848 + (96 - 99.6769)平方 / 99.6769 + (84 - 80.3152)平方 / 80.3152 = 1.077

卡方值(理论值与实际值差异大小)的意义是什么呢?为此我们再引入一个概念:

上一步我们得到了卡方的值,但是如何通过卡方的值来判断喝牛奶和感冒是否真的是独立无关的?也就是说,怎么知道无关性假设是否可靠?

答案是,通过查询卡方分布的临界值表。

第一行表示显著性水平α

第一列表示自由度

这里需要用到一个 自由度 的概念,自由度等于V = (行数 - 1) * (列数 - 1),对四格表,自由度V = 1。

对V = 1,喝牛奶和感冒(95%概率)不相关的卡方分布的临界值(最大)是:3.84。即如果卡方大于3.84,则认为喝牛奶和感冒(有95%的概率)相关。

【瑞麟描述】临界值3.84的意义表示:如果卡方值>3.84,则纵列因素与横行因素不相关的的概念<0.05(即显著性水平),也即纵列因素与横行因素相关的概念>0.95。

显然1.077<3.84,没有达到卡方分布的临界值,所以喝牛奶和感冒独立不相关的假设没有被推翻。

【瑞麟】 简单说,如果我们计算出的卡方值(表示实际值与理论值的差异,越大表示实际值与理论值越不符,即越有可能纵列因素会影响横行数值)大于临界值(列因素不影响横行值的范围:0~临界值),我们就排斥原假设(H0,即纵列因素不影响横行的因素的变化),接受备择假设(H1:纵列因素对横行的因素变化有影响);反之,卡方值小于临界值,即在(纵列与横行互不影响这一假设)理论范围内,无法推翻原假设,即无统计差异。

我们想知道不吃晚饭对体重下降有没有影响,并获得以下数据:

H0:r1=r2,不吃晚饭对体重下降没有影响,即吃不吃晚饭的体重下降率相等;

H1:r1≠r2,不吃晚饭对体重下降有显著影响,即吃不吃晚饭的体重下降率不相等。α=0.05

【瑞麟:H0为纵列因素对横行因素无影响;H1为有影响】

3.计算卡方值

根据图1所示公式,计算出卡方值为5.498

在查表之前应知本题自由度。按卡方检验的自由度v=(行数-1)×(列数-1),则该题的自由度v=(2-1)(2-1)=1,查卡方界值表,找到3.84,而本题卡方=5.498即卡方>3.84,P<0.05,差异有显著统计学意义,按显著性水平α=0.05水准,拒绝H0,可以认为两组的体重下降率有明显差别。

通过实例计算,对卡方的基本公式有如下理解:若各理论数与相应实际数相差越小,卡方值越小;如两者相同,则卡方值必为零。

x2值表是数理统计根据正态分布的定义计算出来的。 是一种近似,在自由度大于1、理论数皆大于5时,这种近似很好;当自由度为1时,尤其当1<T<5,而n>40时,应用以下校正公式:

如果观察资料的T<1或n<40时,四格表资料用上述校正法也不行,可参考预防医学专业用的医学统计学教材中的精确检验法【瑞麟:Fisher检验?】直接计算概率以作判断。

1.一般认为行×列表中不宜有1/5以上格子的理论数小于5,或有小于1的理论数。当理论数太小可采取下列方法处理:①增加样本含量以增大理论数;②删去上述理论数太小的行和列;③将太小理论数所在行或列与性质相近的邻行邻列中的实际数合并,使重新计算的理论数增大。由于后两法可能会损失信息,损害样本的随机性,不同的合并方式有可能影响推断结论,故不宜作常规方法。另外,不能把不同性质的实际数合并,如研究血型时,不能把不同的血型资料合并。

2.如检验结果拒绝检验假设,只能认为各总体率或总体构成比之间总的来说有差别,但不能说明它们彼此之间都有差别,或某两者间有差别。

R语言自带卡方检测的方法,只要调用方法chisq.test(),会自行输出X-squared卡方值, df自由度, p-value概率。

判断5种品牌啤酒的爱好者有无显著差异:

P值越大,支持原假设的证据就越强,给定显著性水平α(取0.05), 当P值小于α时,就拒绝原假设。

H0:两种药物疗效相同

H1:有效率不等

为何会提示算法可能不准确呢?计算理论值:

文献1中的数据列表为

文章提及计数资料使用χ 2 检验,而数据列表中多处数据小于5,显然应该视理论值大小选择连续性修正的卡方检验或Fisher检验更合适一些。

参考文献:

1.同志超,等。四肢骨巨细胞瘤的外科治疗分析。中华解剖与临床杂志,2018,23(3)

2.snowdroptulip, 统计学——卡方检验和卡方分布 , CDSN博客,2017

3.lijinxiu123, 卡方检验及R语言实现 ,CDSN博客,2017-3-27

4.Knowlege_上下求索, 卡方检验x2检验(chi-square test) ,CSDN博客,2016-7-7

5.x2yline, 统计学第七章 卡方检验【R语言实现】 ,,2017.10.11

6.嘉儿jy 《卡方检验中非连续性校正与连续性校正的区别!》 百度知道,2016-1-19

7.薛毅、陈立萍 编著《统计建模与R软件》,清华大学出版社,2006

8.qazonly123 《求助,下面几种状况SPSS交叉表分别该使用哪一种卡方分析,是Pearson卡方,还是Fisher‘s,还是连续性校正》 ,百度知道,2016-5-11

201808282046更新