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的偏度都是大於零的,那么就是說明,這兩個變量都是正偏態分布也就是說數據偏向左邊,而峰度值都非常高。那么說明這兩個變量都存在離群點。
同樣,我們可以使用的開箱圖觀察,本節已經介紹,這里不再贅述。
版權聲明:本文博主原創文章,博客,未經同意不得轉載。
