R 在植物生态生理学中的应用

  • 格式:doc
  • 大小:54.00 KB
  • 文档页数:9

R 在植物生态生理学中的应用--从数据管理到图表制作zwdbordeaux/bbs/read.php?tid=12277&fpage=&toread=&page=1准备写个小的总结,为了督促自己,同时为了不断改进,决定边写边贴在这里,最后统稿一下完事。

-------------------------------开始用R是在2006年初,当时刚刚开始博士论文,因为课题涉及数学模型,导师推荐了R. 其实导师以前都是用S-Plus的,后来发现学生们学会了S-plus之后却买不起软件,所以便开始应用免费版的R了。

我适逢其会,开始了R的学习和应用。

现在博士即将毕业,对R的应用稍有心得,同时也深切感到这个软件的巨大潜力,实在是科研中的得力助手。

但目前这个软件在植物生态生理学上的应用还有待相关学者的关注。

写此小文以总结备忘自己的一些经验,同时希望能够吸引更多的研究者运用这个软件。

面对一个新的软件,初用者往往感到无从下手,读了很多说明,结果针对性太差,与真正应用到自己的数据管理,图表制作以及文章发表中距离较大。

本文将以零起点用户为对象,运用一个实际例子,解释从数据管理到图表制作的过程,且保证这些得到的图表可以达到用来发表的标准。

同时介绍R比其他统计软件SPSS和做图软件Sigmaplot的优缺点。

下面将从几个方面逐步介绍:1)R和Tinn-R的安装2) 包的下载和安装3)数据的管理(计算)及输入输出4)统计分析(方差分析,多重比较,相关性分析)及结果输出5)图的制作(折线图(点,线,误差),柱状图,回归线添加,方程添加,多图组合)6)非线性拟和,参数估计?7)相关参考资料1)R 和Tinn-R 的安装本文仅将R和Tinn-R 的应用和安装局限于windows操作系统下,其它操作系统可参考相关文献。

R的安装程序可以到/bin/windows/base/下载,目前(2008年10月14日)最新的版本为R-2.7.2-win32.exe, 下载后跟随安装向导,非常容易便可以安装。

Tinn-R是R的一个辅助软件,可以不用,但是建议应用。

它可到/Tinn-R/下载。

之后的安装也很简单。

安装完R和Tinn-R之后需要进行一点小的设置:打开R, 之后Edit (窗口上部工具条)--Gui Preference--Rgui Configuration Editor--Single or multiple windows(选中SDI)--Pager style (选中single window)--Save。

这样R的设置就完成了。

打开Tinn-R, 在顶部窗口R下拉菜单中找到Hotkeys of R, 自定义一些热键.首先在Assigned hotkes 中clear all然后Get hotkey method中定义你想要得键组合:比如Ctrl+Key:ATinn-R functional hotkeys中定义这个键组合要实现的功能:比如send: line然后add注意底部option中选择active这个时候你可以尝试运用R了!在Tinn-R 中file-New, 在新建的文件中输入:mean(c(4,5,6))光标放在刚刚输入的那一行,然后Ctrol+A,这个简单的命令便自动输入到R中并且得到结果5。

2)R包的下载安装(install),加载(load)及更新(update)R的一个特点和优点便是它包括很多程序包(Package),这些包内包含各种数据和方程用来处理各种特殊的数据。

在R安装的同时一些基本的包已经自己安装并且加载到工作环境中了,但是针对一些特殊的问题,我们难免需要寻求有针对性地程序包。

为了获得这些程序包的内容,可以检索:http://pbil.univ-lyon1.fr/library/stats/html/00Index.html比如要下载安装plotrix 这个包,到packages—install packages—select CRAN mirror (比如Australia)—packages (选择plotrix)。

这样这个包便下载下来了。

如果想用这个包,需要到packages—load packages—plotrix 或者简单的输入library (plotrix)。

更新和加载方法一样。

3)数据的管理(计算)及输入输出数据的管理及输入输出将主要结合R与Excel的互动,以一个虚拟研究为例,说明从数据录入,变量管理,从Excel到R的读入,以及从R到Excel的输出。

同时介绍各种统计量的计算,如均值,标准差,变异系数等。

为简单起见,从MASS中找到了一个卷心菜的数据,这个例子JH Maindonald 的《Using R for data analysis and graphics 》中也用到过。

这里将会更加详细的展开。

首先介绍一下这个“试验”:为了测定卷心菜品种和播种日期对其产量和品质(维C含量)的影响,试验采用了2个品种,在3个不同时间进行播种,之后测量了卷心菜的重量和VC的含量,每个组合10次重复。

因为不同的播种时期涵盖了不同气候条件的影响,因此可以勉强算是一个植物生态生理学的例子吧。

