1. 程式人生 > >【R統計】聚類分析

【R統計】聚類分析

聚類分析 1.10 上海 alt 雲南 12.1 average 6.5 mes

題目:

為了深入地了解我國人口的文化程度,利用1990年全國普查數據對全國30個省、直轄市、自治區進行聚類分析,分別選用了三個指標:(1)大學以上文化程度的人口占全部人口的比例(DXBZ);(2)初中文化程度的人口占全部人口的比例(CZBZ);(3)文盲半文盲人口占全部人口的比例(WMBZ)分別用來反映較高、中等、較低文化程度人口的狀況。(1)計算樣本的歐幾裏得距離,分別用最長距離法、均值法、重心法和ward法作聚類分析,並畫出相應的譜系圖,如果將所有樣本分為4類,試寫出個種方案的分類結果;(2)用動態聚類方法(共分為4類),給出相應的分類結果。

數據:

地區	DXBZ	CZBZ	WMBZ
北京	9.30	30.55	8.70
天津	4.67	29.38	8.92
河北	0.96	24.69	15.21
山西	1.38	29.24	11.30
內蒙古	1.48	25.47	15.39
遼寧	2.60	32.32	8.81
吉林	2.15	26.31	10.49
黑龍江	2.14	28.46	10.87
上海	6.53	31.59	11.04
江蘇	1.47	26.43	17.23
浙江	1.17	23.74	17.46
安徽	0.88	19.97	24.43
福建	1.23	16.87	15.63
江西	0.99	18.84	16.22
山東	0.98	25.18	16.87
河南	0.85	26.55	16.15
湖北	1.57	23.16	15.79
湖南	1.14	22.57	12.10
廣東	1.34	23.04	10.45
廣西	0.79	19.14	10.61
海南	1.24	22.53	13.97
四川	0.96	21.65	16.24
貴州	0.78	14.65	24.27
雲南	0.81	13.85	25.44
西藏	0.57	3.85	44.43
陜西	1.67	24.36	17.62
甘肅	1.10	16.85	27.93
青海	1.49	17.76	27.70
寧夏	1.61	20.27	22.06
新疆	1.85	20.66	12.75

  

腳本:

#原始數據
X<-data.frame(
   DXBZ=c(9.30, 4.67, 0.96, 1.38, 1.48, 2.60, 2.15, 2.14, 6.53, 1.47, 
          1.17, 0.88, 1.23, 0.99, 0.98, 0.85, 1.57, 1.14, 1.34, 0.79, 
          1.24, 0.96, 0.78, 0.81, 0.57, 1.67, 1.10, 1.49, 1.61, 1.85),
   CZBZ=c(30.55, 29.38, 24.69, 29.24, 25.47, 32.32, 26.31, 28.46,
          31.59, 26.43, 23.74, 19.97, 16.87, 18.84, 25.18, 26.55, 
          23.16, 22.57, 23.04, 19.14, 22.53, 21.65, 14.65, 13.85, 
           3.85, 24.36, 16.85, 17.76, 20.27, 20.66),          
   WMBZ=c( 8.70,  8.92, 15.21, 11.30, 15.39,  8.81, 10.49, 10.87, 
          11.04, 17.23, 17.46, 24.43, 15.63, 16.22, 16.87, 16.15, 
          15.79, 12.10, 10.45, 10.61, 13.97, 16.24, 24.27, 25.44, 
          44.43, 17.62, 27.93, 27.70, 22.06, 12.75),
   row.names = c("北京", "天津", "河北", "山西", "內蒙古", "遼寧", "吉林", 
                   "黑龍江", "上海", "江蘇", "浙江", "安徽", "福建", "江西", 
                   "山東",  "河南", "湖北", "湖南", "廣東", "廣西", "海南", 
                   "四川", "貴州", "雲南", "西藏", "陜西", "甘肅", "青海", 
                   "寧夏", "新疆")
)

#計算
Province<-dist(X) #計算歐幾裏得距離
hc1<-hclust(Province, "complete") #最長距離法
hc2<-hclust(Province, "average") #均值法
hc3<-hclust(Province, "centroid") #重心法
hc4<-hclust(Province, "ward") #Ward法

#輸出圖1
opar<-par(mfrow=c(2,1), mar=c(5.2,4,0,0))
plclust(hc1,hang=-1)
re1<-rect.hclust(hc1,k=4,border="red")
plclust(hc2,hang=-1)
re2<-rect.hclust(hc2,k=4,border="red")
par(opar)

#輸出圖2
opar<-par(mfrow=c(2,1), mar=c(5.2,4,0,0))
plclust(hc3,hang=-1)
re3<-rect.hclust(hc3,k=4,border="red")
plclust(hc4,hang=-1)
re4<-rect.hclust(hc4,k=4,border="red")
par(opar)


km<-kmeans(X, centers=4); 
sort(km$cluster) #排序便於輸出
##輸出如下##
#河北 內蒙古   江蘇   浙江   福建   江西   山東   河南   湖北   湖南   廣東 
#     1      1      1      1      1      1      1      1      1      1      1 
#  廣西   海南   四川   陜西   新疆   安徽   貴州   雲南   甘肅   青海   寧夏 
#     1      1      1      1      1      2      2      2      2      2      2 
#  北京   天津   山西   遼寧   吉林 黑龍江   上海   西藏 
#     3      3      3      3      3      3      3      4 

  

結果:

技術分享圖片

技術分享圖片

博文源代碼和習題均來自於教材《統計建模與R軟件》(ISBN:9787302143666,作者:薛毅)。

【R統計】聚類分析