zwdbordeaux
准备写个小的总结,为了督促自己,同时为了不断改进,决定边写边贴在这里,最后统稿一下完事。
-------------------------------
开始用R是在2006年初,当时刚刚开始博士论文,因为课题涉及数学模型,导师推荐了R. 其实导师以前都是用S-Plus的,后来发现学生们学会了S-plus之后却买不起软件,所以便开始应用免费版的R了。我适逢其会,开始了R的学习和应用。现在博士即将毕业,对R的应用稍有心得,同时也深切感到这个软件的巨大潜力,实在是科研中的得力助手。但目前这个软件在植物生态生理学上的应用还有待相关学者的关注。写此小文以总结备忘自己的一些经验,同时希望能够吸引更多的研究者运用这个软件。
面对一个新的软件,初用者往往感到无从下手,读了很多说明,结果针对性太差,与真正应用到自己的数据管理,图表制作以及文章发表中距离较大。本文将以零起点用户为对象,运用一个实际例子,解释从数据管理到图表制作的过程,且保证这些得到的图表可以达到用来发表的标准。同时介绍R比其他统计软件SPSS和做图软件Sigmaplot的优缺点。下面将从几个方面逐步介绍:
1)R和Tinn-R的安装
2) 包的下载和安装
3)数据的管理(计算)及输入输出
4)统计分析(方差分析,多重比较,相关性分析)及结果输出
5)图的制作(折线图(点,线,误差),柱状图,回归线添加,方程添加,多图组合)
6)非线性拟和,参数估计?
7)相关参考资料
yihui
zwdbordeaux
to Xie, 看了你推荐的那个文献,确实不错。我甚至尝试着下载了LATEX,可惜捣鼓了一个周末未果,估计从开始到真正实际应用还有一段距离。且在我所在研究方向的很多刊物投稿说明中明确指出不接受LATEX格式。所以我还是用了R, Excel 和word的混合。以后会把你推荐的这个文档好好学习一下。
zwdbordeaux
最近正在忙着学校注册,更新居留证......,且周末没有办法上网,所以时间拖了!
-------------------------------------------------------------------
1)R 和Tinn-R 的安装
本文仅将R和Tinn-R 的应用和安装局限于windows操作系统下,其它操作系统可参考相关文献。
R的安装程序可以到
http://cran.r-project.org/bin/windows/base/ 下载,目前(2008年10月14日)最新的版本为 R-2.7.2-win32.exe, 下载后跟随安装向导,非常容易便可以安装。
Tinn-R是R的一个辅助软件,可以不用,但是建议应用。它可到
http://www.sciviews.org/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:A
Tinn-R functional hotkeys中定义这个键组合要实现的功能:比如send: line
然后 add
注意底部option中选择 active
这个时候你可以尝试运用R了!
在Tinn-R 中file-New, 在新建的文件中输入: mean(c(4,5,6))
光标放在刚刚输入的那一行,然后Ctrol+A,这个简单的命令便自动输入到R中并且得到结果5。
zwdbordeaux
请多提意见!
是不是说的太罗素点!
为了验证,我卸载掉了Tinn-R按照自己提供的步骤重新尝试了一下。
cloud_wei
很严谨,我觉得R的下载、包的安装等基础东西可以少说点,核心放在生态学和R上,这样重点也突出,篇幅也不至于太大,还可以节约点时间。
bjt
对,重点篇幅可以放在 R 和生态学上。
bjt
[quote]
引用第1楼谢益辉于2008-10-10 20:10发表的“”:
好!
关于写统计报告的标准,要是有人能把Frank Harrell的这篇文章写一写就好了:
http://biostat.mc.vanderbilt.edu/twiki/pub/Main/StatReport/summary.pdf[/quote]
确实是个好主意。一直想写 LaTex + R 的东西,不过从时间安排上看,这次精力了。
如果没人写,明年我来讲这个。
yihui
[quote]引用第2楼zwdbordeaux于2008-10-15 00:19发表的“”:
to Xie, 看了你推荐的那个文献,确实不错。我甚至尝试着下载了LATEX,可惜捣鼓了一个周末未果,估计从开始到真正实际应用还有一段距离。且在我所在研究方向的很多刊物投稿说明中明确指出不接受LATEX格式。所以我还是用了R, Excel 和word的混合。以后会把你推荐的这个文档好好学习一下。[/quote]
大部分数学刊物应该都是以LaTeX稿件为主,统计的应该也是,还有计算机、物理方面的应该也是LaTeX居多,如果我没记错的话IEEE是只接受LaTeX稿件的。
用Office的话其实也可以考虑Open Office,R也有相应的odfWeave
zwdbordeaux
看了一个帖子:Modelling Ecology in R 专题以及QQ 群
http://www.planta.cn/forum/viewtopic.php?t=6735
觉得自己太井底之蛙了!不过还是打算把这个备忘录写完,充分的暴露,才能充分的发现缺点,这样以后才能把R用的更好!
toltec
楼主加油!您的这种写法正适合新手进阶深入,特意从planta来顶你,期待!
zwdbordeaux
多谢 toltec的支持!
下午和老板讨论一个文章的事情,很高兴又学会了一种非常灵活的图形排版方式。
换下脑袋,接续前文。
to cloud-wei,多谢你的建议!
这个备忘录的初衷应该是面对初级用户,初级到对R一无所知,希望能够让人读了之后对R的功能有个大概地了解,同时又获得一些非常实用的小技巧。后面的高级应用就要靠自己学习了,因为我也还在学习,没有能力说太高深的东西。欢迎更多建议!
-----------------------------------------
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)。更新和加载方法一样。
zwdbordeaux
3)数据的管理(计算)及输入输出
数据的管理及输入输出将主要结合R与Excel的互动,以一个虚拟研究为例,说明从数据录入,变量管理,从Excel到R的读入,以及从R到Excel的输出。同时介绍各种统计量的计算,如均值,标准差,变异系数等。
-----
正在考虑该用个什么样的例子和数据
------------
suncx
楼主你好!
我感觉你写“在植物生态生理学中的应用”非常的好!祝福与期待中!
zwdbordeaux
正在忙最后的毕业论文和博后的申请,似乎经济危机波及到了基金支持,所以只能祝自己好运了!
好了,接上文:
-----------------------------------------------------------------------------
为简单起见,从MASS中找到了一个卷心菜的数据,这个例子JH Maindonald 的《Using R for data analysis and graphics 》中也用到过。这里将会更加详细的展开。
首先介绍一下这个“试验”:为了测定卷心菜品种和播种日期对其产量和品质(维C含量)的影响,试验采用了2个品种,在3个不同时间进行播种,之后测量了卷心菜的重量和VC的含量,每个组合10次重复。因为不同的播种时期涵盖了不同气候条件的影响,因此可以勉强算是一个植物生态生理学的例子吧。当这个实验出来之后,想要回答的几个问题:1)测定两个品种的产量和品质是否有所差别,若有哪个更好;2)播种日期对产量和品质是否有影响;3)播种日期若有影响,是否具有品种依赖性,也就说是否存在与品种之间的交互作用。
zwdbordeaux
昨天写完另外一段之后,竟然无法贴上去!
---------------------------------------------------------------------------------------
我深信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的含量
数据读入之后,便可以开始针对前面提出的科学问题开始选择必要的分析方法了,这里很明显需要进行方差分析。
-------------------------------------------
哎,一个博后申请今早被拒了,郁闷!
zwdbordeaux
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含量也有显著影响但是二者之间没有互作效应。
zwdbordeaux
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)
------ To be continued----
祝大家周末愉快!
zwdbordeaux
Tukey多重比较
虽然R自己有一个Tukey多重比较的方程,但是我发现 agricolae这个包中的HSD.test方程非常好用。这个包是专门针对农业田间试验和植物育种试验而开发的,实用性比较高。
library(agricolae) #加载包
DFerror<-df.residual(aov.1)
MSerror<-deviance(aov.1)/DFerror
cmp.1<-HSD.test(cab$HeadWt,Cul,DFerror,MSerror,group=TRUE)
# 结果表明品种C39的重量显著高于另一品种
#为了得到所有组合之间的比较,我们进行另外一种方差分析:
aov.3<-aov(HeadWt~comtreat,data=cab)
summary(aov.3)
DFerror<-df.residual(aov.3)
MSerror<-deviance(aov.3)/DFerror
cmp.2<-HSD.test(cab$HeadWt,cab$comtreat,DFerror,MSerror,group=TRUE)
#从中提取处理,均值,误差和分组字母,构成一个矩阵一便后面柱状图的操作。
group1<-matrix(c(cmp.2$means,cmp.2$M,cmp.2$std.err),
nrow=6,ncol=3,byrow=TRUE,dimnames=list(cmp.2$trt,c("mean","significant","se")))
barplot(group1[1:6,1],beside=TRUE,angle=c(0,45,90,180,0,0),density=c(-1,20,20,20,-1,-1),ylim=c(0,4.5),col=c(1,2,3,4,5,6))
box()
sas2008
好东西,谢谢分享。