データのお砂場(54) R言語、eurodist、欧州都市間の道のり(dist)とな?

Joseph Halfmoon

R言語のサンプル・データセットをABC順(大文字先)で端から眺めております。今回のデータセットは eurodist、ヨーロッパ都市間の距離です。以前にも似たデータをやってます。UScitiedDとな(第35回)以前のものは米国、今回は欧州。以前のものは直線距離、今回のものは道のりと。似ているようで違う、でも処理は一緒?

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

eurodist

今回のサンプルデータセットの解説ページは以下です。

Distances Between European Cities and Between US Cities

実は第35回で眺めた UScitiesD と「同じ」解説ページです。ただサンプルセット名のUScitiesDが大文字始まり、eurodistが小文字始まりだったので「泣き別れ」になっておりました。

データそのものは単純です。以下のヨーロッパ各都市間の距離(道路の道のりらしいです)のデータベース、単位kmです。

Athens                        アテネ
Barcelona                     バルセロナ
Brussels                      ブリュッセル
Calais                        カレー
Cherbourg                     シェルブール
Cologne                       ケルン
Copenhagen                    コペンハーゲン
Geneva                        ジュネーブ
Gibraltar                     ジブラルタル
Hamburg                       ハンブルク
Hook of Holland               フックオブホランド(フク・ファン・ホラント)
Lisbon                        リスボン
Lyons                         リヨン
Madrid                        マドリード
Marseilles                    マルセイユ
Milan                         ミラノ
Munich                        ミュンヘン
Paris                         パリ
Rome                          ローマ
Stockholm                     ストックホルム
Vienna                        ウィーン

大都市を連ねているようでいて、真ん中付近「フック・オブ・ホランド(フク・ファン・ホラント)」ってどこよ?お名前からするとオランダ付近?調べてみたら、海運と陸運の結節点?、ユーロポート(ロッテムダム港)の付近の町でした。物流の結節点間の距離ってことかい? また、西欧のみです。東欧は入っとりません。多分データセットのソースがベルリンの壁崩壊直後のものだからで、東欧の諸都市がEU圏に巻き込まれる前のもの。

そういえばベルリンの壁が崩壊した十数年後くらいに、ベルリンからフランクフルト(有名なアム・マインの方でなく、ポーランド国境のファン・デア・オーデル、半導体商売で行くところは大抵田舎の事業所)までドイツ人運転の車で往復したことがあります。皆さん200kmhくらいでアウトバーンを「普通に」走ってました。でも道路工事の場所があると速度落とせの標識があります。100kmh。運転席のドイツ人が一気に100kmhまで速度を落とすと歩いているような速さの感じ。錯覚です。その道でポーランドからやってくる大量のトラックとすれ違った記憶あり。後から後からトラックがやってきました。ドイツ人曰く、あれはみんな製造コストの安いポーランドの工場からドイツを素通りしてフランスへ行くんだ、と。すでにそのときにはEU圏の経済に東欧諸国も組み込まれてましたな。

以前の米国諸都市間の直線距離のサンプルデータセットの回は以下です。

データのお砂場(35) R言語、UScitiesD、米国都市間の直線距離とな

またそのときも今回も参照させていただいている同志社大の先生のページが以下に。

Rとクラスター分析(1)

まずは生データ

生データをロードしてみると以下のようです。形式は dist とな、距離行列というようなものみたいです。全体は下三角行列的に見えます(以下は三角形の左上半分くらい)EuroDistRawData0

このデータを素のまま plot に渡してみます。

plot(eurodist)

結果はこんな感じ。全部で210点の距離(km)データのプロットとなります。

plotEuroDistRawData

横軸のindexが各都市間の組み合わせを示しているみたい。上の生データをみると20行、20列なのだけれど、行と列に記されている都市名が1個ずれていることに注意です。都市数的には21。その2都市間の距離なので、「組み合わせ」的には以下のとおり210と。

Combination

 

ここで気になるのは dist というデータ形式の中身です。本体は上記のプロットのように1次元のリストみたいですが、属性(アトリビュート)がついております。EuroDistRawData1

SizeとLabelsとな。上記の情報があれば、1次元のリストを下三角に並べることが可能。なお、都市名はLabels属性に格納されておりこんな感じ。EuroDistRawData2

都市間の距離を表引き

都市間の距離を表引きしたいと思ったのですが、distという形式はクラスタ分析用?で、それそのままでは表引きしずらいと思いました。そこで単純 Matrix形式に変形してみました。こんな感じ。EuroDistMatrix0

上記で返還後のMatrixの左上隅を表示してますが、21x21のMatrixになってます。行、列ともに21都市名がお名前として入ってます。こんな感じ。EuroDistMatrix1

そして、上記のようにMatrixをお名前で引けば、都市間の道のり(km)が求まります。

クラスタ分析、デンドログラム

第35回で各種デンドログラムをしつこく描いているので、今回は2種類のみ描いてみました。

まずは「最遠隣法」furthest neighbor method。R言語でのメソッド名は「完全連結法」(complete linkage)です。

Eurodist.complete <- hclust(eurodist, method="complete")
plot(Eurodist.complete)

デンドログラムが以下に。これは結構、地域的に「わかりやすい」分類でないかい(個人の感想です。)

DendrogramComplete

つづいて、「最近隣法」nearest neighbor method、ここでのメソッド名は「単連結法」(single linkage)です。

Eurodist.single <- hclust(eurodist, method="single")
plot(Eurodist.single)

デンドログラムが以下に。分からないでもないけれど、個人的には腑に落ちない分類だな~。

DendrogramSingle

まあ、欧州の諸都市間の距離をクラスタ分析できた?ホントか?

データのお砂場(53) R言語、euro、1998年末のユーロ参加国の為替固定レートとな? へ戻る

データのお砂場(55) R言語、faithful、間欠泉(イエローストーン)の噴出時間とな へ進む