当这个实验出来之后,想要回答的几个问题:1)测定两个品种的产量和品质是否有所差别,若有哪个更好;2)播种日期对产量和品质是否有影响;3)播种日期若有影响,是否具有品种依赖性,也就说是否存在与品种之间的交互作用。

我深信100句解释不如一个例子的道理,所以才选择了这个非常容易便可以得到的数据,可以直接如下获得:help(cabbages)#察看这个数据。

注意在R中,井号后面的东西均为自己的备忘和解释,并不会运行。

data(cabbages)#上载数据cabbages#看数据里面的具体内容#将数据写入到一个excel文件。

在预定的文件夹中建立一个excel文件,cabbages.xls#运用下面命令将数据写道粘贴板上write.table(cabbages, "clipboard",sep="\t")#在cab.xls中粘贴,同时把最上面一行向后移动一格,然后把第一列删掉,因为那时自动生成的行名当然还有其他的写入方法,但是上面介绍的这种非常方便,当数据不是很大的时候可以应用。

请注意,上面的操作指示为了说明如何把数据从R输入到EXCEL中,通常情况下,我们在做实验的时候已经把数据保存在EXCEL中了,那么那个时候要做的事情便是从Excel中读入数据# 将excel.xls格式的文件另存为 .csv 格式(文件,另存为,下拉菜单中找逗号分隔符.csv)#读入.csv格式的文件cab<-read.csv(file.choose())#这里给读入的数据命名为“cab”直接写你想用的名字就可以#这个命令输入之后,会出现一个文件选择框,把你想选的文件点中就可。

当然也可以直接指明路线,如果文件cabbages放在e盘data文件夹中,那么可以如下输入:cab<-read.csv(“E\\data\\cabbages.csv”)或者将双斜线\\换成单的反斜线/。

请注意,R中区分大小写,还有上面命令中的引号,双斜线或单反斜线,以及文件的后缀.csv都不能有丝毫差错,不然就会出现错误。

#察看其中的变量和数据结构str(cab)# 可见卷心菜的品种,有两个c39, 和c52#播种的时间,三个,d16,d20,d21#headwt卷心菜重量#VC卷心菜维他命C的含量数据读入之后,便可以开始针对前面提出的科学问题开始选择必要的分析方法了,这里很明显需要进行方差分析。

4)方差分析:方差分析有两个方程aov() 和manova(), 前者适用于单变量数据,后者适用于多变量数据。

在本例中观测的指标有两个,即重量和vc含量。

因此可以应用manova(), 但此处也给出aov的应用说明。

datam<-cbind(HW=cab$HeadWt,VC=cab$VitC)Cul<-as.factor(cab$Clut)Date<-as.factor(cab$Date)Datam<-cbind(cab$Headwt,cab$)aov.1<-aov(cab$HeadWt~Cul*Date)summary(aov.1)在做方差分析的时候首先确定作用因子,将他们的属性定义为factor, 然后定义作用因子之间的相互关系,a+b表示两个因子单独效应,a*b包括了单独效应和互作效应。

从上面的结果我们可以看到,品种和播种日期对重量具有显著影响,且二者有显著互作效应。

运用下面的方法可以一次得出两个以上变量的方差分析结果aov.2<-manova(datam~Cul*Date)summary.aov(aov.2)由结果可见,品种和播种日期对VC含量也有显著影响但是二者之间没有互作效应。

5)多重比较当我们发现某个影响因子对研究指标具有显著影响之后,随之而来的问题便是这种影响是怎样的趋势,那个品种和播种日期组合下的重量最高,那个品种的VC含量更高? 为了回答这些问题,便需要多重比较了。

在这里不求过多纠缠多重比较背后的统计学原理,而是仅给出他们常用的方法。

在做多重比较之前,首先看一下整体的结果,这里我给数据添加了一个分类组,就是把品种和播种日期组合在一起。

然后对数据作boxplot, 看它们中值,和变化范围。

cab$comtreat<-as.factor(paste(cab$Cult,cab$Date,sep=""))par(mfrow=c(2,1),mai=c(0,0,0,0),omi=c(0.6,0.6,0.1,0.1))plot(cab$comtreat,cab$HeadWt,xaxt="n")legend("topright","A",bty="n")plot(cab$comtreat,cab$VitC)legend("topright","B",bty="n")mtext("品种和播种日期",side=1,adj=0.5,outer=TRUE,line=2)mtext("重量(kg)",side=2,at=0.75,adj=0.5,outer=TRUE,line=2)mtext("维他命含量(g/kg)",side=2,at=0.25,adj=0.5,outer=TRUE,line=2)# 看一下重量和VC含量之间的相关性plot(cab$HeadWt,cab$VitC)lm1<-lm(VitC~HeadWt,data=cab)summary(lm1)abline(lm1)Tukey多重比较虽然R自己有一个Tukey多重比较的方程,但是我发现agricolae这个包中的HSD.test方程非常好用。