都道府県を各コンビニ店舗数で分類してみた!!!(R言語、クラスター分析)

#はじめに
この記事は [R Advent Calendar 2021](https://qiita.com/advent-calendar/2021/rlang)の20日目の記事です。
よろしくお願いします。

#概要
今回の記事はR Advent Calendar 2021 3日目の記事である[都道府県の人口密度と相関が高いコンビニはどこだ!!!(R言語、無相関検定)](https://qiita.com/yuki01221013/items/b2d2bec8f49861b7bca8)の派生です。
前回はコンビニ各社の中で人口密度を相関の高いコンビニを見つけましたが、今回は各コンビニの店舗数から都道府県を分類するクラスター分析を行います。

#クラスター分析とは
**クラスター分析**(cluster analysis)とは、「類似のデータをいくつかのグループに分類する」多変量解析です。クラスター分析でデータを分類する難易度は、明確な分類基準の有無に依存します。
クラスター分析では、分類基準となる変数の数値(今回はコンビニ店舗数)を用いて、各都道府県が「どの程度似ているか」という**類似度**(similarity)または、「似ていないか」という**非類似度**(dissimilarity)を算出し、これらをもとに都道府県をグループ(クラスター)に分類します。


#準備(R編)
クラスター分析を行い、デンドログラム(樹形図)を作成するためにR言語を使用します。
R言語を使用するために統計解析用ソフトであるR、RStudioをダウンロードする必要があります。
どちらもフリーソフトで、下記のURLからダウンロードできます。

R　https://cran.r-project.org/
RStudio　https://www.rstudio.com/products/rstudio/download/#download

#準備(元データ編)
基本的には前回の記事と同じデータを使います。
元データの各都道府県別のコンビニ各社の店舗数は下記のURLを参照しました。

都道府県データランキング　https://uub.jp/pdr/m/c.html

実際に用いた元データは下のとおりです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253181/f93b48c3-ed4c-7ac0-f7db-b2d258717203.png)
RStudioに読み込むためにcsv形式に出力しておきましょう。

#デンドログラム作成(RStudio)
1. RStudioを立ち上げます。
   下のようなConsoleが出てくると思います。
   コマンドは赤い丸で示している「>」の隣に書きます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253181/a0e2af4c-b13c-95b3-b446-e2624a1977c6.png)

2.　RStudio作業用ディレクトリの確認もしくは変更します。
作業用ディレクトリ確認コマンド   

```
getwd()
```
作業用ディレクトリ変更コマンド  

```
 setwd("パス名")
```

作業用ディレクトリ確認コマンドをConsoleに打ち込みます。
作業用ディレクトリが分かるので、そのディレクトリにcsv形式の元データを入れておきます。
もしくは、setwd("パス名")で作業用ディレクトリを変更可能です。

3.　Rstudioに元データを読み込み
先にcsv形式の元データを作業用ディレクトリに入れておきます。
その後、Consoleに下記のコマンドを打ち込みます。

```
 (データ名)<-read.csv("(ファイル名)",header=T)
```
実際の画面は下のとおりです。
保存するデータ名を「data1001」にして、元データのファイル名は「data1001.csv」で保存していたので、下のようになります。
　　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253181/40a032ac-c9e0-a254-391c-bfe5b1237d33.png)
header=Tとなっていますが、これは元データの「都道府県」や「セブンイレブン」といったセルをデータと認識させないためです。
すると、元データがRStudioに取り込まれます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253181/1815a44f-973e-184e-86b5-709da1e42e42.png)

4.　非類似度の導出
データの非類似度を導出するコマンド　

```
dist()
```    
実際の画面は下のとおりです。
data1001の1列目は都道府県名を書いているので、data1001[,2:11]と指定します。
変数distanceに非類似度を代入しておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253181/efc6a805-7d88-c272-4e5f-b782b589b6bc.png)

5.　デンドログラム作成
デンドログラム作成コマンド　

```
hclust(distance, "ward.D2")
```
上記でdistanceに非類似度を代入しています。
ward.D2はクラスター間の距離算出方法の一つであるウォード法を示しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253181/6a3b0e37-750a-e938-3a46-2b3f35519edd.png)
plotより下のようなデンドログラムが作成できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253181/99fe6f2f-d3c5-132c-37ca-87cf2ff4317d.png)
しかし、これではどの数字がどの都道府県かわからないため、下の処理をします。
都道府県名を記入し、見やすくなります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253181/b0d303f2-6402-5882-df45-7453ddf85760.png)
これによりわかりやすいデンドログラムが作成できます。
![コンビニ_デンドログラム.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253181/5d695f28-1b70-ccab-f598-1d70706c6329.png)
都市と田舎で大きくわかれ、あんまり同じ地域で固まりすぎていないと確認できます。
デンドログラムを適当な距離で切断するために下記の関数を用います。
クラスター分割関数　

```
cutree()
```

分割するデンドログラムの高さを800とすると、下のとおりになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253181/020155d4-6b5b-2279-d88b-ee38572b3d9c.png)
h=をk=とすることで、分割するクラスターの個数に変更できます。
分割のイメージは下のとおりです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253181/beb4c474-62e4-3691-994d-a72831484e46.png)
下のおまけに色分けした日本地図があるので、ぜひそちらをどうぞ。

#まとめ
・都道府県を各コンビニ店舗数でクラスター分析しました。
・結果としては、地域で都道府県が固まるわけではなく、大きく分割すると、「都市」と「田舎」にわかれました。

#おまけ(日本地図に塗り分け)
上記の区分に基づいて都道府県を色分けしました。
用いたサイトは下記のとおりです。
　　
　　日本地図|白地図ぬりぬり　https://n.freemap.jp/tp/Japan

　　![20211210_142737117.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253181/8d81983b-2006-5c4a-5af4-11cd0eeec519.png)

#あとがき
今回は、前回のコンビニと人口密度から派生して、都道府県をコンビニで分類してみました。
都市と田舎に大きくはわかれました。
他のジャンルのチェーン店でやったりするのも面白そうだと思いました。
R Advent Calendar 2021の3日目と20日目の2日書かせていただきありがとうございます。

お読みいただきありがとうございました。