新闻中心
用R语言做数据分析——描述统计量(用r语言分析统计案例)
统计分析分为统计描述和统计推断两个部分,统计描述是通过绘制统计图、编制统计表、计算统计量等方法来表述数据的分布特征,它是数据分析的基本步骤,也是进行统计推断的基础。这里结合R语言介绍统计描述,也就是数据的描述性分析,用R语言作数据的描述性分析,可以更加方便、直观,有利于对统计描述的理解。
已知一组观测数据为x1,x2,...,xn,它们可以是从所要研究的对象的总体X中取出的,这n个观测值就构成一个样本。在一些简单的实际问题中,这n个观测值就是所要研究问题的全体,数据分析的任务就是要对这全部n个数据进行分析,提取数据中包含的有用信息。
数据作为信息的载体,当然要分析数据中包含的主要信息,即要分析数据的主要特征,也就是说,要研究数据的数字特征。这些特征就是在之前统计章节中所介绍的数据特征,即数据的集中趋势、分散趋势和数据的分布等。
数据的集中趋势常用的衡量指标有均值、众数、中位数、百分位数。
均值
在R语言中,可用mean()函数计算样本的均值,其使用方法为:
mean(x,trim=0,na.rm=FALSE)
其中x是对象(如向量、矩阵、数组或数据框),trim是计算均值前去掉与均值差较大数据的比例,缺省值为0,即包括全部数据。当na.rm=TRUE,允许数据中有缺失值,函数的返回值是对象的均值。
> x<-1:12
> dim(x)<-c(3,4)
> x
[,1] [,2] [,3] [,4]
[1,] 1 4 7 10
[2,] 2 5 8 11
[3,] 3 6 9 12
> mean(x)
[1] 6.5
注意,当x是矩阵或数组时,函数mean()返回的一个数而不是向量,即矩阵中全部数据的平均值。如需要得到矩阵各行各列的均值,需要调用apply()函数。
> #计算矩阵各行的均值
> apply(x,1,mean)
[1] 5.5 6.5 7.5
> #计算矩阵各列的均值
> apply(x,2,mean)
[1] 2 5 8 11
如果x是数据框,则mean()的返回值就是向量。
求和
求和函数sum()是与求均值相关的函数,其使用格式为:
sum(...,na.rm=FALSE)
如果x是向量,函数length(x)的返回值是向量x的长度,因此均值可由下面计算得出:
> w<-c(75.0,64.0,47.4,66.9,62.2,58.7,63.5,66.6,64.0,57.0,69.0,56.9,50.0,72.0)
> w.mean<-mean(w)
> w.mean
[1] 62.37143
> w[1]<-750
> w
[1] 750.0 64.0 47.4 66.9 62.2 58.7 63.5 66.6 64.0 57.0 69.0 56.9
[13] 50.0 72.0
> mean(w)
[1] 110.5857
> mean(w,trim=0.1)
[1] 62.56667
使用trim参数可以有效减少由于输入误差对计算的影响,trim的取值在0至0.5之间,表示在计算均值前需要去掉异常值的比例,利用这个参数可以有效的改善异常值对计算额影响。
如果向量中存在异常值NA,此时用mean()方法无法得出得出结果,而na.rm是控制缺失数据的参数。
> w<-c(75.0,64.0,47.4,66.9,62.2,58.7,63.5,66.6,64.0,57.0,69.0,56.9,50.0,72.0,NA)
> mean(w)
[1] NA
> mean(w,na.rm=TRUE)
[1] 62.37143
加权平均值
与均值函数mean()相关的函数还有weighted.mean(),即计算数据的加权平均值,具体使用格式为:
weighted.mean(x,w,na.rm=FALSE)
其中x是数值向量,w是数据x的权,与x的维数相同。该函数可以对矩阵和数组计算加权平均值,但对数据框不适用。
排序
R语言中,sort()函数用于对数据的排序:
> x<-c(75,64,47.4,66.9,62.2,62.2,58.7,63.5)
> sort(x)
[1] 47.4 58.7 62.2 62.2 63.5 64.0 66.9 75.0
> #从大到小排序
> sort(x,decreasing=TRUE)
[1] 75.0 66.9 64.0 63.5 62.2 62.2 58.7 47.4
中位数
median()函数用于计算数据的中位数,其使用 格式为:median(x,na.rm=FALSE)
> x<-c(75,64,47.4,66.9,62.2,NA,58.7,63.5)
> x
[1] 75.0 64.0 47.4 66.9 62.2 NA 58.7 63.5
> median(x)
[1] NA
> median(x,na.rm=TRUE)
[1] 63.5
百分位数
quantile()函数用于计算数据的百分位数,其使用格式为:
quantile(x,probs-seq(0,1,0.25),na.rm=FALSE,names=TRUE)
其中x是向量,probs是给出相应的百分位数,缺省值是0、1/4、1/2、3/4。
> x<-c(75,64,47.4,66.9,62.2,58.7,63.5)
> quantile(x,probs=seq(0,1,0.2))
0% 20% 40% 60% 80% 100%
47.40 59.40 62.72 63.80 66.32 75.00
数据的分散趋势常用的衡量指标有方差、标准差、极差、四分位极差、变异系数和标准误等。
方差和标准差
R语言中,若x是由样本构成的向量,则var(x)计算样本方差,sd(x)计算样本标准差,它们的使用格式为:
var(x,y=NULL,na.rm=FALSE,use)
sd(x,na.rm=FALSE)
与方差函数var()相关的函数还有:cov()函数求协方差矩阵,cor()求相关矩阵。
> var(x)
[1] 70.23238
> sd(x)
[1] 8.380476
极差和四分位极差
极差的计算公式为:
R = max(x) - min(x)
其中x是由样本构成的向量,样本极差是描述样本分散性的数字特征,当数据越分散,其极差越大。
样本上、下四分位数之差称为四分位极差,其计算公式为:
R1= Q3 - Q1
分布形状的度量指标主要有偏度系数和峰度系数。
偏度系数是刻划数据的对称性指标。关于均值对称的数据其偏度系数为0,右侧更分散的数据偏度系数为正,左侧更分散的数据偏度系数为负数。
峰度系数:当数据的总体分布为正态分布时,峰度系数近似为0;当分布较正态分布的尾部更分散时,峰度系数为正,否则为负。当峰度系数为正时,两侧极端数据较多,当峰度系数为负时,两侧极端数据较少。
最后编写一个统计函数,计算样本的各种描述性统计量:
> data_outline<-function(x){
+ n<-length(x)
+ m<-mean(x)
+ v<-var(x)
+ s<-sd(x)
+ me<-median(x)
+ cv<-100*s/m
+ css<-sum((x-m)^2)
+ uss<-sum(x^2)
+ R<-max(x)-min(x)
+ R1<-quantile(x,3/4)-quantile(x,1/4)
+ sm<-s/sqrt(n)
+ g1<-n/((n-1)*(n-2))*sum((x-m)^3)/s^3
+ g2<-((n*(n+1))/((n-1)*(n-2)*(n-3))*sum((x-m)^4)/s^4-(3*(n-1)^2)/((n-2)*(n-3)))
+ data.frame(N=n,Mean=m,Var=v,std_dev=s,Median=me,std_mean=sm,CV=cv,CSS=css,USS=uss,R=R,R1=R1,Skewness=g1,Kurtosis=g2,row.names=1)
+ }
> w<-c(75.0,64.0,47.4,66.9,62.2,58.7,63.5,66.6,64.0,57.0,69.0,56.9,50.0,72.0)
> data_outline(w)
N Mean Var std_dev Median std_mean CV CSS USS
1 14 62.37143 60.81451 7.798366 63.75 2.084201 12.50311 790.5886 55253.32
R R1 Skewness Kurtosis
1 27.6 9.4 -0.4240699 -0.1252641