用R語言做數據分析——描述統計量

R語言 CSS 科技 數據分析和挖掘 2017-04-25

統計分析分為統計描述和統計推斷兩個部分,統計描述是通過繪製統計圖、編制統計表、計算統計量等方法來表述數據的分佈特徵,它是數據分析的基本步驟,也是進行統計推斷的基礎。這裡結合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

相關推薦

推薦中...