■ 分析前にやっておくこと
(1) Rのインストール
(2) 作業ディレクトリの確認と変更をしておく
(3) 作業ディレクトリにデータを入れておく
(4) 必要なパッケージをインストールしておく
■ 適合度検定
データの読み込み
書籍使用データ(右クリックで「別名で保存」して作業ディレクトリに入れる)
dat <- read.csv("ch11-1.csv", header=TRUE, fileEncoding="CP932") # fileEncoding="CP932"はMacの場合入れる
もしくは,Excel を開いてデータ範囲をコピーしてから読み込む
(クリップボードからのデータ読み込み)
Macの場合
dat <- read.table(pipe("pbpaste"), header=TRUE) #header=TRUEで変数名を含む,FALSEにすると含まない
Windowsの場合
dat <- read.table("clipboard", header=TRUE) #header=TRUEで変数名を含む,FALSEにすると含まない
適合度検定の実行
x <- table(dat) x n = sum(x) chisq.test(x)
※ 分割表を自分で入力する場合
x <- c(18, 24, 48) table(x) #頻度表 names(x) <- c("日本語","タイ語","中国語") x chisq.test(x)
効果量(w)の計算
library(pwr) # pwrパッケージ使用 P0 <- c(1/3, 1/3, 1/3) # 期待比率(3つのカテゴリーなので1/3) P1 <- x/n # 標本比率 w <- ES.w1(P0, P1) # 効果量wを求める関数 w # 効果量wの評価:大=0.5, 中=0.3, 小=0.1
多重比較(必要があれば)
z = (abs(頻度A-頻度B)-1)/sqrt(頻度A+頻度B) でz値からpを計算。
# カテゴリー1とカテゴリー2の比較 z = (abs(18-24)-1)/sqrt(18+24) p = pnorm(z, lower.tail=FALSE)*2 p # カテゴリー1とカテゴリー3の比較 z = (abs(18-48)-1)/sqrt(18+48) p = pnorm(z, lower.tail=FALSE)*2 p # カテゴリー2とカテゴリー3の比較 z = (abs(24-48)-1)/sqrt(24+48) p = pnorm(z, lower.tail=FALSE)*2 p # 上記で計算されるp値が 0.0167以下(0.05/3)なら有意差あり
多重比較の効果量が必要であれば,js-STAR の「1×2表(正確二項検定) 」を
使用し,Rプログラムで出力されるコードをコピーアンドペーストすればよい。
■ 独立性の検定
データの読み込み
書籍使用データ(右クリックで「別名で保存」して作業ディレクトリに入れる)
dat <- read.csv("ch11-2.csv", header=TRUE, fileEncoding="CP932") # fileEncoding="CP932"はMacの場合入れる
もしくは,Excel を開いてデータ範囲をコピーしてから読み込む
(クリップボードからのデータ読み込み)
Macの場合
dat <- read.table(pipe("pbpaste"), header=TRUE) #header=TRUEで変数名を含む,FALSEにすると含まない
Windowsの場合
dat <- read.table("clipboard", header=TRUE) #header=TRUEで変数名を含む,FALSEにすると含まない
独立性の検定の実行
dat <- dat[,-1] # 一列目の参加者氏名以外を指定 x <- table(dat) x chisq.test(x) #イエーツの補正あり chisq.test(x, correct=F) #イエーツの補正なし fisher.test(x, workspace=3000000) #フィッシャーの正確確率検定
※ 分割表を自分で入力する場合
x <- matrix(c(8, 24, 20, 18), ncol=2, byrow=T) rownames(x) <- c("女", "男") # 行の名前をつける colnames(x) <- c("効果なし", "効果あり") # 列の名前をつける x chisq.test(x) #イエーツの補正あり chisq.test(x, correct=F) #イエーツの補正なし fisher.test(x, workspace=3000000) #フィッシャーの正確確率検定
効果量(w)の計算
library(vcd) # vcdパッケージ使用 assocstats(x) # 効果量wの基準:大=0.5, 中=0.3, 小=0.1
残差分析
res <- chisq.test(x) # 検定結果を代入 res$expected # 期待値 res$residuals # 標準化残差 # 調整済み標準化残差の算出 res$residuals/sqrt(outer(1-rowSums(x)/sum(x), 1-colSums(x)/sum(x)))
調整済み標準化残差の絶対値が1.96を超えると,そのセルの頻度は
5%水準で有意に偏りがあるということになる。
群ごとの多重比較や効果量が必要であれば,
js-STAR の「i × j 表(カイ二乗検定)」を使用し,Rプログラムで
出力されるコードをコピーアンドペーストすればよい。
■ Rcommanderを使う場合
library(Rcmdr) # Rcommanderパッケージの読み込み
コンソールでデータの読み込みができている場合は,
<アクティブデータセットなし>をクリックし,datを選択。
参照 Rコマンダーでデータを読み込む場合
適合度検定
(1) データが数字で入力されている場合には,因子の型に変更する。
[データ]→[アクティブデータセット内の変数の管理]→[数値変数を因子に
変換]で,「変数」を選び,「因子水準」は「数値で」にチェックを入れ,
変数の上書きをする。
(2) [統計量]→[要約]→[頻度分布]を選択し,「カイ2乗適合度検定」に
チェックを入れる。Factor levels は3つのカテゴリーなので,1/3のままでOK。
独立性の検定
(1) データが数字で入力されている場合には,因子の型に変更する。
[データ]→[アクティブデータセット内の変数の管理]→[数値変数を因子に
変換]で,「変数」を選び,「因子水準」は「数値で」にチェックを入れ,
変数の上書きをする。
行と列の変数を選び,独立性のカイ2乗検定と
フィッシャーの正確検定にチェックを入れて,OKをクリック。
※ 適合度検定,独立性の検定ともに,効果量の計算や多重比較を
Rコマンダーで行うことはできないので,js-STAR を使用し,
「Rプログラム」に出力されるコードをコンソールに
コピーアンドペーストすればよい。