R語言數據分析系列六


R語言數據分析系列六

上一節講了R語言作圖,本節來講講當你拿到一個數據集的時候怎樣下手分析,數據分析的第一步。探索性數據分析。

統計量,即統計學里面關注的數據集的幾個指標。經常使用的例如以下:最小值,最大值,四分位數,均值,中位數,眾數,方差,標准差。極差,偏度,峰度

先來解釋一下各個量得含義,淺顯就不說了,這里主要說一下不常見的

眾數:出現次數最多的

方差:每一個樣本值與均值的差得平方和的平均數

標准差:又稱均方差,是方差的二次方根。用來衡量一個數據集的集中性

極差:最大值與最小值僅僅差

偏度:相對於正態分布而言假設波峰出如今左邊,就表明長尾出如今右邊。成為右偏態(正偏態)偏度值>0,分布反之為左偏太(負偏態)偏度值<0

峰度:也是相對於正太分布的。正態分布的峰度為3。假設峰度>3圖形越胖,越矮。稱為厚尾。峰度<3 圖形越瘦,越高,稱為瘦尾

 

本節數據集:

我們採用MASS包的Insurance數據集,該數據集為某保險公司的車險數據。

"District"  "Group"    "Age"      "Holders"  "Claims" 

按列一次表示:家庭住址區域。投保汽車排量,投保人年齡,投保人數量,要求索賠的數量

安裝包與載入數據集:

install.pacakges('MASS') # 安裝包
library(MASS) #載入包
data(Insurance) # 載入數據集
ins <- Insurance #拷貝一份數據


 

探索行數據分析

 R包自帶的函數summary能夠給出數據的概括:

summary(ins)

District   Group       Age        Holders            Claims     

 1:16    <1l   :16   <25 :16   Min.   :  3.00   Min.   : 0.00 

 2:16    1-1.5l:16   25-29:16   1st Qu.: 46.75   1st Qu.:  9.50 

 3:16    1.5-2l:16   30-35:16   Median : 136.00   Median : 22.00 

 4:16    >2l   :16   >35 :16   Mean   : 364.98  Mean   : 49.23 

                                 3rd Qu.:327.50   3rd Qu.: 55.50 

                                 Max.   :3582.00  Max.   :400.00

 

我們發現對於因子類型向量該方法給出了頻度分布,對於連續型變量該方法給出了,最小值。第一四分位數。中位數,均值,第三四分位數,最大值

從結果中我們能夠看到Holders列的數據中位數明顯遠小於均值,這說明這個數據集是個偏數據集,總體數據集中在3——327.5之間。我們能夠通過點圖來繼續查看:

 

plot(ins$Holders)


 

點圖看的可能不是非常直觀,我們期望直觀的看到數據的變化,能夠通過直方圖來展示:

col <- c(brewer.pal(9,'YlOrRd')[1:9])
h<-hist(ins$Holders,breaks=12,col=col)
xfit <-seq(min(ins$Holders),max(ins$Holders),length=40)
yfit <-dnorm(xfit,mean=mean(ins$Holders),sd=sd(ins$Holders))
yfit <- yfit*diff(h$mids[1:2]) *length(ins$Holders)
lines(xfit,yfit,col='red',lwd=2)


 

 

方差與標准差

來計算Holders列的方差和標准差:

var(ins$Holders)
sd(ins$Holders)


事實上單變量的方差和標准差是沒有太大意義的。對照才干夠看出數據集的異同。

假設我們要分析用戶依照年齡分組后的統計值該怎樣計算呢。aggregate函數為我們提供了非常好的方法例如以下:

agg<-aggregate(ins[4:5],by=list(age=ins$Age),sd)
pie(agg$Claims,labels=agg$age)
agg


 

   age   Holders    Claims

1  <25  80.41797  16.55181

2 25-29 141.11414  22.63184

3 30-35 177.34353  24.23694

4  >35 941.66603 103.52228

 

相當於依照age列 group by 后的分組統計量。


偏度和峰度:

為了計算偏度和峰度我們能夠自己實現函數stat例如以下:

 

stat <- function(x,na.omit=F){
 if(na.omit)  x <- x[!is.na(x)]
  m<- mean(x)
  n<- length(x)
  s<- sd(x)
 skew <- sum((x-m)^3/s^3)/n
 kurt <- sum((x-m)^4/s^4)/n - 3
 return(c(n=round(n),mean=m,stdev=s,skew=skew,kurtosis=kurt))
}
 
sapply(ins[4:5],stat)


 

 

 

           Holders    Claims

n        64.000000 64.000000

mean    364.984375 49.234375

stdev   622.770601 71.162399

skew      3.127833  2.877292

kurtosis 10.999610  9.377258

 

我們能夠看到,Holders和Claims的偏度都是大於零的,那么就是說明,這兩個變量都是正偏態分布也就是說數據偏向左邊,而峰度值都非常高。那么說明這兩個變量都存在離群點。

同樣,我們可以使用的開箱圖觀察,本節已經介紹,這里不再贅述。

版權聲明:本文博主原創文章,博客,未經同意不得轉載。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM