資料來源:多變量圖示法 | 切爾諾夫臉譜圖
圖形是對資料進行探索性研究的重要工具,在我們分析資料之前,往往習(xí)慣于把各資料在一張圖上畫出來。當變量較少時,可采用直方圖、條圖、餅圖、散點圖等方法,但當變量個數(shù)大于3時,就不能做以上的方法了。統(tǒng)計學(xué)家研究發(fā)明出了很多多維變量的圖示法,比如我們之前寫過的雷達圖(多維變量一圖搞定——帶你了解雷達圖),除此之外還有臉譜圖、星圖、散點圖矩陣等,今天跟大家一起學(xué)習(xí)一個比較好玩的圖:切爾諾夫臉譜圖。
切爾諾夫臉譜圖(chernoff faces)由Herman Chernoff 在1973發(fā)明, 以人臉的形式展現(xiàn)多種類型的數(shù)據(jù)。該想法的起因是因為人們對于人臉表情能夠毫不費力的識別差異。該法用眼、鼻子、嘴巴、表情等多種人臉表情表示數(shù)據(jù)維度。
繪制臉譜圖有兩個包,一個是aplpack,另外一個是TeachingDemos,今天用到的是aplpack包的faces()函數(shù)進行繪制。函數(shù)用法如下:
幾個常用參數(shù)的介紹:
xy:數(shù)據(jù)矩陣
which.row:定義繪制數(shù)據(jù)矩陣的哪幾行(哪幾個觀測)
face.type:取值范圍為0—2,0表示無顏色,1表示彩色,2表示時彩色的圣誕老人,默認為1。
cex:文字大小
main:題目
labels:將每個臉譜圖與標簽結(jié)合
臉譜圖采用15個指標代表面部特征:
1 臉的高度; 2 臉的寬度;3 臉型;4 嘴巴厚度; 5 嘴巴寬度; 6 微笑; 7 眼睛的高度; 8 眼睛寬度; 9 頭發(fā)長度; 10 頭發(fā)寬度; 11頭發(fā)風(fēng)格; 12 鼻子高度; 13 鼻子寬度; 14 耳朵寬度; 15耳朵高度
install.packages("aplpack")
library(aplpack)
所使用的數(shù)據(jù)集是美國犯罪數(shù)據(jù)
crime <- read.csv("http://datasets.flowingdata.com/crimeRatesByState-formatted.csv")
#查看數(shù)據(jù)集
View(crime)

該數(shù)據(jù)集共有52個觀測,8個變量,其中第一列是洲名。
faces(crime[,2:8],labels=crime_filled$state,cex=0.8)#由于第一列是洲,因此繪制的是第一列到第八列

一個人臉代表一個觀測,變量在臉譜圖中代表意義說明如下:
由于臉譜圖有15個指標,而crime只有7個變量,因此有些變量由2個指標表示??偨Y(jié)如下:
臉高,眼寬,耳朵高度表示murder(謀殺);
臉寬,頭發(fā)高度表示forcible_rape(強奸);
臉的結(jié)構(gòu),頭發(fā)寬度表示robbery(搶劫);
嘴巴高度,頭發(fā)發(fā)型表示aggravated_assault(惡意攻擊);
嘴寬,鼻子高度表示burglary(夜盜);
微笑,鼻子寬度表示larceny_theft(盜竊);
眼高,耳朵寬度表示motor_vehicle_theft(機動車輛盜竊)。
變量太多不利于觀察,選取其中9個變量:
faces(crime[1:9,2:8], labels=crime_filled$state,cex=1.2,face.type=0)

如上圖,我們很清楚地看到Arizona和California 的眼睛高度和耳朵寬度都比其他的大,證明再Arizona和California這兩個地方的motor_vehicle_theft案件比其他地方多。
畫彩色圖:
faces(crime[1:9,2:8], labels=crime_filled$state,cex=0.8)

結(jié)果解釋同上
#畫圣誕老人
faces(crime[1:9,2:8], labels=crime_filled$state,cex=1.2,face.type=2)

除此之外,切爾諾夫臉譜圖還可以與散點圖結(jié)合在一起
plot(crime[1:9,c(2,4)],bty="n")#先畫一個散點圖
a<-faces(crime[1:9,2:8],plot=FALSE)
plot.faces(a,crime[1:9,2],crime[1:9,4],width=0.5,height=16,cex =0.8)#切爾諾夫臉譜圖與散點圖結(jié)合

以上就是今天切爾諾夫臉譜圖的全部內(nèi)容,值得注意的是,用來繪制切爾諾夫臉譜圖的變量只能是連續(xù)變量,用其他類型的變量將會導(dǎo)致出錯無法繪制,當然了您可以進行數(shù)據(jù)轉(zhuǎn)換之后再繪制。
歡迎大家關(guān)注我的公眾號!
參考資料:
1.https://flowingdata.com/2010/08/31/how-to-visualize-data-with-cartoonish-faces/
2.R幫助文件


