東京国際大学大学院心理データ解析おまけ

東京大学大学院農学生命科学研究科 大森宏

2011 年 1 月 24 日

東京国際大キャンパス景観写真の類似度(2009年度統計学調査)

 統計学の基礎受講者が景観画像のグルーピングをした結果をまとめて景観の類似度を R を用いて推定する. まず,グルーピングデータを ダウンロードして,R に読み込ませる. データは以下のようである.

  p1 p2    …    p54
1 3 1 4
2 4 4 2
50 5 14 1

 ここで,p1 から p54 は東京国際大学景観写真であり,1 から 50 は学生である.数字は,各学生 が景観画像をグルーピングして各グループに割り付けた結果である.

国際大写真グルーピングサイト


 このままでは解析しずらいので,学生ごとにグルーピング結果を 0 - 1 行列に変換する.すなわち,ある学生 が 54 景観を 7 つのグループに分けたとすると,54 × 7 の行列をつくり,第 i 景観が第 j グループに属している ときに 1 を割り付ける.

グルーピング 0 - 1 行列作成の R スクリプト
tg <- read.csv("koku09group.csv", header=T, row.names=1); tg # csv データ読み込み
mkmat <- function(wg){ # 0 - 1 行列を作成する関数の定義
n <- length(wg) # ベクトルの長さ(画像数)
maxg <- max(wg) # グループ最大値
ming <- min(wg) # グループ最小値(普通は1)
if(!ming){ # 最小値が 0 のときの処置
ming <- 1; maxg <- maxg+1; wg <- wg+1 # グループ数を 1 つ増やす
} #
gmat <- matrix(0, nrow=n, ncol=maxg) # n × maxg 行列(値は 0)
for(i in ming:maxg){ # グループごとの処理
ng <- (1:n)[wg == i] # グループ i に所属する行番号(画像番号)
gmat[ng, i] <- 1 # 上の行番号と i 列の値を 1 にする
} #
return(gmat) #
} #
w <- mkmat(tg[1, ]); w # 1 番目の学生のグルーピング行列
apply(w, 2, sum) # 各グループのメンバー数

 つぎに,景観間の類似度を推定する.いま,学生 i の 0 - 1 グルーピング行列を Gi と する.Gi' を転置行列とすると, 66 × 66 行列 GiGi' は同じグループに入っている景観どうしは 1, そうでない景観どうしは 0 を割り付けるので,学生 i による景観の類似度行列となる.よって,これを学生全体 で加え合わせた,
S = ΣiGiGi'
を景観の類似度行列とすることができる.

 対象間の類似関係もしくは非類似関係が与えられると, 多次元尺度法(MDS: Multi-Dimensional Scaling)により対象全体の構造が視覚化できる. これは,類似した対象どうしを近く,類似していない対象どうしを遠くに配置させることにより, 対象の布置を求める手法である.

東京国際大学景観画像の MDS の R スクリプト
n <- ncol(tg) # 画像の数
m <- nrow(tg) # 学生の数
S <- matrix(0, nrow=n, ncol=n) # 類似度行列の定義
for(i in 1:m){ #
w <- mkmat(tg[i, ]) # 学生ごとのグルーピング行列
S <- S + w %*% t(w) # 学生ごとの類似度行列を加える
} #
D <- max(S) - S # 非類似度行列への変換
tcmd <- cmdscale(D, k=4, eig=TRUE, add=TRUE) # 多次元尺度法(MDS)
tcmd$eig # MDS の固有値
x <- tcmd$points # MDS の座標を x に格納
dimnames(x) <- list(as.character(1:n), paste("MDS", 1:4, sep="")) # x の列と行の名前を定義
plot(x[,1:2], type="n") # 1軸と2軸
text(x[,1:2], rownames(x), cex=0.8) # 画像番号表示
title(main="東京国際大学景観画像の MDS による布置") #

国際大景観類似度マップ

川越景観写真の類似度(2010年度統計学調査)

グルーピングデータのダウンロード

川越景観写真 MDS の R スクリプト
tg <- read.csv("kawagoe.csv", header=T, row.names=1); tg	# 川越グルーピングデータ読み込み
収集した川越景観写真一覧
川越景観類似度マップ
川越景観写真撮影地点マップ

Copyright (C) 2010, Hiroshi Omori. 最終更新:2011 年 1 月 24 日