您的位置:首页 > 其它

软件R的安装和使用(视窗电脑)

2004-11-19 22:57 453 查看
软件R的安装和使用(视窗电脑)<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

                                 周迈
Department of Statistics, <?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />University of Kentucky
      
       R是一个免费的统计分析软件(GNU版权,这一点与LINUX相似)。它几乎是SPLUS的一个克隆。(不要钱的SPLUS).几乎所有从R中学到的都可以在SPLUS中应用,反之亦然。而SPLUS是一个很高质量的,普遍使用的统计软件。美国药品检验局曾批准使用2个统计软件。SPLUS是其中一个,另一个是SAS。R有各种版本,可以在UNIX计算机,苹果机和这里要详细讲的视窗电脑机上运行;包括视窗95,98,ME,NT,2000中都能运行。现下的最新版是R1.3.1(9/2001).
 

1.       在视窗计算机上安装R
 

如果你有R的光碟,则可省去下载的时间和麻烦。将光碟置于光驱中。用鼠标点
击 SetupR.exe  即启动了安装。
如果你没有R的光碟,则可以从以下地址下载“SetupR.exe”:
http://cran.us.r-project.org/bin/windows/base/
    注意这是一个15MB大的文件,所以会需要较长时间下载。
    如果安装顺利你将会在START-PROGRAMS里看到R。用鼠标选择它即开始运行R了。在R里你可以键入q()或用鼠标选FILE-EXIT来退出R。此时有一对话框,问你是否需要把R中运行的历史存下。此时点No。(以后你得到有用结果时应点Yes将结果和历史存下)。
       R还有许多附加的功能包,不用时不调用,可省内存。如果要调用,在R里用鼠标点Packages看看有那些已经安装了(要先安装才能调用)。如果已按装了则用鼠标选择即可。
       如果要新安装功能包,则先启动R,在R里用鼠标点击
              Package→Install package from local zipfile
       然后在窗口中找到你要安装的package的zip文件,选择即可。(比如在光碟上就有,或事先下载)。
    
现在假定你的电脑已经成功地安装上了R。
 

2.  第一节课
下面是R的演示,我们将输出略去了,只有需要你打字的输入在这儿。#后面的是注,
R不执行的。注意R是分大小写的(象Unix,不象DOS)。
注意>符是R的prompt, 表示R已经准备接受你的指令。
 

>data1 <- c(21,25, 25,18,44,20,25,15,19,20,30)  # 这产生了一个向量叫data1
>1s() #(是el-s,不是壹-s)  看看有什么(看到了data1 了吗?)
>summary(data1)

>stem(data1)

>hist(data1)    直方图
>data2<-rnorm(100)  产生100个正态随机数,放在data2里
>hist(data2)

>data() 看看有那些数据已经装进R。
>data(sunspots)  调入数据sunspots
>sunspots 将sunspots在屏幕上显示出来。
>plot(sunspots) 

可以在图上打出你的名字、学号:
>text(locator(1),”your name  and  ID”)

此时用鼠标点击图上的某个地方。
>rm(data1)  将data1抹去。
>demo(graphics)  看作图演示,要在指令窗里回车数次。
>q()  退出R
 

       初学者常范的一个错误是自己产生或定义一个东西,起名和现有的东西重名。比如c, t, 等等。一开始好象不会导至错误,但后来会引起许多混乱。所以起名时要避免重名。如你想给你的数据或函数起名mydata,则先试试:
>mydata

Error:Object “mydata”not found
这表明没有叫mydata的东西,你可以用此名字。
 

       如果重复一个指令,则可用箭头来调出前面用过的指令,还可以修改。象Unix的K-shell.
 

2. 打印及图像存档
 

R有可以点击的“打印”菜单,对于图像窗口和指令窗口都有。也可以点击File
→Print 即可。或直接点打印机的图号即可。
 

       还可将图像拷进Excel 或 World中(便利与其它文字一起编辑)。先将R的图像窗口点击成为active,然后点击File→Copy to clip board→as bitmap。再打开(微软)Word 或Excel,在那儿点击Edit→Paste。这样你的图就到了Word或Excel里了。
       如果点击File→Save as→postscript 则便将图存档成为postscript文件, 等等。
 

2. 2 内存
 

R有它自己的内存管理系统。可以用gc()来看看有多少内存已经占用。不过从R1.2.0
版本开始(现在的最新版本为1.3.0)你不必再担心内存问题。当然如果你的PC机内存不足则R的运行会很慢。
 

2.3   彩色作图和图中的数学符号
 

       R可以产生彩色图。(可能你在demo(graphics)中见过了)。用plot(x,col=”red”)来得到一个红色的图。如要其它颜色,用colors()来看600多种颜色的名称。
      你也可以用points(x,col=”white”)来抹去刚才得到的红色点,(假定你用white作底色)。
