このページでは, 質的データの分析方法について簡単に紹介する. 使用するデータは, 過去のあるクラスでの授業開始時アンケートの一部である. これが “~/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 で代用できる.