(1)学部によりテストの結果に有意な差があるかを調べる。
データはcsv形式で作成し、7_1_test_score.csvとする。以下はデータの内容。
法学部,文学部,理学部,工学部 75,62,65,52 61,60,60,59 68,66,78,44 58,63,52,67 66,55,59,47 55,53,66,53 65,59,73,58 63,63,64,49
Rに読み込む
score <- read.csv(file="7_1_test_score.csv", head=TRUE)
分散分析で利用するためにデータを変換する。
w_score$point <- c(score[,1], score[,2], score[,3], score[,4])
w_score$major <- c(rep("j", 8), rep("l", 8), rep("s",8), rep("i",8))
w_score$major <- factor(w_score$major)
変換したデータについて確認する
> w_score$point [1] 75 61 68 58 66 55 65 63 62 60 66 63 55 53 59 63 65 60 78 52 59 66 73 64 52 59 44 67 47 53 [31] 58 49 > w_score$major [1] j j j j j j j j l l l l l l l l s s s s s s s s i i i i i i i i Levels: i j l s
帰無仮説は学部によりテストのポイントに差はない。対立仮説は一つ以上の組み合わせで学部によりテストのポイントに差があるとする。
oneway.testを利用した1要因の分散分析を実行する。
> oneway.test(w_score$point ~ w_score$major, var.equal=TRUE) One-way analysis of means data: w_score$point and w_score$major F = 4.515, num df = 3, denom df = 28, p-value = 0.01052
ここでは分散が等質であることを仮定している。F値は4.515となった。自由度3/28であるときのp値は0.01052である。有意水準5%で帰無仮説が棄却される。よってテストのポイントは学部によって差がある。
aov()を使用してみる。
> w_score$aov<-aov(w_score$point ~ w_score$major) > summary(w_score$aov) Df Sum Sq Mean Sq F value Pr(>F) w_score$major 3 606.4 202.12 4.515 0.0105 * Residuals 28 1253.5 44.77
anova()を利用してみる
> w_score$anova <- anova(lm(w_score$point ~ w_score$major)) > w_score$anova Analysis of Variance Table Response: w_score$point Df Sum Sq Mean Sq F value Pr(>F) w_score$major 3 606.37 202.125 4.515 0.01052 * Residuals 28 1253.50 44.768 --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’
データの準備は,
score2 <- stack(score)
score2
とすると,簡単です。
ありがとうございます!こんな便利な関数があったのですね。