r语言初学者指南 pdf谁会,学的比较好的出来

初学R语言需要用什么书比较好~怎么学R语言_百度知道
初学R语言需要用什么书比较好~怎么学R语言
提问者采纳
照着文档和例子搞定,如果想学得快一些的话,而且要有地学的一些知识背景,可以看看比如《数据挖掘与R语言》.如果是空间分析相关的,到时候搜索R的package.!如果需要可视化的话,但是可以大概看看是咋回事,订阅一下.,强烈不推荐学习R本身的作图系统,不是特别难,如果是做数据分析和可视化、肖凯,这个才是作图的神器啊,统计之都以及谢益辉、刘思喆等人的博客(自行Google以及到上面的网站找链接),强烈推荐统计之都,推荐《Applied Spatial Data Analysis with R》,中文版翻译的太次了,熟悉各种算法和流程,实在是太不友好了.,推荐《ggplot2,RStudio是个很棒的IDE、R-bloggers,你可以从《R语言实战》开始出发吧,基本的统计学知识要懂。其他还有《R语言实例》《R语言核心技术手册》也都是很好的书.。
掌握了上面的,不过我觉得这几本书没上面的那几本好,就可以深入一些了。数据挖掘机器学习之类的。
最后,尽量不要看,不然很多东西会掌握的比较慢..,最好还是看看专门的相关书籍。 总之.还是用ggplot2吧,这个如果可以的话看英文版、《机器学习——实用案例解析》:数据分析与图形艺术》。
掌握基本语法和操作,功能很强大,用起来很爽,推荐国内的已经翻译的比如《R语言实战》《R语言编程艺术》首先R是一种专业性很强的统计语言..,会很有帮助,这个过程中最好结合一些小例子来做一些分析的东西
提问者评价
太给力了,你的回答完美地解决了我的问题,非常感谢!
其他类似问题
为您推荐:
r语言的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁自学R语言 有什么注意的细节或好的习惯_百度知道
自学R语言 有什么注意的细节或好的习惯
提问者采纳
推荐统计之都。R是一种专业性很强的统计语言、肖凯,会很有帮助,基本的统计学知识要懂,不然很多东西会掌握的比较慢,订阅一下。掌握基本语法和操作,推荐国内的已经翻译的比如《R语言实战》《R语言编程艺术》、刘思喆等人的博客(自行Google以及到上面的网站找链接)、R-bloggers,统计之都以及谢益辉?建议使用 Rstudio 作为开发环境,在windows下还是Linux下使用首先是IDE吧
其他类似问题
为您推荐:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁& 大数据工具比较:R语言和Spark谁更胜一筹?
大数据工具比较:R语言和Spark谁更胜一筹?
时间:  来源:数据挖掘与数据分析  阅读次数:852  小编:小庚  我要分享:
本文有两重目的,一是在性能方面快速对比下R语言和Spark,二是想向大家介绍下Spark的机器学习库。
由于R语言本身是单线程的,所以可能从性能方面对比Spark和R并不是很明智的做法。即使这种比较不是很理想,但是对于那些曾经遇到过这些问题的人,下文中的一些数字一定会让你很感兴趣。
36大数据专稿,原文作者:Vivek Murugesan本文由36大数据翻译组-冷逸翻译,任何不标明译者和出处以及本文链接 的均为侵权。
你是否曾把一个机器学习的问题丢到R里运行,然后等上好几个小时?而仅仅是因为没有可行的替代方式,你只能耐心地等。所以是时候去看看Spark的机器学习了,它包含R语言大部分的功能,并且在数据转换和性能上优于R语言。
曾经我尝试过利用不同的机器学习技术――R语言和Spark的机器学习,去解决同一个特定的问题。为了增加可比性,我甚至让它们运行在同样的硬件环境和操作系统上。并且,在Spark中运行单机模式,不带任何集群的配置。
在我们讨论具体细节之前,关于Revolution R 有个简单的说明。作为R语言的企业版,Revolution R试图弥补R语言单线程的缺陷。但它只能运行在像Revolution Analytics这样的专有软件上,所以可能不是理想的长期方案。如果想获得微软Revolution Analytics软件的扩展,又可能会让事情变得更为复杂,比方说牵扯到许可证的问题。
因此,社区支持的开源工具,像是Spark,可能成为比R语言企业版更好的选择。
数据集和问题
分析采用的是Kaggle网站 [译者注:Kaggle是一个数据分析的竞赛平台]上的数字识别器的数据集,其中包含灰度的手写数字的图片,从0到9。
每张图片高28px,宽28px,大小为784px。每个像素都包含关于像素点明暗的值,值越高代表像素点越暗。像素值是0到255之间的整数,包括0和255。整张图片包含第一列在内共有785列数据,称为“标记”,即用户手写的数字。
关注IT新闻资讯,了解最新的IT动态,扫描&&二维码&&
好特网,阅读的好地方!
去年,单手杰斯一度成为Mata职业生涯的一座标杆,今年,Mata又一次创造了历史,在一次训练…
继5月11日上调国内汽柴油价格之后,今天晚上12点,国内成品油将再次迎来上调,而这将是今…
好特网精选
大数据魔镜:大数据可视化分析工具。
系统:windows All
大小:176.15 MB
大家都在看什么
网友在1小时点赞了
网友在2小时点赞了
网友在3小时点赞了
网友在3小时点赞了
网友在3小时点赞了
大小:52.46 MB
大小:30.95 MB
大小:433.5 KB
大小:11.33 MB
大小:2.06 MB
大小:36.03 MB
大小:30.43 MB
大小:41.5 MB
大小:11.75 MB
大小:7.07 MB
大小:80.5 MB
大小:137.9 MB
大小:46.97 MB
大小:127.4 MB
大小:90.9 MBR语言安装和运行1.R语言程序安装
R语言是一种专门用于统计学数据分析的编程语言,是深受使用者喜欢的工具。它组合了SAS和MATLAB所有功能,和PERL一样免费。因而统计工作者为提高工作效率没有理由不学会使用R语言。
R语言是一种统计学应用程序。学会使用这种程序,首先要下载和安装R语言程序。这一过程相当简单,先用浏览器打开Google网页,键入R download,第一个搜索结果就是R语言的下载页面。
然后,点击需要选定的网页进行程序下载和安装等。这种下载和安装与一般软件的下载和安装毫无区别,十分简便,按照相关提示进行即可,在此不做详细介绍。2.R语言程序运行
在下载和安装完R语言程序后,如何书写R语言的脚本程序和运用R语言,成为使用者面临的迫切解决的问题。
书写R语言的脚本程序有三步:
1. 打开R文件编辑器;
2. 输入R语句;
3. 将所需运行的语句选蓝,点击运行按钮。
运用R语言步骤也比较简单。下面我们以33+44=77为例,介绍一下R语言的运用步骤。
第一步,打开R语言程序,将鼠标指到“文件”下,此时将会出现一个下拉菜单,里面有“新建程序脚本”一栏,点击此栏,就打开了一个被称作“未命名”的R程序编辑器。具体操作如上图。
第二步,在上面打开的编辑器中,我们在第一行键入x&-33,第二行键入y&-44,第三行键入z&-x+y,第四行键入z。如右图所示。其中,“&-”是“放进去”的意思,“x&-33”的意思是把33这个数值放入x变量中,“y&-44”的意思是把44这个数值放入y变量中,“z&-x+y”的意思是把x和y相加所得的和放入z变量中,单独键入“z”的意思是让R编辑器输出z的结果,即77。
第三步,将键入电脑的四行命令全部用鼠标选蓝。如下面的截图所显示:选定这四行命令作为运行语句后,我们接下来点击方形的运行按钮,如图所示:此后,在背景中的R
console窗口就会执行这些语句,很快会得到执行结果,即77. 下面的截图是R console窗口的样子和执行的结果:第二章
R语言功能运用
R语言在统计学中运用非常广泛,可用来进行单样品检测数据分析、双样品检测数据分析、配对测试数据分析、多样品比较数据分析、组合对比数据分析、线性回归比较数据分析、单样品总体检验数据分析、双样品总体检验数据分析、配对样品总体比较数据分析、多样品总体比较数据分析、多样品双层次总体比较数据分析。R语言这12种功能组合了SAS和MATLAB所有功能,是一种功能非常强大的运用程序。我们在学习R语言时,需要熟练掌握这11种功能的运用。
1.进行单样品检验
单样品检验是统计学在生活中最常见的运用之一。利用R语言进行单样品检验,不仅效率高效,数据精确,还让原本复杂的统计学运用变得简单明了。
下面以一个美国人买鸡蛋的事例演示R语言程序如何将统计学运用简单明了。
有一个美国人叫约翰,是超市采购员。他每天都会开车去乡里收购新鲜鸡蛋,保证城里超市的鸡蛋供应正常。
在城里超市里,销售鸡蛋分大小:大的比较值钱,小的会卖得比较便宜。他们的标准是,重量在64g左右的鸡蛋被成为大的鸡蛋。
当约翰到达农场时,农场主告诉他,有一批型号比较大的鸡蛋出售。这对约翰来说,是一个好消息,大的鸡蛋更受消费者欢迎,但同时他面临着一项任务,即必须对这批鸡蛋进行单品检验。采购小的鸡蛋时,混入了大鸡蛋,对他有利,因而约翰采购小鸡蛋时从不检验,但采购大鸡蛋则不同,如果混入了接受程度之外的小鸡蛋,将会较大地影响超市的利润。
约翰采购的这批鸡蛋数量比较大,不可能一个一个地挑选,不可能一个一个地称。因为鸡蛋非常容易被打破,而且数量很多。如果他逐一小心地称量所有鸡蛋的重量,他可能永远无法完成这份工作。
为了保证鸡蛋的质量,同时又高效,约翰决定采取统计学知识,进行当样品检验。于是,约翰随机的在这一批鸡蛋中抽取了30个作为样本,来估计这批鸡蛋的平均重量。当然,他不是通过手工计算了完成这一工作,而是利用电脑,利用R语言程序来完成的。
约翰拿出笔记本电脑,打开R的编程界面。点击文件菜单,选择“新建脚本程序”选项。画面如图:
随后,电脑屏幕出现如下页面:
打开记事本软件,约翰将30个鸡蛋的重量一一输进去,然后把这个未令名的文件保存为一个文本文件(Text File),叫做egg.txt。此时,电脑的页面如图所示:
将30个鸡蛋的重量存储于egg.txt后,约翰开始R语言正式进行单样品检验。
第一步是将这些数据读取到R语言的编程环境中。R语言读取数据文件的命令叫“scan”。从下面scan的用法当中我们可以看到所需的输入只是数据文件的所在文件夹的路径。有一点需要注意,不同级别的路径是由“/”分隔的。
下面语句的意思是,把存在于文件夹中的egg.txt文件读入R系统,命名为egg。egg = scan("G:/R Writings/1 one sample t-test/egg.txt")
第二个语句可以生成一个叫做qqplot的图表。关键是看图表上的数据点分布是否趋于一条直线。如果这些数据点的分布趋于一条直线,这个数据就很有可能是正态分布的。
qqnorm(egg)
### output not shown
这个语句是在上面的图表中画一条参考直线。
qqline(egg)
### output not shown
这个语句是生成数据分布图表,基本上是用来画抽样数据的钟形曲线的。
plot(density(egg))
### output not shown
Shapiro是用来检验正态分布的。我们将在下面的叙述中介绍更多关于正态分布的细节。
shapiro.test(egg)
这个语句是进行t.test的语句,具体讲是单样品t.test。因为约翰只抽取了一个样品,在这个样品中有30个数据,他要将这30个数据的平均值与农场主所说的64g的平均值作比较。
t.test(egg, mu=64, alternative="two.sided")
让我们把这所有的语句复制粘贴到R的编程系统当中。如下图所示:
运行R语句,要先将要运行的语句选择,然后点击“运行”按钮。依次如下图:
下面是第一、第二行语句的运行结果。由图可见,数据点基本上是直线型分布的,所以正态分布是比较可以接受。
运行第三个语句,结果只是加了一条直线。
运行第四句的结果是数据几率分布图。
第五句是shapiro检验的结果。结果中显示,p-value = 0.4455,表明数据是正态分布的,可以接受。如下图所示:
最后一句是单样品t.test的结果。这个检验结果说明两点:第一,样品的平均重量是63.629g,略小于64g的标准;第二,p-value=0.4901,因为p-value比较高,没有足够的证据来证明这整批鸡蛋重量的平均值与64g的标准不同。所以即使这样品的平均值略小于64g的标准,误差仍是可以接受的。
约翰利用R语言对鸡蛋进行单品检验后,最终得出结论,认定这批鸡蛋的误差在可接受范围内,产品是合格的,符合大号鸡蛋的标准。
几点关于p-value的解释:
1.有人说p-value数学模型成立的几率。在这个例子中,所用数据模型是正态分布,正态分布的区间是负无穷到正无穷。回到鸡蛋例子上来讲,就等于说在这个世界上存在着无穷重量的鸡蛋,但这是根本不可能出现的。所以,数学模型在现实中不能够成立。
2.P-value只是一个证据,可以证明相同与不同。在这个例子中,p-value很高,所以没足够证据证明鸡蛋的平均重量与64g不同。因此我们接受鸡蛋重量是64g左右的结论。如果p-value非常低,比方说小于0.05,则存在一定证据证明鸡蛋的平均重量与64g不同。如果所测的平均重量真的小于64g,加上小于0.05的p-value,我们可以得出结论,这批鸡蛋的平均重量明显小于64g,而且有足够证据来证明。2.进行单样品检验2
与单样品检测类似的,R语言还可以进行当样品测试。下面以法式小面包为例,再次讲一下R语言是如何进行单样品检验。
法国一个叫路易斯的面包师制作了一种非常香甜的法式小面包。这种小面包非常受顾客欢迎。路易斯决定将面包做得大一点,卖得稍微贵一些。不过,顾客不接受这点。路易斯只好继续制作小面包,但手工制作小面包在重量上很不好把握,有时会大一些,有时候会小一些。做大了,按照小面包的价格卖,他没利润,做小了,又影响销售。路易斯困扰了一段时间,最终决定购买一部面包制作机器来帮助他解决这个问题。
由机器来制作面包,面包大小都一致。这解决了法式小面包大小的问题。但路易斯却面临着机器调试问题。因为生产商设计了调试功能,生产面包的体积、重量和大小最终由机器使用者决定。
路易斯将每个面包定在50g,因而在使用机器前,需要进行调试。于是,他把配方和材料放入机器,让机器生产出了第一批面包。随后,他随机挑选了30个面包,称量了各自的重量,并那些数据记录在一个叫bread.txt的文档中,存在电脑里。这个数据只有1列,30行,每行是一个面包的重量。具体如下图所示:
将这些数据做好后,路易斯决定R语言来进行单样品测试。他打开R语言的运行环境,将所需要R语句键入编程环境中。他输入的R语句如下:
bread = scan("H:/R Writings/1 one sample t-test/bread.txt")
qqnorm(bread)
### output not shown
qqline(bread)
### output not shown
plot(density(bread))
### output not shown
shapiro.test(bread)
t.test(bread, mu=50, alternative="two.sided")
第一条语句是存储的数据文件读取入R语言环境当中,双引号中的内容为数据文件的文件路径。
第二条语句是生成qqplot的图表。
第三条语句是在qqplot上加一条直线作参考用。
第四条语句是生成正态分布的钟形曲线。第五条语句是shapiro测试正态分布。
最后一条是单样品t.test检测语句。
要运行以上语句,需要用鼠标选蓝相应的语句,并且点击“运行”按钮。运行结果分别如下:
图三是shapiro正态分布检测的结果。P-value为0.3671,p-value高于0.05,数据没有足够的证据来证明非正态分布。
接下来是图四:
图四是单样品t.test检测的结果。这个结果不难看出,这30个面包样品的平均重量是55.49067g,相对于50g的标准来讲,相差很多。P-value的值是3.601e-11,几乎是0,绝对小于0.05。这些数据有足够证据说明面包的重量根本不是50g,这批面包不合格。
路易斯进行这次单样品测试后,发现那些法式小面包不合格,便又进行了几次调试,做了几次单样品测试,最终成功地将单个法式小面包的重量定于50g。而他之所以成功达到预期目标,正是运用了R语言程序的结果。3.进行双样品检验
R语言的第三种功能就是进行双样品检验。这种功能的运用能使较为复杂的比较变得简单起来。
张英杰是东风实验小学的校长。有一天,他同学何鸿雁来看望他。两人很长时间没见面,一起边吃饭边聊家常。聊着聊着,张校长聊到了东风实验小学里二年级两位语文老师争抢优秀教师头衔的事。
两位老师都教得不错,有人说这个老师教得好,有人说那个老师教得好,从来就没有人能对这两个老师的水平做非常客观的比较。因此这次评优秀教师奖,两位老师争得不可开交,都志在必得。张英杰也左右为难,不知道该支持谁好,因为评任何一位老师,拿不出足以说服另一方的理由,都会导致矛盾。
何鸿雁是学统计学专业的。听了这件事后,他向张英杰建议,直接对这两位老师所教授的学生的平均成绩进行比较,通过数据证明两位老师教学水平谁高谁低。
何鸿雁又说,如果我们用一个班级的学生进行一种考试,再用另一个班的学生用同样的考卷进行考试。从这两个班学生的成绩中,我们可以计算这两个班的平均成绩。从数学意义上来讲,这两个平均成绩只可能是相等或者是不相等。但统计学更多的考虑到这两个平均成绩是否相似。如果这两个平均成绩的差距比较小,则比较相似。如果平均成绩之间的差距比较大,则不相似。这样通过运用统计学知识,两个老师的教学水平就比较出来了。
张英杰觉得有道理,便让两位老师所带的A班和B班学生进行了一次相同试卷的语文考试,并将每个学生的分数记录下来,交给何鸿雁作分析。何鸿雁使用了R语音对A班和B班学生的分数做了数据分析。
打开R语音程序后,何鸿雁直接把数据写入R语言程序中没有存储为任何文本数据文件。我们可以看到,语句中a指A班学生的成绩,有38人,所有成绩都用逗号分隔开。b指B班学生的成绩,有35人,所有成绩由逗号分隔。数据输入完毕,鼠标选择a和b语句成蓝色,点击R语言的运行按钮,数据就被读入编程环境中了。
何鸿雁输入R语言程序中的数据如下:
a = c(87,86,91,92,91,
93,91,91,90,90,
89,90,91,91,90,
91,94,89,88,89,
89,91,89,89,90,
90,86,88,93,88,
94,91,93,88,87,
b = c(98,93,93,93,95,
95,94,97,93,94,
96,95,97,96,97,
97,95,95,96,97,
95,96,96,94,95,
94,96,98,93,95,
98,97,93,96,94)
随后的一个语句是进行相似方差测试。因为两个班级的成绩都可以用来计算方差,A班可以有A班的方差,B班有B班的方差。进行双样品检验的前提是,这两个班的方差一定要足够相似。如果这两个班的方差不相似,我们就需要用其他的比较方法来代替双样品检验。何鸿雁输入的语句为:var.test(a,b)对方差相似性进行检验。随后,电脑显示图为:
从方差相似性的检验中,我们可以看到p-value是0.1442,即p-value大于0.05,数据中没足够证据证明方差不相似。两个班的方差是相似的,所以var.equal使用的是True输入。最后的输入叫做paired,而在这里paired输入是False。何鸿雁便输入的语句:t.test(a,b, var.equal=TRUE, paired=FALSE)比较两个班的平均分数。随后,电脑显示如下:
经过R语言进行双样品检验,结果是a班平均成绩为90.05263,b班平均成绩是95.31429。p-value小于2.2e-16,也就是接近于0,一定是0.05的。这足够说明两个班的成绩显著的不相似。两位语文老师教学水平的高低立即显现出来,即b班的成绩高于a班的成绩。
张英杰根据统计分析的数据,给两位争评优秀教师的语文老师做了评判,让他们都对最终评判的结果心服口服。R语言的运用成功地给他解决了一个难题。4.进行配对测试
自从上次何鸿雁帮助张英杰校长解决了优秀教师之争,张校长对统计学产生了兴趣。因而在工作中遇到了难题时,他便会想到用统计学来分析。
有一位一年级数学老师称,他有一套简单易学的口算诀,如果一年级学生学会了这种口算诀,口算成绩能短暂时期显著提高。张校长决定测试一下那位老师所说口算诀是否如所说那样有效,便将这件事告诉了何鸿雁。
何鸿雁回答说,这可以利用统计学的R语言程序进行配对测试。在学习那种口算诀前,学生自身会具有一定速算能力。在学习那种口算诀后,学生的口算能力有可能提高,也有可能下降,也可能没变化。我们可以用学生学习口算诀前的成绩减去学习后的成绩。如果所得到的差为负值,则说明学习口算诀前的成绩低于学习后的成绩,即该学生因学习口算诀提高了速算水平。相反,如果差为正值,则说明该学生速算水平降低了。而如果差为0,则说明该学生速算水平原地踏步走。然后,通过p-value为成绩变化的显著性提供证据。如果p-value小于0.05,就存在着显著的成绩变化。如果p-value大于0.05,则成绩变化不明显。
张英杰觉得有道理,回校随机组织了30个一年级学生进行了测验。第一天,他对30个学生加法口算速度进行了测验。50道加减法题目,用五分钟时间来完成,回答正确的题数作为学生的口算成绩。他将学生的速算成绩记录在案。第二天,他请那位数学老师给这30个学生教口算诀。等学生学完口算诀后,张英杰又用同样难度的50道算术题对那30个学生进行了口算的测试,同样将学生答对的题数作为口算成绩。
张英杰向何鸿雁学会了运用R语言后,就亲自将所记录的两组数据通过R语言程序,进行一下配对测试。
张英杰在R语言程序中输入了如下语句:
a = c(43,43,42,41,45,
43,43,44,42,41,
44,46,43,45,47,
45,43,42,42,45,
45,40,46,45,39,
41,42,43,43,43)
b = c(43,43,42,42,46,
43,43,44,42,41,
44,47,43,46,47,
44,44,43,42,45,
45,41,47,45,39,
42,42,44,43,44)
与双样品检验相似,a成绩指30个学生学习口算诀前的口算成绩,b成绩指30个学生学习口算诀后的口算成绩。学生之前和之后成绩存在一一对应关系,所以学生在两列成绩中的顺序是不可以打乱的。
随后,张英杰进行了配对测试,输入了以下语句:
t.test(a,b, paired=TRUE)
与双样品测试一样,都是使用t.test()语句。paired=TRUE是因为这是个配对测试。R语言程序运行后,电脑显示如图所示:
R语言配对测试的结果出来了,成绩变化的平均值是负0.3333333。这一结果说明,在学习口算诀后,每个学生都可以有一个三分之一道题的提高。然后看p-value。分析得出的P-value值是0.002316,小于0.05,证明这三分之一道题的提高是显著的,不是随机产生的。整个配对测试的结果说明,那位数学老师所倡导的口算诀是有效果的,是值得推广的。5.进行多样品比较
自从张校长对于两位老师的教学能力进行科学比较后,他决定运用R语言对全校老师进行类似的比较,测评他们的教学水平。这样来,就不能够使用双样品来进行检验。因为每一个老师都负责一个班级,每个班级是一个样品,如果有多于两个老师的话,就要在多于两个样品之间进行比较。当然样品的数量可以是随机的,例如三个班级三个样品,四个班级四个样品。
对多样品进行比较,统计学中叫做多样品比较,英文称作anova。如果多样品比较的结果小于0.05,则证明这些样品显著不相似。反而言之,比较的结果大于0.05,则证明这些样品相似,近乎没区别。
当然,R语言程序中多样品比较功能主要目的不是用来测评各位老师的教学水平,而是用在采购比较复杂产品时,对产品进行科学分析和比较上。
某企业要采购进一批导热性好的材料。结果,有三家供应商向他们推荐导热材料,三家产品从外观和价格方面都相似,难以让人做出决策。为了确保采购导热性最好的材料,主管领导将检测材料的任务交给了一个工程师。
工程师是材料鉴别和比较方面的行家。他接到任务,便将三种材料依次命名为a,b和c,然后通过实验进行检测,最后通过R语言程序,对检测的结果进行分析。
他将三种铁合金抽拉成为长度为1m,宽度为1cm的铁条。三种铁条具有相同的尺寸,外观看起来一模一样。然后,他把铁条的一端放入加热器当中加热,另一端安置了温度测量仪器测量铁条的温度。随后,他细心观察,记录下铁条没加热一端的温度升到100摄氏度所需时间。其中,a种材料,他实验了6次,b种材料,他实验了7次,c种材料,他实验了4次,并记下了每次的数据,将数据保存于data.txt文本文件中。电脑显示如图所示:
上图中有两列数据,第一列首字母为t,即铁拼音的首字母;第二列首字母为m,即秒拼音的首字母。三种材料依次按照a、b、c排列,而各种材料各次实验所需时间不尽相等,按照相应实验的顺序排列。
工程师输入数据分析使用的语句:
data=read.table("H:/R Writings/4 one way anova/data.txt",header=T)
这条语句是将存储于文件夹当中的数据读入编程系统。双引号中是数据存储路径(斜杠一定要用反斜杠)。Header的输入是T,因为在数据的第一行有m和t的表头,需要提示R语言进行不同输入。
接下来输入的语句是:
aov = aov(m~t,data=data)
#do the analysis of variance
这条语句是多样品检验的执行语句,使用的数据是data数据。在data数据中,材料种类由t列来定义,而我们需要比较时间,所以用m~t来进行。
进一步输入命令:
summary(aov)
#show the summary table
随后电脑显示如下图:
summary语句是输出多样品检验的结果。在这里可以看到关键的p-value。p-value是0.002998,也就是说,小于0.05,数据存在着足够的证据证明这三种铁条的导热平均时间不相似。
接下来的一步,工程师又输入了以下语句:
print(model.tables(aov,"means"),digits=3)
#report the means and the number of subjects/cell
电脑显示如下图:
print语句输出的是三种样品导热时间的平均值。print语句输出的结果,a材料测试6次,平均时间为33.2秒;b材料测试了7次,平均时间为27.1秒;c材料测试了4次,平均时间为18.8秒。这三种材料经过多样品比较,不难看出c材料的导热时间最短,导热性最佳。
工程师将多样品比较的结果告诉主管领导后,主管领导最终下决心采购c材料。
6.进行组合对比分析
R语言还可以用来进行更为复杂的组合对比分析。具体操作还是以张英杰学校的事为例。张校长用统计学方法证明了那位数学老师的教学方法有效后,另外一位数学老师提出了另外一种速算法,而且提出来要与前一个老师的速算法进行比较。
这次比较更复杂更全面。他们将学生练习时间分为早上、中午和下午。第一位老师的方法叫方法a;第二个老师的方法叫方法b。早上练习时间用x来代替,中午练习时间用y来代替,下午练习时间用z来代替。这样,他们速算法比较就有六种:使用方法a在早上练习(ax),使用方法a在中午练习(ay),使用方法a在下午练习(az),以及使用方法b在早上练习(bx),使用方法b在中午练习(by),使用方法b在下午练习(bz)。
他们随机抽取了60个学生。因为有6种学习经历,每一种学习经历中,随机分配了10个学生来体验。一周以后,这60个学生使用5分钟50道加减法题目进行了成绩评估。这些学生的成绩按照实验分组记录如下:
在上面数据中,第一列代表的是方法,第二列代表的是三种练习时间,第三列是学生测试中答对的题数,第四列是六个分组。
张英杰将这些数据存储到叫zuhe.txt的文件中。然后运用R语言,逐一输入代码,进行组合对比分析。
zuhe &- read.table("H:/R Writings/5 two way anova/zuhe.txt",header=T)
这语句指将成绩数据文件读入编程环境,称其为zuhe。
anova(lm(chengji~ fangfa * shijian,zuhe))
这一语句使用anova分析方法和练习时间对成绩的影响。
使用这两种语句后,电脑里有如下显示:
从电脑显示图中,我们不难看到有三种p-value。第一个p-value值为0.14120,对应教学方法的效果。这个p-value大于0.05,数据中没足够证据来证明两种教学方法对成绩的影响不同。结论是这两种教学方法的结果相似。第二个p-value值为9.398e-09,几乎为零,就是说小于0.05,相对应练习时间,说明数据中存在足够证据来证明不同时间对成绩的影响不同。第三个p-value值为0.04422,相对应方法和练习时间的相互作用。因为这个p-value小于0.05,数据中存在证据证明教学方法和练习时间的相互作用对成绩的影响显著。两种教学方法,三种练习时间,一共是六种组合。不同的教学方法与不同的练习时间组合,就会产生不同结果。因而张英杰必须对这六种组合进行对比分析。他相继输入了三个语句:
aov = aov(chengji~zu,data=zuhe)
summary(aov)
print(model.tables(aov,"means"),digits=3)
R语言程序分析的结果显示如下图:
在上面图示里,p-value对应组合。P-value值为5.096e-08,p-value小于0.05,说明数据中存在足够证据来证明不同组合产生不同的成绩结果。在分析结果最后两行,我们看到了这六种组合极其相应的平均成绩。方法b与早晨练习组合,也就是bx组合,产生了最佳口算平均成绩41.8。然而,方法b与下午练习组合,也就是bz,产生了最低口算平均成绩26.0。结论是使用方法b在早晨进行练习取得的学习效果最佳。
张英杰借助R语言程序进行组合对比分析后,决定采取方法b,因为方法b在早上和中午的学习效果均超过方法a在早上和中午的学习效果。7.进行线性回归比较
一部电影由成千上万张独立胶片组成,每张胶片代表着一个静止的图像。如果胶片被连续播放,每秒播放24张以上,观众看到图像就不是静止的,而是连续的。为什么会这样呢?视觉残留。即静止图像在视觉中有残留现象,所有视觉残留组成了一种连续的画面。
有人提出,用视觉残留来影响人的潜意识。他们在一部电影中插入许多潜在图像,试图用这些潜在图像所代表的信息来控制观众的行为。
为了验证这种操控潜意识理论,研究人员设计了一种实验来研究电影院里的心理学。他们选择了一部电影,在这部电影中每隔47张胶片,将原本第48个图像删除,然后插入一张爆米花图像。也就是说,每两秒钟在观众眼前播放一次爆米花图像。因为整个电影的长度没被增加或缩短,而且胶片播放速度非常快,观众意识不到所播放爆米花图像。
但观众意识不到并不等于它对观众不产生影响,每张爆米花图片都残留在观众潜意识里。一部大约一个半小时长的电影,在看完这部电影的观众成千上万次爆米花印象。研究者想通过这种方法来分析爆米花图像的播放,是否会影响到电影院中爆米花的销售量。如果这种电影产生了影响,我们就会预期到爆米花销售的增加。如果这样的电影没有影响,爆米花的销售量会基本不变。
当然,要进行比较就需要在没插入爆米花的电影和插入了爆米花的电影之间进行比较。于是,研究人员选择了两家独立电影院,第家电影院播放被插入了爆米花图像的电影,持续两周时间,记录14天影院中爆米花的销售量,单位是元。另外一家电影院播放了两周没插入爆米花图像的电影,同样记录影院中爆米花的销量。
问题是,两家电影院爆米花的销售量不可能进行直接比较。原因在于,第二家影院的观众流量总要多于第一家影院。观众多的话,爆米花的销售量就会增加。也就是说,必须要将两家影院观众人数放到相同位置上,才能够比较他们爆米花的销售量。这种比较分析技巧,是对两个线性回归的比较。在统计学中,被称作ancova。
接下来,我们介绍具体数据结构。
从上图中,我们不难看出,文件名叫popcorn.txt,用记事本就可以编辑。数据有三列,第一列表示电影院,a代表第一家电影院,b代表第二家电影院。数据有28行,一星期7天,一共播放了两周,所以a有14天数据,b同样也有14天数据。第二列表示电影院每天的观众人数。稍加观察,我们不难发现,b的观众流量总体高于a;a和b两家电影院里,星期五到星期日的观众人数要高于其他三天。第三列代表着爆米花在每天的销量。
将各种数据搞清楚后,接下来是运用R语言程序一步步进行分析比较。我们先输入将popcorn数据读入编程环境中的代码:
popcorn&-read.table("G:\\R Writings\\6 ancova\\popcorn.txt")
在双引号中,必须要输入数据所在路径,路径的分隔符,也就是前斜杠,在这里用双前斜杠来代替。这句代码的结果生成了popcorn数据结构。随后,我们将输入代码:
names(popcorn)&-c('site','visit','sales'); popcorn
这句代码包含所给数据三列的命名。第一列数据称作site,代表两家电影院。第二列数据称作visit,指观众人数。第三列数据称作sales,指是销售量。
接下来,我们又输入,把数据三列的名称加在数据上:
attach(popcorn)
其后,我们再输入:coplot(sales~visit|site)。结果,电脑出现了如图所示:
从视觉上来比较这两家电影院的popcorn销量,b的销量要高于影院a的销量。截图下半部分是一个坐标图表,横向坐标的数轴代表电影院观众的数量,纵向坐标的数轴代表爆米花的销量。左侧坐标图表显示a十四天观众流量与爆米花销量间的关系。不难看出,爆米花销量随着观众的增加而增加。右侧坐标图表代表了b观众数量与爆米花销量的关系。同样在b中,爆米花的销量也随着观众流量的增加而增加。总体来讲,b的销量要高于a的。
再进一步输入以下代码:plot(sales~visit,pch=as.numeric(site)),获得了如下图所示的结果。
上面截图是将之前的两张坐标图表合二为一。
将两张表合二为一后,我们再进一步输入代码,对其进行比较分析。
model1&-lm(sales~ site+ visit + site:visit)
model2&-lm(sales~ site+ visit)
summary(model1)
summary(model2)
结果,R语言进行一番运算后,显示了如下结果:
在上图中,R语言同时应用了两个不同的数学模型,即model1和model2。
Summary(model1)给出了model1的分析结果:siteb:visit
0.53500,互相作用的p-value是0.53500,p-value大于0.05,数据没证据来证明影院和观众人数的互相作用存在。也就是说,在接下来的model2中,可不考虑这种互相作用因素。
model2,是ancova数学模型。这个分析只考虑两个变量,即影院和观众人数对爆米花销量的影响。从model2的分析结果看,关于电影院因素的p-value是0.671,大于0.05,数据不存在任何证据证明两家影院爆米花销售的数量有所不同。所以我们可以得出结论,即便是在这家所影院播放两种不同电影,这两部电影对影院中爆米花的销售量不产生显著的影响。8.进行单样品总体检验
前面我们讲过运用R语言单样品检测的运用。运用R语言进行单样品检测只需要考虑一个变量,但在更多情况下,样品中会有一系列变量需要被测量,需要被考虑。需要考虑某种产品多个变量的检测,在统计学里称为单样品的总体检验。从总体上看待多个变量。
R语言单样品的总体检验功能有什么实际用途呢?实际用途很广泛,譬如统计分析池塘的鱼苗就是一例。
在一个鱼塘里,饲养一批鱼苗。科学养殖方法要求,饲养者必须要严格监控鱼苗的生长发育状况。有人会认为,这很简单,用鱼苗的体重来衡量鱼苗的生长发育状况不就解决了。他们提出,从鱼苗中抽取些样品,测量它们的体重,然后用平均体重与参考值进行比较,就可知道鱼苗是否达准。但问题是,鱼苗进食与否对它的体重影响很大。鱼苗进食后,体重明显比没进食时重,这并不能说明进食了的鱼苗比没进食的鱼苗生长发育好。
因此对鱼苗的生长发育最科学的监控,不是对鱼苗的体重进行监控,而是对鱼苗的长度、背鳍的长度、尾鳍的宽度、左鱼鳍的长度和右鱼鳍的长度五个方面进行测量和监控。这种监控方法就是提取随机抽取的样品鱼苗五个方面的信息数据,然后通过R语言运行,最终根据结论判断。
下面的截图是收集的样品鱼苗的五个方面的资料:
在上面的图表中,每行的数据代表一条随机抽取的鱼苗,数据有五列,分代表身长、鳍长、尾宽、左鳍长和右鳍长。每一行是对一个鱼苗测量的记录,每一行的数据被称作一个向量,这组数据共有24个向量。数据有五列,每列代表一个被测量的指标,也就是一个变量。每个变量在数学中被称为维度,这组数据中存在5个维度。在统计学中,我们使用每行都是对一个对象的记录,即一个向量;每列是对一个变量的记录,即一个维度。
进行单样品比较需要有参考值,对于鱼苗的测量,我们的参考值如下:
左鳍长0.8cm
右鳍长0.8cm
第一步的分析使用单样品检测方法,对每个测量的变量进行逐个检测。
先将鱼苗样品身长的平均值直接与7.2cm这个参考值进行比较。检测结果如下:
从上图中,我们可以看到,随机抽样的鱼苗的身长平均值是7.151667cm,低于参考值7.2cm。p-value是0.8345,也大于0.05,数据没足够证据来证明身长的平均值和参考值不一样。我们可以认定身长的平均值与参考值非常相似。
然后,将鱼苗样品鳍长的平均值直接与3.5cm这个参考值进行比较。检测结果如下所示:
从上图中,我们可以看到,随机抽样的鱼苗的背鳍长平均值为3.46125cm,低于参考值,但p-value是0.7356,p-value大于0.05,所以数据没足够证据来证明背鳍平均长度与参考值不相似。我们可以认定,背鳍的平均长度与参考值相似。
接下来,将鱼苗样品尾宽的平均值直接与1.3cm这个参考值进行比较。检测结果如下所示:
从上图中,我们可以看到,随机抽样的鱼苗的尾宽的平均值为1.258333cm,低于参考值,但p-value的数值为0.2518,p-value大于0.05,数据没足够证据证明尾鳍平均宽度与参考值不相似。我们可以认定,尾鳍的平均宽度与参考值相似。
接着要做的,将鱼苗样品左鳍长的平均值直接与0.8cm这个参考值进行比较。检测结果如下所示:
从上图中,我们可以看到,随机抽样的鱼苗的左鳍长的平均值为0.6925cm,低于参考值,但p-value的数值为0.7294,数据没足够证据证明左鳍的平均长度与参考值不相似。我们可以认定,左鳍的平均长度与参考值相似。
将鱼苗样品右鳍长的平均值直接与0.8cm这个参考值进行比较。检测结果如下所示:
从上图中,我们可以看到,随机抽样的鱼苗的右鳍长的平均值为0.6825cm,低于参考值,但p-value数值为0.3898,数据没足够证据证明右鳍的平均长度与参考值不相似。我们可以认定,右鳍的平均长度与参考值相似。
在上面一系列单变量检测中,我们没找到证据证明对鱼苗的测量与参考值不相同。在下面统计分析中,我们将所有测量的变量归纳成为一个总体指标,然后进行对参考值比较。
做到这点,需要有一种叫做ICSNP的R文件包来支持。
我们将先介绍如何安装这个文件包。
第一步,在打开R语言页面的情况下,在“程序包”菜单中点击“安装程序包…”。电脑显示页面如图所示:
第二步,选择程序包所在的数据库,这里作为例子,使用USA(MD)进行加载。
第三步,选取我们所需要的ICSNP程序包,点击确定。电脑页面显示如下所示:
程序包便开始安装了。
在使用程序包前,必须将其加载入编程环境之中。在“程序包”的菜单当中,点击“加载程序包…”。电脑显示页面如下所示:
在这里选择所需要加载的程序包。
加载了ICSNP程序包后,运行HotellingsT2命令。fish指24条鱼苗的测量结果。Y = NULL指单样品检验,mu后面所跟是五个测量项目的参考值。Test=”f”在这里是要求用F比值进行分析。电脑页面显示如下:
分析结果显示p-value值为1.657e-06,几乎为零,小于0.05。所以说,将五种测量指标归纳为一个总指标,然后进行分析,数据有足够证据来证明抽样的鱼苗测量结果与参考值不相似。在前面我们已看到,五种测量的平均值全部小于参考值。最后结论是,鱼苗的生长状况没达到所需要标准,而且我们有足够证据来证明此结论。
9.进行双样品总体比较
对一个样品,我们不仅需要对其进行单一指标衡量,有时还需要对其进行多个指标衡量。对于这样多指标的样品进行比较,我们必须将这些单独指标综合成为一个单一指标,然后进行比较。这个综合指标是所有单一指标的总和,这样的比较叫做总体比较。
如前面所列例子所示,对鱼苗衡量的指标有五个,鱼苗的身长、背鳍长度、鱼尾宽度、左鳍长度和右鳍长度。这五个指标可以从总体上与参考值进行检测。这是单样品总体比较。但如果有两个鱼塘的鱼苗参与比较呢?则需要进行双样品总体比较。
在进行这种双样品总体比较时,第一塘鱼苗的数据就使用前一例中所测量数据;第二塘鱼苗,我们同样随机抽取了24条鱼苗,然后测量它们的五项生长发育指标。将第一个数据保存为fish.txt,第二个数据保存为fish2.txt,然后通过R语言程序进行分析比较,看两塘鱼苗的生长发育状况是否相同。
进行双样品总体比较,我们仍将使用ICSNP的r程序包。在运行程序之前,需要加载这个程序包。
点击程序包下拉菜单,选择“加载程序包”,可以看到以下的窗口,选择ICSNP进行加载。
然后运行以下代码对数据进行加载和分析。
fish1 &- read.table("H:/R Writings/7 one sample t square/fish.txt",header=F)
fish2 &- read.table("H:\\R Writings\\8 independent 2 sample t square\\fish2.txt",header=F)
第一句代码用fish.txt的路径将其读入r语言环境中,生成了一个叫做fish1的数据项目。第二句代码使用fish2.txt的路径将其读入R语言环境中,生成了叫做fish2的数据项目。路径的分隔符可是反斜杠,也可是两个正斜杠,两种用法相同。
接下来,我们将两个数据项目进行总体比较。因为已加载了ICSNP程序包,我们可使用HotllingsT2命令。在这个命令中,需要输入fish1和fish2数据项目。具体操作如下:
#needs to load ICSNP package.
HotellingsT2(fish1, fish2, test = "f")
完成这一操作后,电脑页面将会呈现如下图显示:
从最终进行比较得出的结果看,p-value是0.9661,也就是说p-value大于0.05,这两个数据项目不存在任何证据证明这两塘鱼苗的总体发育指标不同。也就是说,这两塘鱼苗的总体发育相似。
10进行配对样品总体比较
在超市里,有一家卖盒饭的小店。有一天,老板打出一张广告牌,上面写着“本店出售的盒饭可以增加人的骨密度”。
这是老板的一种销售手段,目的是想通过这样的广告词来提高盒饭销量。很多人质疑他广告词的真实性。很明显,吃盒饭不太可能影响人的骨密度。但是不相信这句广告词的人无法证明其中的谬误。这家饭店的老板也没办法证明他声称的盒饭功效的真确性。
有一天,一位统计学家来这家超市闲逛,看到了这句广告词。他决定用统计学知识对这句广告词的真实性进行检测。
统计学家提出了方案,决定从人群中随机抽取24人作为样品——这些人有男有女,不同年龄段的都有。在抽取样品时,不让任何的因素,如性别的因素、年龄的因素,来偏差抽样的随机性。
统计学家要求这24个人每天食用这家饭馆出售的盒饭,持续一年时间。在实验开始时,他要求对样品测量6处人体的骨密度,并将之记录下来。一年后,他要求再次测量样品同样6个部位的骨密度,同样记录下来。
统计学家拿到两组数据后,两次测量的骨密度结果进行比较,即进行配对样品总体比较。
所谓“配对样品”,是因为在实验之前对样品中的对象进行了一次测量,在实验之后又对样品中的对象进行了一次测量。这个样品中对象之前的测量结果只能和它之后的测量结果进行比较,这样数据配起对来叫做“配对样品”。在这个骨密度例子中,一共测量了6处骨密度,这6处的数据将被总结为一个总体指标,然后对它进行检测。所以这实验设计被称作“配对样品总体比较”。
统计学家将实验开始时所测量得到的骨密度数据存在bones1.txt中。这个数据有24行,代表24个实验对象,数据有6列,代表6处骨密度的测量值。类似的,他又将一年之后所测量得到的骨密度数据存在bones2.txt中。其中24行仍代表24个实验对象,而且对象们的排列次序与bones1中相同。这样在比较中,就不会将一个数据与另外一个人进行比较。Bones2.txt的文本文件也有6列,这6列代表的骨密度测量的部位与bones1.txt相同。
接下来,统计学家就运用R语言是读取这两个数据文件,进行配对和生成数据分析结果。他输入了如下两个语句:
bones1 &- read.table("H:\\R Writings\\9 paired t square\\bones1.txt",header=F)
bones2 &- read.table("H:\\R Writings\\9 paired t square\\bones2.txt",header=F)
这两个R语句用来读取之前的两个数据文件,并且在R的程序环境中生成了两个数据项目,被称作bones1和bones2。read.table语句是用来直接读取文本文件的。在这个语句中需要写明文本文件所处的路径。因为数据文件中存在的只是测量得到的数据,在数据的第一行没有表头,所以header的输入是F。
随后,统计学家又输入了如下命令:
diff&-bones2-bones1
这个命令是将bones1和bones2进行配对,也就是将bones2减去bones1,所得结果就是两个数据之间的区别,代表这个区别的数据项目叫diff。如果diff与参考值0显著不同,我们就可以得出结论:实验过程对实验对象的骨密度有了显著影响。
再下来,统计学家又输入了两个命令:
#needs to load ICSNP package.
HotellingsT2(diff, Y = NULL, mu = c(0,0,0,0,0,0), test = "f")
后一个语句是使用diff数据项目来和0的参考值进行比较。因为diff数据代表的是实验前后的区别,如果这个区别和0非常相似,就是说实验前后所测量的结果几乎没区别。反而言之,这个区别与0显著不同,就是说实验前后的骨密度结果明显不一样。
使用hotellingsT2语句需要加载ICSNP程序包,加载过程请参考之前的介绍。
在hotellingsT2语句中,需要输入的信息是diff数据项目,Y=NULL是因为只需要diff这一个数据项目,mu的输入是要表明使用六个零的参考值与六处骨密度区别进行比较,test=”f”的意思是使用f的比值的分析方式。
将所有的代码用鼠标选成蓝色,然后点击运行按钮
下面是运行结果。
上图可看到R语言成功地运行了所有语句,使用配对方法产生了实验之前和实验之后的测量区别,容纳后将区别与0进行比较。在输出结果中,p-value是0.3616,很明显大于0.05,这说明一年前与一年后的测量结果并没区别。换句话说,数据不存在足够证据证明一年前测量的骨密度和一年后测量的骨密度不同。这个老板的广告词是不真实的。
11进行多样品总体比较
前面我们讲了两个鱼塘的鱼苗进行总体比较,会引发一个疑问,三个或三个以上鱼塘的鱼苗总体比较,能不能运用R语言程序来完成呢?可以,但不是运用R语言的双样品总体比较功能,而是运用R语言的多样品总体比较功能。
下面用三个鱼塘鱼苗总体比较生育情况介绍一下R语言的多样品总体比较功能。
在每个鱼塘随机抽取24条鱼苗,作为3个样本代表3个鱼塘的鱼苗。在前面双样品总体比较的事例中,已经测量得到了两个鱼塘一共48条鱼苗的数据,再在新增加鱼塘里随机取24个鱼苗做样品,同样测量鱼苗的身长,背鳍长度,尾鳍宽度,左鳍长度和右鳍长度,并按照相应顺序记录下来。然后将所有数据存储于fish3.txt中。fish3.txt有6列数据:第一列数据代表鱼塘的信息,其中a代表第一个鱼塘,b代表第二个鱼塘,c代表第三个鱼塘。剩下的5列,代表测量得到的5个鱼苗发育的指标。
因为我们只需要分析鱼塘之间的区别,不需要考虑其他因素。鱼塘只代表一个层次的因素,所以这里的比较是一个层次的比较。在分析过程中,5个测量得到的指标会被总结为一个总体指标,然后再三个鱼塘之间进行比较。
接下来,我们输入如下命令:
fish&-read.table("H:\\R Writings\\10 one way manova\\fish3.txt")
names(fish)&-c('g','y1','y2','y3','y4','y5');
attach(fish)
这三条R命令是将fish3.txt读入R语言环境中,生成一个叫做fish的数据项目。然后,使用names命令将数据中6列信息进行命名。鱼塘信息用g来代表,从y1到y5分表代表鱼苗的身长,背鳍长度,尾鳍宽度,左鳍的长度和右鳍的长度。Attach命令使数据文件更加容易被使用。
紧接着,我们再输入如下命令:
# 1×3 Factorial MANOVA with 5 Dependent Variables.
Y &- cbind(y1,y2,y3,y4,y5)
fit &- manova(Y ~ g)
summary(fit, test="Wilks")
这三条语句是进行多样品总体比较的语句。进行多样品总体比较,使用命令叫manova。在manova命令中,Y代表5列测量得到的鱼苗生长发育指标,g代表鱼塘的信息。使用manova命令后,生成了一个叫fit的分析结果项目。然后使用summary命令,将fit项目中的结果进行输出。这一操作在电脑页面中的显示:
上图是manova语句的分析结果,p-value值为8.477e-16,几乎为零,数据存在证据证明从总体来看这三个鱼塘中鱼苗的生长发育不同。但问题在于,这三个鱼塘的鱼苗的生长发育具体不同在哪里?
进一步输入分析命令:
aov1 = aov(y1~g,data=fish)
summary(aov1)
print(model.tables(aov1,"means"),digits=3)
这三条语句使用y1生成了一个叫aov1的分析项目,y1指鱼苗的身长,aov1代表鱼苗的身长在这三个鱼塘之间所进行的比较。此时电脑页面显示如下:
上图显示的是鱼苗的身长在三个鱼塘之间进行的比较结果。p-value是0.3976,明显大于0.05,也就是说鱼苗的身长在三塘鱼苗之间没区别。
比较完鱼苗的身长,接下来比较鱼苗的背鳍长。此时,我们可以输入命令:
aov2 = aov(y2~g,data=fish)
summary(aov2)
print(model.tables(aov2,"means"),digits=3)
这三条语句进行的是鱼苗背鳍长度在三个鱼塘之间所进行的比较分析。Y2代表鱼苗的背鳍长度。此时,电脑的页面会显示如下图:
上图是对鱼苗背鳍长度的比较结果。p-value是0.1402,大于0.05,也就是说鱼苗的背鳍长度在三个鱼塘之间没区别。
下一步需要比较分析的是鱼苗尾鳍宽。此时需要输入如下命令:
aov3 = aov(y3~g,data=fish)
summary(aov3)
print(model.tables(aov3,"means"),digits=3)
这3条语句进行的是对鱼苗尾鳍宽度的比较分析,y3代表的是鱼苗的尾鳍宽度。此时,电脑的页面会显示如下图:
上图对三塘鱼苗尾鳍宽度的比较结果。P-value为2.341e-09,几乎为零。也就是说,数据存在证据证明在三塘鱼苗之间,尾鳍的宽度有明显区别。在鱼塘c中,鱼苗的尾鳍宽度的随机抽样平均值为1.572cm,高于其他两个鱼塘的平均值。
随后,我们输入对鱼苗左鳍长度进行比较分析的命令:
aov4 = aov(y4~g,data=fish)
summary(aov4)
print(model.tables(aov4,"means"),digits=3)
此时电脑页面会有如下显示:
上图显示的是三个鱼塘之间鱼苗左鳍长度的比较结果。P-value为4.499e-16,几乎为零,也就是说数据存在证据证明在三个鱼塘之间,鱼苗左鳍的平均长度有区别。还可以看到,鱼塘c的左鳍平均长度为1.005cm,高于其他的两个鱼塘的。
接下来,我们输入对鱼苗左鳍长度进行比较分析的命令:
aov5 = aov(y5~g,data=fish)
summary(aov5)
print(model.tables(aov5,"means"),digits=3)
电脑页面会有如下显示:
上图是鱼苗右鳍长度在三鱼塘之间进行比较的结果。p-value值为1.036e-14,几乎为零,也就是说数据存在证据来证明在这三个鱼塘之间鱼苗的右鳍平均长存在明显区别。鱼塘c中右鳍平均长度为0.996,明显高于其他两个鱼塘。
在总体比较manova分析中已经看到,总体来讲,鱼苗的生长发育状况在这三鱼塘之间存在明显不同。在接下来分析中,我们看到,鱼苗的身长和背脊长度在三个鱼塘中没区别,然而鱼苗的尾鳍宽度,左鳍、右鳍长度在三个鱼塘之间存在明显区别。而且,鱼塘c中鱼苗的左鳍右鳍长度,尾鳍宽度明显的高于其他两个鱼塘的。最终的结论是,鱼塘c中鱼苗的生长发育明显高于鱼塘a、b中的鱼苗。
12进行多样品双层次总体比较
运用R语言进行多样品总体比较,是R语言比较复杂的功能,但更为复杂的是运用R语言进行多样品双层次总体比较。
下面以学生不同时间做不同练习册的学习效果比较为例,演示一下R语言程序进行多样品双层次总体比较的功能。
在东风实验小学,有一位语文老师提出了一种想法。那位语文老师在写字台上摆三本内容不同的练习册,都是给小学生做阅读理解和生字听写练习的。不同编辑部门发行的练习册,由于编辑水平不同,学生们使用后对成绩的影响也不同。那位语文老师推测,学生们做练习册的时间不同,最终影响学生学习成绩的情况也不同。
那位语文老师想得出最科学的结论:在三本练习册之间,哪一本是最好的;在练习时间之间,哪一个时间是最佳的。
要通过如此复杂的对比,最终得出科学的结论,需要充分借助和利用R语言程序。
将三本练习册分别称作练习册x、练习册y和练习册z;在练习时间上,早晨练习用a来代表,下午练习用b来代表。因为三种不同练习册和两种不同练习时间组合起来产生了6种不同练习环境:
xa代表练习册x在早上使用
xb代表练习册x在下午使用
ya代表练习册y在早上使用
yb代表练习册y在下午使用
za代表练习册z在早上使用
zb代表练习册z在下午使用
在这个老师所带班级中,有42个学生。他便将学生随机分成了6组,每一组分配给了一种练习环境。
经过两个礼拜的练习册使用后,语文老师用统一的试卷对42名学生的阅读能力和生字听写能力进行了一次测试。每个学生都有两个分数,分别代表他们的阅读理解成绩和生字听写成绩。他将此次试验所取得的数据输入了yuwen.txt。
在yuwen.txt中,有7列数据,第一列被称作ID,是这42个学生的编号,用1到42来代表;第二列被称作book,代表三本不同的练习册,用x、y、z来代表;第三列被称作time,代表练习时间,a代表早上,b代表下午;第四列被称作read,代表学生们在阅读理解测试中所取得的分数;第五列被称作word,代表学生们在生字听写测试中所取得的成绩;第六列被称作sum,代表学生们的总成绩,即阅读理解和生字听写的总成绩;第七列被称作group,代表练习册与练习时间之间的组合,即六种练习环境。
接下来需要做的是需要输入双层多样品总体比较所需的相关的代码。我们首先要属于将yuwen.txt读入R语言程序的命令:yuwen&-read.table("H:\\R Writings\\11 two way manova\\yuwen.txt", header=T)
电脑运行后,将会生成一个叫yuwen的数据项目。在个语句中,必须要注明数据文件所在的路径,还要注意到header的输入为T,因为在数据文件中存在着诸如ID,book,time,group之类的表头。
接下来输入第二个命令:attach(yuwen)。这个命令使这个数据项目更加容易操作。
输入的第三个命令是:# 2×3 Factorial MANOVA with 2 Dependent Variables.
Y &- cbind(read,word)
在上面cbind命令中,read数据列和word数据列生成了一个被称作Y的数据项目。
接下来,输入的是执行双层次总体比较的关键命令manova的命令:
fit &- manova(Y ~ book*time)
在这么命令中,book和time代表两个层次,Y代表学生成绩,fit指最后生成的分析结果。
下一步,用summary命令输出fit的分析结果。这个命令是:summary(fit, test="Wilks")
电脑运行后,显示出了如图所示结果:
在上面显示图中,book代表练习册,与之相对应的p-value为1.305e-11,几乎为零,也就是说数据存在证据证明不同的练习册之间所产生的阅读理解生字听写成绩不同。time代表练习时间,与之对应的p-value为0.8966,就是说数据中不存在证据来证明练习时间能够产生不同的阅读理解和生字听写成绩。book:time代表练习册与练习时间之间的互相作用,p-value为0.3181,没足够证据证明这种互相作用可以产生不同的阅读理解与生字听写成绩。由此可见,在这个例子中不存在互相作用对成绩的影响。最佳练习册与最佳练习时间之间组合就是最佳练习环境。如果存在着互相作用的情况下,最佳练习册与最佳练习时间很可能就不是最佳练习环境。
接下来对六个组合的练习环境进行的单层次总分数比较,需要输入以下三个命令:
aov = aov(sum~group,data=yuwen)
summary(aov)
print(model.tables(aov,"means"),digits=3)
输入以上三个命令后,通过R语言程序运行,电脑出现如下显示:
在上图分析比较结果中,group代表练习环境,其p-value为6.346e-06,几乎为零,也就是说在这六种练习环境中所产生的成绩有区别。在最后一行,可以看到平均成绩由yb所代表的练习册y下午练习成绩为最高,值为168.7。练习册y在上午练习平均成绩为167.9,与最高成绩只少了0.8分。在前面manova输出结果中,我们已经得出练习时间对成绩没影响,也就是说,168.7与167.9之间区别并不显著,可以被忽略。

我要回帖

更多关于 机器学习与r语言 pdf 的文章

 

随机推荐