データのお砂場(147) R言語、xclara、2変量で3クラスタ{cluster}

Joseph Halfmoon

ABC順に眺めてきた clusterパッケージのサンプル・データ・セットも末尾に到達です。xclaraとな。「残念なこと」に人工データみたいです。データ処理を学ぶ観点からは残念も何もないのですが、サンプル・データ・セットの向こう側にこの世の仕組み、世界の不思議を目撃したいお惚け老人にとっては残念。

※「データのお砂場」投稿順Indexはこちら

※使用させていただいている Rのversionは 4.3.1。RStudioは 2024.04.2+764 “Chocolate Cosmos” です。

Bivariate Data Set with 3 Clusters

今回のデータセット、xclara の解説ページは以下です。

https://stat.ethz.ch/R-manual/R-patched/library/cluster/html/xclara.html

無味乾燥な2変量のデータセット、3クラスタに分類できる3000点のデータみたいです。人工データだけに処理例も添付されています。人工データですが、考えるべきところはいろいろありーの。だいたい、順番に1000データづつ3つに分類できるような書きぶりでプロット始めたりしてますが、みてみればそうでもないことが直ぐに分かります。上記ドキュメントから1か所引用させていただきます。

Previously (before May 2017), it was claimed the three cluster were each of size 1000, which is clearly wrong.

解説ページもいろいろ苦労はあるみたいね。あざ~す。

まずは生データ

まずは生データをロードしてみます。3000点、2変数のシンプルなデータ・フレームです。xclaraRawData

「素のプロット」結果が以下に。xclaraRawDataPlot

人間がみれば、3つに「クラスタリング」できそ~ということは一目瞭然だと。

処理例に沿って処理してみる

今回は処理例も掲げられているので、それにそって処理してみます。まずは上記の「素のプロット」に対し以下の仮定にもとづいて色分けプロットしてます。1か所引用させていただきます。

## Visualization: Assuming groups are defined as {1:1000}, {1001:2000}, {2001:3000}

色分けプロット結果はこんな感じ。plot3Group

でもね、赤のところなどみると、黒や緑のポッチ(データ点)も結構まざっておる感じです。つまり、先頭から1000点づつ綺麗にクラスタ分けされているデータだというのは間違っていて、だいたい1000点(点数に凸凹あり)かつ、外れ値やらラベリングの間違えやら含まれるデータであるようです。人工的なデータといいつつちょいクセが入っておると。

上記の色分けプロットした後に、各クラスタの番号を上記グラフ中にバーンと表示しているのです。そこにトートツにテキストを表示するデータ点のID番号登場。実は後で実施する pam によるクラスタリングの結果をみないと分からないところです。こんな感じ。id

pam関数により3クラスタに分類した結果の medoid のID番号が 78, 1411, 2535なんであります。

それを使って上記のグラフにクラスタ名を上書きしたものが以下に。ただし、クラスタの色わけはpamの結果でなく、1000個づつのズボラなやつのままです。なお、処理例のままだと文字が見ずらくて老眼の目に入ってこないので、勝手改変して以下のような処理としています。

plot(xclara, cex = 3/4, col = rep(1:3, each=1000))
p.ID <- c(78, 1411, 2535)
text(xclara[p.ID,], labels = 1:3, cex=4, col=4)

結果が以下に。plot3GroupText

pam関数でクラスタリングした結果の方は、横方向にboxplotしています。xclaraBoxPlot

上記、黄色のマーカー引いておきましたが、どのクラスタにも2,3点、外れ値(もしかするとエラー値?)なんだかが含まれてます。

そこで以下のようにして外れ値を叩き出した上で、boxplotに境界を描いて明瞭化しているみたいです。xclaraBoxPlotMoreOPR

改良された箱ひげ図が以下に。xclaraBoxPlotMore

分かり易いのう。でも、人工データだからな。。。

データのお砂場(146) R言語、votes.repub、昔の共和党得票率{cluster}へ戻る

データのお砂場(148) R言語、USSouthPolygon、{colorspace}へ進む