1 可視化探索
1.1 直方圖
這是一種簡單快速探索數據分布的方式。以Insurance數據集中過的“索賠量”變量Claims為例,觀察該變量的分布情況。
hist(Insurance$Claims,main="Histogram of Freq of Insurance$Claims")
結果分析:從圖中可以看出觀測樣本多集中與0-50組,一般開說,要求索賠人數大多小於50,且呈明顯下降趨勢,即索賠量越高的樣本量越少。
將參數freq設置為F可以繪制密度直方圖,以各組的概率密度來確定矩形高度,density參數用來為各矩形添加陰影,取值越大陰影越深。
hist(Insurance$Claims,freq=F,density=20,main="Histogram of Freq of Insurance$Claims")
lines(density(Insurance$Claims)) #添加概率密度曲線
hist(Insurance$Claims,breaks=20,labels=T,col="black",border="white",main="Histogram of Freq of Insurance$Claims")
結果分析:將breaks值設置為20來繪圖,labels,col,border這三個參數用來標注各矩形高度(頻率),更改矩形的填充和輪廓顏色。
也可以用str來獲取各組邊界值breaks,頻數counts,概率密度density,中間值mids,繪圖對象名xname,是否等距分組equidist,這些信息。
1.2 累積分布圖
該圖形中(x,y)的含義為:共有y(百分數)的數據小於或等於該x值,因此,數據中x最大值所對應的y值為1,即100%。
使用Himsc軟件包中的Ecdf()函數來繪制累積分布圖:
library(Hmisc)
Ecdf(Insurance$Claims,xlab="Claims",main="Histogram of Freq of Insurance$Claims")
結果分析:與上圖中的密度曲線相對比,累積分布圖中0-100部分的曲線斜率比較大,且0-50部分尤其陡峭,正對應於密度曲線0-100的高取值,這正是兩曲線間相互關系的體現。
繪制各年齡段Age中要求索賠人數Claims的累積分布圖:
data_plot<-with(Insurance,
rbind(data.frame(var1=Insurance$Claims[Insurance$Age=="<25"],var2="<25"),
data.frame(var1=Insurance$Claims[Insurance$Age=="25-29"],var2="25-29"),
data.frame(var1=Insurance$Claims[Insurance$Age=="30-35"],var2="30-35"),
data.frame(var1=Insurance$Claims[Insurance$Age==">35"],var2=">35")))
....
LT=c(1:4)
Ecdf(data_plot$var1,lty=LT,group=data_plot$var2,label.curves=1:4,col="red",xlab="Claims",main="Cumulative Distribution of Claims by Age")
Ecdf(Insurance$Claims,add=T)
#四個參數lty用於設置曲線的類型,實線或者虛線,group用於設置分許變量,這里及那個Age作為分組變量,label.curves用於標出按分組變量划分的各曲線組名,比如四個組別:<25、25-29、30-35和>35,add參數表示是否在上一個輸出圖形中添加圖形。
結果分析:Claims分組曲線與Claims總體曲線的基本趨勢大致相同,都在0-100區間比較陡峭,之后基本平緩,其前三組曲線都止於100左右,最后一組>35則一直延續到400左右,這說明年齡較大投保人的要求索賠量較高。
1.3 箱線圖
我們利用箱線圖探究在各年齡段Age中要求索賠人數Claims的分布情況。
boxplot(var1~var2,data=data_plot,horizontal = T,main="Distribution of Claims by Age",xlab = "Claims",ylab="Age")
結果分析:>35的組最大值在400左右,這說明年齡較大投保人的要求索賠量較高。
1.4 點陣圖
點陣圖於條形圖本質上是一樣的,也是用於呈現離散型變量各取值水平的分布情況,不同之處在於用點和背景網格線的形式代替條形來表示。