読者です 読者をやめる 読者になる 読者になる

R入門 (3)

r stat lecture

 この記事は、R入門 (2) の続きです。以下、授業の補足資料です。

対応分析

 前回は、重回帰分析や判別分析を用いて、目的変数を含んだデータを解析しました。しかし、全てのデータに目的変数が含まれているわけではありません。そのような場合には、いくつかの手がかり(変数)に基づいて、個々のデータを似たもの同士でグループ化するという方法が取られます。まず、そのようなグループ化(クラスタリング)の手法の1つである対応分析を使ってみましょう。分析対象は、Rのデータセットの1つであるcaithとします。下記のbiplot関数で描いた散布図において、(大まかに言うと)近くに位置しているもの同士は類似した性質を持ち、遠くに離れているもの同士は異質な性質を持っていると解釈することができます。

# MASSパッケージの読み込み
library(MASS)
# サンプルデータを確認
caith

# 対応分析でデータをグループ化
corresp.result <- corresp(caith, nf = 2)
# 対応分析の結果を散布図に視覚化
biplot(corresp.result)

 練習問題として、Rにあらかじめ格納されているデータセットであるUSJudgeRatingsを使って、対応分析を行ってみましょう。このデータは、以下のように確認することができます。

# サンプルデータを確認
USJudgeRatings

クラスター分析

 次に、同じくグループ化手法の1つであるクラスター分析を実行してみましょう。この手法では、(基本的には)行のデータと列データのいずれか一方のみがグループ化され、その結果をデンドログラムと呼ばれる形式で視覚化されます。デンドログラムでは、図中の線をたどってあるデータから別のデータに行く場合に、その線が短ければ短いほど、その2つのデータが似ているということを示しています。以下の例では、USJudgeRatingsの行データと列データのそれぞれに対して、クラスター分析を実行しています。

# 行データ間の距離(非類似性)を計算
d <- dist(USJudgeRatings)
# クラスター分析
hc <- hclust(d)
# 結果をデンドログラムで視覚化
plot(hc, hang = -1)

# 列データ間の距離(非類似性)を計算
USJudgeRatings.2 <- t(USJudgeRatings) # データの行と列を入れ替え(転置)
d.2 <- dist(USJudgeRatings.2)
# クラスター分析
hc.2 <- hclust(d.2)
# 結果をデンドログラムで視覚化
plot(hc.2, hang = -1)

 練習問題として、小説の中で使われているアルファベットの頻度を用いて、書き手による文体の違いを分析してみましょう。使用するデータセットは、caパッケージのauthorです。インストールの手順は、以下のとおりです。

# caパッケージのインストール
install.packages("ca", dependencies = TRUE)
# caパッケージの読み込み
library(ca)
# サンプルデータを確認
data(author)
author

ファイルの読み込み

 ここまでは、Rにあらかじめ格納されているデータを分析してきました。しかし、csv形式で保存した独自のデータを分析したい場合もあるでしょう(csv形式のファイルの作成方法については、こちらを参照)。そのようなときは、以下のようにします。

# 手許にあるcsvファイルの読み込み(Windowsの場合)
dat <- read.csv(choose.files()) # 行と列のラベルがついていないとき
dat <- read.csv(choose.files(), row.names = 1) # 行ラベルだけがついているとき
dat <- read.csv(choose.files(), header = TRUE) # 列ラベルだけがついているとき
dat <- read.csv(choose.files(), row.names = 1, header = TRUE) # 行ラベルと列レベルの両方がついているとき

 練習問題として、同志社大学金明哲先生がこちらで公開されている泉鏡花、岡本綺堂、島崎藤村の読点の打ち方のデータをデスクトップに保存し、データのラベルのつけ方に合った方法で、そのファイルをRに読み込みなさい。

広告を非表示にする