当記事は「統計学実践ワークブック(学術図書出版社)」の読解サポートにあたってChapter.24の「クラスター分析」に関して演習問題を中心に解説を行います。実際に分析などを行うにあたってよく出てくる手法なので、演習を通して抑えておくと良いと思われました。
本章のまとめ
演習問題解説
問24.1
$[1]$
表$24.2$を元に考えると、$3,4$が最も近く、$3,4$と$5$が最近隣法でも最遠隣法でも最も近い。よって、$3,4$に$A, C$が対応し、$5$に$F$が対応することがわかる。次に相互に近いのが$1-2$であり、これが$D, E$に対応することがわかる。また、$3,4,5$と$6$間は最近隣法だと$2.7$、最遠隣法だと$4.6$が対応する一方で、$3,4,5$と$1,2$間は最近隣法だと$2.5$、最遠隣法だと$5.6$が対応する。よって、最近隣法は$(b)$、最遠隣法は$(a)$が対応する。
また、番号とアルファベットの対応は下記であることもわかる。
1,2: D,E
3,4: A,C
5: F
6: B
$[2]$
下記を実行することで計算することができる。
import numpy as np
X = np.array([[7.7, 5.8, 7.7], [10.1, 5.9, 7.3], [4.9, 4.1, 7.9], [4.8, 5.0, 9.0], [6.4, 3.7, 8.0], [4.0, 5.2, 11.6]])
x1_average0 = np.array([9., 6., 7.])
x2_average0 = np.array([5., 5., 10.])
sample_x1 = np.sum((X-x1_average0)**2,axis=1)>=np.sum((X-x2_average0)**2,axis=1)
sample_x2 = np.sum((X-x1_average0)**2,axis=1)<np.sum((X-x2_average0)**2,axis=1)
x1_average1 = np.mean(X[sample_x1,:],axis=0)
x2_average1 = np.mean(X[sample_x2,:],axis=0)
print("average x1: {}".format(x1_average1))
print("average x2: {}".format(x2_average1))
・実行結果
> print("average x1: {}".format(x1_average1))
average x1: [ 5.025 4.5 9.125]
> print("average x2: {}".format(x2_average1))
average x2: [ 8.9 5.85 7.5 ]
参考
・準1級関連まとめ
https://www.hello-statisticians.com/toukeikentei-semi1