このページでは, 質的データの分析方法について簡単に紹介する. 使用するデータは, 過去のあるクラスでの授業開始時アンケートの一部である. これが “~/Documents” というフォルダに「data01.csv」という名前で保存されているとする.
R(もしくはRStudio)を起動し,setwd
関数で作業用フォルダを指定する.
setwd("~/Documents")
その後,csvファイルを read.csv
関数で読み込み,data
という名前に格納する.
data <- read.csv("data01.csv",header=TRUE)
<-
は左矢印を意味し,read.csv
の結果を data
に代入するという意味である. また,header=TRUE
はヘッダ行(変数名が書かれた行)があることを意味する.
読み込んだデータの先頭の方を確認しておこう.
head(data)
## Q6 Q7
## 1 はい はい
## 2 いいえ はい
## 3 いいえ いいえ
## 4 いいえ いいえ
## 5 いいえ いいえ
## 6 はい いいえ
きちんとデータが読み込めていることがわかった.
次に,Q6(サークルに入っているかどうか)について, table
関数で度数分布を作成して,table.q6
にその結果を格納してみる.
table.q6 <- table(data$Q6)
table.q6
##
## いいえ はい
## 55 36
1行目で結果を代入し,2行目でそれを画面に出力している. data$Q6
というのは,data
というデータの中の Q6
という変数を指す.
これを円グラフにするには pie
関数を用いる.
pie(table.q6)
この図だと3時の角度からスタートしていて見にくいかもしれない. その場合,clockwise=TRUE
というオプションを加えるとよい.
pie(table.q6, clockwise=TRUE)
なお,TRUE
は常に T
という1文字でも代用できる. このように,R の関数には様々なオプションがあり, グラフなどの出力を自由に変更することができる. 例えば色を変えるには col
を用いる.ここでは詳細は省く.
同様に,barplot
で棒グラフを描くことができる.
barplot(table.q6)
さらに,Q6(サークルに入っているかどうか)とQ7(アルバイトをしているかどうか)の2変数に関連があるかを調べてみよう.
table
関数で分割表を作成することもできる.これを cross
に格納する.
cross <- table(data$Q6,data$Q7)
cross
##
## いいえ はい
## いいえ 35 20
## はい 19 17
表側が Q6,表頭が Q7 である(table
関数に入れた順である). この分割表をパーセントに直すときには prop.table
関数を用いるとよい.
prop.table(cross)
##
## いいえ はい
## いいえ 0.3846154 0.2197802
## はい 0.2087912 0.1868132
prop.table(cross,1)
##
## いいえ はい
## いいえ 0.6363636 0.3636364
## はい 0.5277778 0.4722222
prop.table(cross,2)
##
## いいえ はい
## いいえ 0.6481481 0.5405405
## はい 0.3518519 0.4594595
上は順に,総パーセント,行パーセント,列パーセントの表である.
帯グラフで表現するには,再び barplot
関数を用いる. 例えば,列パーセントの表を帯グラフにしてみる.
ptable <- prop.table(cross,2)
barplot(ptable)
行パーセントの表を帯グラフにするときは,このままではうまくいかない.
ptable2 <- prop.table(cross,2)
barplot(ptable2)
ここでは,t
関数で表のタテヨコをひっくり返して作っておく.
barplot(t(ptable2))
モザイクプロットという図を用いることもできる.詳細は略す.
mosaicplot(cross)
ファイ係数とオッズ比のみ説明する.
ファイ係数は簡単な計算で求めることも可能だが, vcd
パッケージの assocstats
関数などを用いることもできる. このパッケージは R のデフォルトのパッケージ集にはないので, インストールする必要がある.インストールには install.packages("vcd")
とすればよい. この作業は一度だけやればよい.
library(vcd)
## Loading required package: grid
assocstats(cross)
## X^2 df P(> X^2)
## Likelihood Ratio 1.0598 1 0.30326
## Pearson 1.0633 1 0.30246
##
## Phi-Coefficient : 0.108
## Contingency Coeff.: 0.107
## Cramer's V : 0.108
このデータでオッズ比を用いるのが適切かは置いておいて, R での計算法について説明しておく. オッズ比も vcd
パッケージで計算可能である.
oddsratio(cross, log=FALSE)
## odds ratios for and
##
## [1] 1.565789
log=FALSE
を指定しないと,対数をとった後のオッズ比が出力される. なお,FALSE
は常に F
で代用できる.