其它函数也有不少可用col=的,包括lines()等等。
R优于<
17330
/span>Splus的一点是R可以在图中作出数学符号和希腊字母(与tex语言功能相近)。以下是一个简单例子:(更多可见demo())。
>plot(rnorm(100),type=”n”)

>text(20,0,expression(theta(mu)),col=”blue”)

>text(40,0,expression(theta{“2+x”}),col=”blue”)
 

3         第二节课
 

R要边试边学,以下是一些常用的函数用法,试试看。
看演示:                                       demo() or demo(graphics)

删除x:                                        rm(x)
看你有什么:                                   ls()
随机产生9个从20到40的整数(无重复):        sample(20:40,9,replace=FALSE)

随机分组,18个东西分3组:                     sample(1:3,18,replace=TRUE)
随机分组,18个东西分3组,每组6个             sample(rep(1:3,6),18,replace=FALSE)
查阅sample()函数的功能,用法:                  ?sample  
计算data1的样本均值                            mean(data1)  
计算data1的样本标准差                          sd(data1)
计算data1的样本方差                            var(data1)
计算data1的样本中位数                          median(data1)
 range(data1)

 boxplot(data1)

计算5的阶乘                                   prod(1:5)
计算从20个东西里取5个的不同种取法            choose(20,5)
产生100个标准正态分布的随机数                 rnorm(100)
产生并把连续随机数离散化                       table(cut(rnorm(100),8))   
R的另一种用法是将几个乃至几十个指令存档于一个ASCII文件(比如叫mycode),然后在R里打
>source(“ mycode”) 或用鼠标点File→source R code。
对于现成的数据不必重新打字输入,而可用R来读。先将数据整理成ASCII文件(
如用wordpad),然后在R里作如下指令: (假定你的数据在text.dat中)(将数据读入并存在data3中)
>data3<-read.table(“c:/stat/test.dat”,header=TRUE)

另外还可用scan()来读数据,用write()来输出数据。
 

R可以替代几乎所有的统计表格,得到各种概率
如果Z是一个二项分布随机变量,N=25,p=0.3,则P(Z≦5)为
>pbinom(5,25,0.3)    

P(Z=5)为
>dbinom(5,25,0.3)

