新闻中心

用R语言做数据分析——描述统计量(用r语言分析统计案例)

2023-11-27
浏览次数:
返回列表

统计分析分为统计描述和统计推断两个部分,统计描述是通过绘制统计图、编制统计表、计算统计量等方法来表述数据的分布特征,它是数据分析的基本步骤,也是进行统计推断的基础。这里结合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

搜索