R语言系列----数据描述

 

简单来说,R语言是一种主要用于统计分析、绘图的语言和操作环境。的源代码可自由下载使用,亦有已编译的执行档版本可以下载,可在多种平台下运行,包括UNIX(也包括FreeBSD和Linux)、Windows和MacOS。R主要是以命令行操作,同时有人开发了几种图形用户界面。

       为什么我会使用R语言呢?毕竟我们还有SPSS,SAS,S等其他工具。就我个人而言(其实对很多人也是这样)有两个原因----R的开源与其极高的自由度。

       R是开源的,是属于GNU系统的一个自由、免费、源代码开放的软件因此在使用它时我们不用担心使用的资格问题。(当然对人一般人来说其他软件也可以使用盗版…起码国内是这样)另外作为一种语言,R拥有极高的自由度----对于,很多新的统计学模型,也许SPSS等软件根本无法处理---你只能使用系统提供的有限选项。但是在R语言中,你可以自己去实现它。这也是学术界对R如此关注的原因。

       敲了这么多废话,进入正题。

       这一篇的内容是数据描述,就冲R中内嵌的一些简单分布开始吧。

R语言中提供了四类有关统计分布的函数(密度函数,累计分布函数,分位函数,随机数函数)。分别在代表该分布的R函数前加上相应前缀获得(d,p,q,r)。如正态分布的函数是norm,命令dnorm(0)就可以获得正态分布的密度函数在0处的值(0.3989)(默认为标准正态分布)。同理pnorm(0)是0.5就是正态分布的累计密度函数在0处的值。而qnorm(0.5)则得到的是0,即标准正态分布在0.5处的分位数是0(在来个比较常用的:qnorm(0.975)就是那个估计中经常用到的1.96了)。最后一个rnorm(n)则是按正态分布随机产生n个数据。上面正态分布的参数平均值和方差都是默认的0和1,你可以通过在函数里显示指定这些参数对其进行更改。如dnorm(0,1,2)则得出的是均值为1,标准差为2的正态分布在0处的概率值。要注意的是()内的顺序不能颠倒。

       接下来我们用R来生成一个二项分布分布的图形吧。

       binom是二项分布。

n<-20

p<-0.2

k<-seq(0,n)

plot(k,dbinom(k,n,p))

       R语言中用<-给变量赋值,我们先让n=20,p=0.2然后用函数seq生成一个向量(1,2,3...20)并将其赋于k。然后用polt函数画图。

       在这里,我们用dbinom(k,n,p)生成了参数为n,p的二项分布在1….20处的概率值,然后以k的各个值为横坐标,dbinom(k,n,p)的各个值为纵坐标,绘图。

然后我们来看一些R对数据性质的描述。

绘制直方图:hist(x),横轴表示变量取值,纵轴表示频率。

       如x<-c(1,2,3,4,5)

 hist(x)

       (R语言中的向量前要求加c进行说明,故第一步是让x为一个值为(1,2,3,4,5)的向量,当然也可以看成一个值为1,2,3,4,5的样本)

       我们来画二项分布的直方图吧

       N<-10000

n<-100

p<-0.9

x<-rbinom(x,n,p)

hist(x)

       思考一下,上面的代码是怎样运作的?

 

绘制茎叶图: stem(x)

如:x<-c(11,12,13,21,22,23)

stem(x)

结果如下:

The decimal point is 1 digit(s) to the right of the |

 

  1 | 123

  1 |

2 | 123

 

另外还有

盒图:boxplot(x)

 

在各种图形之后,就是对数据的数值型描述了,包括

最大值max(x),最小值min(x),中位数median(x),五个分位数fivenum(x),平均数mean(x),样本方差var(x),样本标准差sd(x),样本偏度系数skewness(x),峰度系数kurtosis(x)等等。

如:N<-10000

n<-100

p<-0.9

x<-rbinom(x,n,p)

       max(x)

min(x)

median(x)

fivenum(x)

mean(x)

var(x)

sd(x)

library(fBasics)

skewness(x)

kurtosis(x)

就可以得到生成的随机数据的各种描述。

注意:skewness函数和kurtosis函数属于一个并非默认的fBasics的包,所以需要先用library(fBasics)引入该包才能使用这两个函数。

 

基本的就是这些了,当然还可以更加复杂,比如多组数据的图形与数值描述等等。即使是我们在上面使用的函数其实也是非常强大的,只是我们在上面使用了很多的默认的参数而简化了它们的调用而以。

posted @ 2012-06-30 22:33  罗刹剑客  阅读(12841)  评论(0编辑  收藏  举报