P(Z≧5)为
>1-pbinorm(4,25,0.3)  #请注意是4而不是5。
最后P(5≦Z≦10)为
>1-(1-pbinorm(10,25,0.3)+pbinom(4,25,0.3)   或
>pbinom(10,25,0.3)-pbinorm(4,25,0.3)        或
>sum(dbinom(5:10,25,0.3)

 

也可以索性打印出一张二项分布的概率表来(N=25,p=0.3)
>dbinom(0:25,25,0.3)

为了看得更清楚些,你可以试试:
>print(dbinom(0:25,25,0.3),print.gap=2)      或
>print(cbind(0:25,dbinom(0:25,25,0.3)),print.gap=3)

如果Z是一个标准的正态分布变量,则P(Z<1)为
>pnorm(1)

 

如果要计算非标准的正态概率,则要给出均值和标准差。如果Z是均值为 –2,标准差
为3的正态随机变更,则P(Z<1)为:
>pnorm(1,mean=-2,sd=3)

而P(2<Z<3)为:
>pnorm(3,mean=-2,sd=3)-pnorm(2,mean=-2,sd=3)

对于超几何分布的概率,可用dhyper()或phyper()来计算:
-------------------
|  f11  |    | 19
-------------------           假设左边这个2×2的表是我们关心的。要
|      |     | 11             计算f11的分布概率。
-------------------
14                  16 
则f11=6的概率为
>dhyper(6,14,16,19)
    如果用phyper则得到f11≦6的概率。
对于卡方分布(自由度为1的中心分布)。它小于3.84的概率为

>pchisq(3.84,df=1,ncp=0)

 

4.    一些习题

 

题1:如果整个母体(所有人们)对于一件事的观点正好是一半一半(赞成/反对)。而我们用随机抽样来进行调查。用R来算出以下概率:

(a)随机抽样10个人,其中6人或以上赞成

(b)随机抽样100个人,其中60人或以上赞成

(c)随机抽样1000个人,其中  600人或以上赞成

(d)随机抽样2000个人,其中1200人或以上赞成

(e)随机抽样1500个人,其中赞成人数在300到600之间(包括300和600)。
 

       根据上面计算,如果你随机抽样了2000人,其中1200人赞成。你还相信一半/一半(赞成/反对)吗?摆出理由。[所有计算均可用pbinom()完成]
也可用R打印出一个小小的正态分布概率表,请与书中的比较。 
>pnorm(seq(-3.5,3.5,0.5))
设Z是一正态分布的随机变量。均值为2,标准差为4。请计算3.085<Z<4.226的概率。
 

单样本的T检验。先将数据存入一个向量(比如)叫data6
>data6<-c(33.9,52.4,48.6,53.5,43.8)

要检验Ho:μ=46.5  Ha: μ<46.5(其实只算显著性),则

>t.test(data6,alternative=”less”,mu=46.5)

另外2个对立假设是“greater”和“tow.sided”。这函数除了给出显著性外还给出一个 95%置信区间。

 

t.test()还可以做两样本t检验。假定有2组数据叫xbefore和xafter。又假定数据是不配对的。则可检验:Ho: μ=0  Ha: μ<0

>t.test(x=xbefore,y=xafter,alternative=”less”,mu=0,paired=FALSE)

    如果数据是配对的,则改paired=FALSE为paired=TRUE.

 

单样本的百分比检验。假设数据为:1000试验中600成功。要检验成功概率是否是

0.5:  Ho:p=0.5;Ha:p≠0.5,则

>prop.test(600,n=1000,p=0.5,alternative=”two.sided”)

另外两个对立的假设是“less”和“greater”.这函数也给出95%的置信区间。

 

进一步的讯息可用 ?t.test。查询在线手册。

 

  如果需要有R的附加功能包,则可以先查一下有那些装上了。
>library()            列出所有装好的附加功能包。(假定你有ctest.)
>library(ctest)       这样便将ctest调进来了。(其中包括binom.test函数)
>library(help=ctest)  看看在ctest功能包中包括那些函数。(其中有binom.test)
>binom.test(600,n=1000,p=0.5,alternative=”two.siced”)  利用binom.test来做统计检验
>?binom.test

如果library()中没有你需要的功能包,则要先安装上(请看第一节)。
函数binom.test与prop.test相近,只不过prop.test用的是近似计算,binom.test是精确计算。不过prop.test的功能适用性更强更广。
 

 

R还可以调用现成的C程序和Fortran程序。不过比较复杂。要先将C/Fortran程序 转换成dll可执行文件。然后调用。你应该尽量在R中完成你的计算。如果实在有调用C/Fortran的需要,则请找英文的文件。
 

 

R的一些特点:
 

1、R(Splus)是向量语言。几乎所有运算都最好向量化。(会比for循环句快很多)。
 +,-,*,/,^,……等等。要一个向量的一部分,则可用[]来表示下标范围。
2、R的运算都是以函数来完成的。R有3000个以上的函数。exp(x), log(x), sqrt(x),
q(),c(x,y)…… 等都是函数,x都可以是向量。
3、你自己在R中可以很容易定义新的函数(例子见后)
4、R的图像功能很强,可以互动作图,直至满意。
5、对于非常大的数据,R可能不太合适。  (>1 gig)
6、许多附加功能包在R和Splus中是完全一样的。(如 survival, bootstrap等等)
7、R中的随机数产生方法可以自由选择(如果你担心随机数的质量的话)
8、R不要钱,可以让学生每人一份。可以在家里做计算。或在笔记本电脑上
 

       如果你要定义新的函数,可以先在R外用任何编辑软件编写好(ASCII file或.TXT file)然后在R里边用source()读进来。也可以直接在R里边编写。比如先调R的函数mean,修改后变为你自己的函数junk。
>junk<-edit(mean)

       如要修改你的函数,则可用:
>fix(junk)

 

如果你要定义的函数很短,则可直接在R中键入,例如
>junk<-function(x)  {x/(x+5)}

       下面是又一个自我定义的函数例子。(给定样本大小,样本均值和标准差,产生假数据)
fakedata<-function(size, xbar, sdd){

if(sdd<=0) stop(“sdd must >0”)

if(!is.numeric(xbar)) stop(“xbar must be a real number”)

fake1 <-rnorm(size)

fake2 <-fake1 – mean(fake1)

fake2*(sdd/sd(fake2))+xbar

}

这个函数在以下情况有用:有时习题中只给出样本大小(=50),样本均值(=11.8)和标准差(=0.6),但没有原始数据。如果要做t检验,则可以如下做:
>mydata <- fakedata(50,11.8,0.6) 

>t.test(mydata, mu=12, alternative=”less”)

 

       进一步的阅读只能看英文了。可以先看“An Introduction to R”。此书也是免费的。在R里点击Help,然后选这本书,可以打印出来阅读。R的指令和输出除了数字/符号外,都是英文,所以学点英文看来是必要的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息