!!!2. R による統計分析例 !!2.1 分散分析 !分散分析とは *「分散」(バラツキ)を分析する *データの「バラツキ」が、何らかの理由(要因)によるものなのか、偶然の誤差なのかを判定する。 *「要因」の数により、「一要因」から「三要因」まである。 *集めたデータが、一人の被験者からとった複数のデータ(「被験者内」) なのか、複数の被験者からとったデータ(「被験者間」)なのかを区別する。 *要因が複数ある場合は、「混合」(被験者内と被験者間)の場合もある。 !分散分析の流れ +分散分析をする +交互作用があるか ++ない場合=>主効果が有意か ++ある場合=>交互作用の分析 +++主効果は意味がなくなる +++単純主効果が有意か +3水準(条件)以上の有意な主効果もしくは交互作用があるか ++ない場合=>End +++2水準で有意な場合、差があるのはどこなのかは明白なので、多重比較する必要はない。 ++ある場合=>多重比較(二つずつ条件を組み合わせて、実際に有意な 差があるのはどこかを見つける) +++主効果が有意であった場合=>主効果の多重比較 +++交互作用が有意であった場合=>単純主効果の多重比較 !!2.2 [Rで分散分析はANOVA君できまり|http://riseki.php.xdomain.jp/index.php?ANOVA%E5%90%9B] *[js-STAR|http://www.kisnet.or.jp/nappa/software/star/]と同じ使い勝手・説明 **[田中・山際 (1992)『ユーザーのための教育・心理統計と実験計画法―方法の理解から論文の書き方まで』|http://www.amazon.co.jp/dp/4316329014]で勉強できる。 **[中野・田中(2012)『フリーソフトjs-STARで かんたん統計データ分析』|http://www.amazon.co.jp/dp/4774150193/] !anova君のインストール(Rで書かれたプログラムを読み込んで使う) +anovakun というソースコードをダウンロードする +Rのメニューからソースコードを読み込む source("http://riseki.php.xdomain.jp/index.php?plugin=attach&refer=ANOVA%E5%90%9B&openfile=anovakun_471.txt") !分散分析のタイプと分析の手順 分散分析のタイプ一覧 As(1要因参加者間) sA(1要因参加者内) ABs(2要因参加者間) AsB(2要因混合) sAB(2要因参加者内) ABCs(3要因参加者間) ABsC(3要因混合) AsBC(3要因混合) sABC(3要因参加者内) +分析のタイプを決める。 ++要因はいくつあるか ++それぞれの要因は「被験者内」か「被験者間」か(「対応のある」データか「対応のない」データか) ++それぞれの要因に「水準」はいくつあるか ++例 +++トレーニングをする前と後で成績が上がるか(一要因・被験者内・二水準) +++トレーニングをする前と後、そして、しばらくしてからも効果が残るか(一要因・被験者内・三水準) +++文学部、工学部、理学部で、英語の成績に差があるか(一要因・被験者間・三水準) +++漢字の画数が多い熟語と少ない熟語で読む時間に差があるか(一要因・被験者内・二水準) +++漢字の画数が多い熟語と少ない熟語で、実在する語と実在しない語とで、読む時間に差があるか(二要因・被験者内・2×2) +++漢字の画数が多い熟語と少ない熟語を読むときに、日本語母語話者と学習者とで差があるか(二要因・混合・2×2) +++漢字の画数が多い熟語と少ない熟語で、実在する語と実在しない語とで、日本語母語話者と学習者とで読む時間に差があるか(三要因・混合・2×2×2) +<<分析にタイプに合わせてデータを整形する>>。 +データを読み込む。 +分析のタイプに合わせて、コマンドを実行する。 ![ANOVA君の使い方|http://riseki.php.xdomain.jp/index.php?ANOVA%E5%90%9B%2FANOVA%E5%90%9B%E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9] 3.データファイルの作成 *ポイント **被験者内は、横に並べる **被験者間は、縦に並べる *js-STARの形式を参考に !<<3.1より古いRの場合、新しい今のanovakunだとうまく動かない:anovakunが使う関数が入っていない>> Error in ci.calc(dat = dat, design = design, factnames = factnames, cilmd = cilmd, : could not find function "anyNA" 古いR(3.0.1)で古いanovakun(4.3.3)だと大丈夫なんだけど、、、  ↓この一行をコピペしてanyNA()が使えるようにしてください。 (Thanks to 阿部君) anyNA = function(x) {any(is.na(x))} !分析の実例「三つのクラスで、成績に差があるか?」 *対応の==<<ある>>==ないサンプルの場合:{{ref threeclasses.xlsx}}を例に *ポイントは、データをどういうフォーマットで並べた表を用意するか。 **対応のない三つのクラス間なので、被験者間 ***縦に並べる ***左側にクラスの違いを示す記号を付けておく **要因は一つだけ **水準は三つ(三つのクラス) *データの形 a 76 a 85 a 81 a 41 a 73 a 66 a 88 a 78 a 85 a 47 a 71 a 62 a 89 a 84 a 74 a 78 a 78 a 75 a 93 a 57 a 61 a 79 b 56 b 44 b 46 b 73 b 74 b 58 b 72 b 74 b 85 b 68 b 67 b 68 b 73 b 68 b 83 b 80 b 76 b 81 b 81 b 77 b 53 b 57 c 54 c 67 c 73 c 57 c 74 c 74 c 65 c 82 c 74 c 82 c 66 c 80 c 60 c 78 c 69 c 82 c 71 c 63 c 60 c 75 c 72 c 68 *データをRに読み込んでおく **「クリップボード」にコピーしておいて **読み込むコマンド three <- read.table("clipboard") *anovakunの命令 > anovakun(three, "As", 3) *その結果 ---- [ As-Type Design ] This output was generated by anovakun 4.7.1 under R version 3.2.1. It was executed on Tue Jul 21 19:20:51 2015. << DESCRIPTIVE STATISTICS >> ---------------------------- A n Mean S.D. ---------------------------- a1 22 73.6818 13.3502 a2 22 68.8182 11.7823 a3 22 70.2727 8.1951 ---------------------------- << ANOVA TABLE >> --------------------------------------------------------- Source SS df MS F-ratio p-value --------------------------------------------------------- A 274.2121 2 137.1061 1.0706 0.3490 ns Error 8068.4091 63 128.0700 --------------------------------------------------------- Total 8342.6212 65 128.3480 +p < .10, *p < .05, **p < .01, ***p < .001 output is over --------------------/// ----