第8回(12月17日) Task Check and Weekly Assignment
課題 □ 多次元尺度法により,次の土地間距離から地図を復元せよ 1.旭山動物園 2.東京ディズニーランド 3.海遊館 4.レオマワールド 5.AQUAS 6.ハウステンボス 7.美ら海水族館 8.(任意の観光地)
サンプルコード。
まずRのもってる土地データを使います。
data(eurodist)
eurodist
## Athens Barcelona Brussels Calais Cherbourg Cologne
## Barcelona 3313
## Brussels 2963 1318
## Calais 3175 1326 204
## Cherbourg 3339 1294 583 460
## Cologne 2762 1498 206 409 785
## Copenhagen 3276 2218 966 1136 1545 760
## Geneva 2610 803 677 747 853 1662
## Gibraltar 4485 1172 2256 2224 2047 2436
## Hamburg 2977 2018 597 714 1115 460
## Hook of Holland 3030 1490 172 330 731 269
## Lisbon 4532 1305 2084 2052 1827 2290
## Lyons 2753 645 690 739 789 714
## Madrid 3949 636 1558 1550 1347 1764
## Marseilles 2865 521 1011 1059 1101 1035
## Milan 2282 1014 925 1077 1209 911
## Munich 2179 1365 747 977 1160 583
## Paris 3000 1033 285 280 340 465
## Rome 817 1460 1511 1662 1794 1497
## Stockholm 3927 2868 1616 1786 2196 1403
## Vienna 1991 1802 1175 1381 1588 937
## Copenhagen Geneva Gibraltar Hamburg Hook of Holland Lisbon
## Barcelona
## Brussels
## Calais
## Cherbourg
## Cologne
## Copenhagen
## Geneva 1418
## Gibraltar 3196 1975
## Hamburg 460 1118 2897
## Hook of Holland 269 895 2428 550
## Lisbon 2971 1936 676 2671 2280
## Lyons 1458 158 1817 1159 863 1178
## Madrid 2498 1439 698 2198 1730 668
## Marseilles 1778 425 1693 1479 1183 1762
## Milan 1537 328 2185 1238 1098 2250
## Munich 1104 591 2565 805 851 2507
## Paris 1176 513 1971 877 457 1799
## Rome 2050 995 2631 1751 1683 2700
## Stockholm 650 2068 3886 949 1500 3231
## Vienna 1455 1019 2974 1155 1205 2937
## Lyons Madrid Marseilles Milan Munich Paris Rome Stockholm
## Barcelona
## Brussels
## Calais
## Cherbourg
## Cologne
## Copenhagen
## Geneva
## Gibraltar
## Hamburg
## Hook of Holland
## Lisbon
## Lyons
## Madrid 1281
## Marseilles 320 1157
## Milan 328 1724 618
## Munich 724 2010 1109 331
## Paris 471 1273 792 856 821
## Rome 1048 2097 1011 586 946 1476
## Stockholm 2108 3188 2428 2187 1754 1827 2707
## Vienna 1157 2409 1363 898 428 1249 1209 2105
この距離行列からMDSによって地図を作ります。MDSは大きく分けて二種類あって,計量MDSと非計量MDSとよばれます。 前者が物理的な距離等,厳密な距離関係に向いている,後者が心理的な距離等,厳密さを少し緩めた仮定をもったデータに向いている,ととらえておけばいいでしょう。 今回のデータは実測値なので,前者のMDSを使います。関数はcmdscaleです。
result.cmd <- cmdscale(eurodist, 2)
plot(result.cmd, type = "n")
text(result.cmd, rownames(result.cmd))
距離データは素データから作ることも可能。 こちらのページ(http://www1.doshisha.ac.jp/~mjin/R/27/27.html)を参考に,アヤメのデータから距離行列を作って分析してみます。
data(iris)
summary(iris)
## Sepal.Length Sepal.Width Petal.Length Petal.Width
## Min. :4.30 Min. :2.00 Min. :1.00 Min. :0.1
## 1st Qu.:5.10 1st Qu.:2.80 1st Qu.:1.60 1st Qu.:0.3
## Median :5.80 Median :3.00 Median :4.35 Median :1.3
## Mean :5.84 Mean :3.06 Mean :3.76 Mean :1.2
## 3rd Qu.:6.40 3rd Qu.:3.30 3rd Qu.:5.10 3rd Qu.:1.8
## Max. :7.90 Max. :4.40 Max. :6.90 Max. :2.5
## Species
## setosa :50
## versicolor:50
## virginica :50
##
##
##
head(iris[, -5]) #ラベルの部分を除く記法
## Sepal.Length Sepal.Width Petal.Length Petal.Width
## 1 5.1 3.5 1.4 0.2
## 2 4.9 3.0 1.4 0.2
## 3 4.7 3.2 1.3 0.2
## 4 4.6 3.1 1.5 0.2
## 5 5.0 3.6 1.4 0.2
## 6 5.4 3.9 1.7 0.4
iris.dist <- dist(iris[, -5], method = "euclidean")
iris.cmd <- cmdscale(iris.dist)
plot(iris.cmd, type = "n")
text(iris.cmd, labels = iris[, 5], col = unclass(iris[, 5]))
非計量なMDSはMASSパッケージのisoMDS関数を使います。
library(MASS)
例えば次のようなデータがあったとします(数値は変えてくれて結構!)。
ARASHI <- data.frame(list(names = c("Ohno", "Sakurai", "Aiba", "Nino", "Matujun"),
speed = c("3", "5", "4", "4", "7"), looks = c("3", "3", "4", "5", "6"),
pretty = c("5", "4", "2", "6", "1")))
ここから距離行列を作ってプロットしてみましょう。
A.dist <- dist(ARASHI[2:4])
result.iso <- isoMDS(A.dist, k = 2)
## initial value 4.866698
## final value 0.000000
## converged
result.iso$stress #MDSの当てはまり評価
## [1] 2.504e-14
plot(result.iso$points, type = "n")
text(result.iso$points[, 1], result.iso$points[, 2], ARASHI$names)
このように,印象評定のデータから類似度を計算し,分析に用いることもできます。実際マーケティングなんかでは使われてたりします。
こちらのサイトも参考にしてみてください。 http://d.hatena.ne.jp/download_takeshi/20100410/1270921957