効果量とRについて勉強しよう

英語教育界隈の方々が全国英語教育学会で盛り上がっている最中、地元では有志6人で研究法についての勉強会を行いました。きっかけは、ある先生が統計手法について勉強しましょうと声をかけていただいたのがきっかけでした。勉強会は思った以上に中身の濃い充実したものになり、ぜひ冬季も開催したいと思わされました。

僕からはデータの視覚化と効果量、そしてRの簡単な使い方についてお話させていただきました。僕以外の先生方と基礎的な観点を確認しあうことができたことが収穫でした。Rや効果量について興味を持っていただけた先生も(多分)いらっしゃったと思いますので、紹介した資料をウェブ上にまとめておこうと思います。

効果量については水本篤先生、浦野研先生が大変わかり易く解説してくれています。Rやデータの視覚化という観点からは小林雄一郎先生、阪上辰也先生のお二方の資料が参考になります。また、水本・竹内(2011,2008)は効果量を勉強したい人にとっては広く知られていますのでまずはこちらを一読されることをおすすめします。 効果量に関する文献も下の資料の中で紹介されていますが、まずは下の発表資料をきちんと理解した上で専門書の方にとりかかるとより理解が深まるように思います。

浦野 研(2013)「有意性や効果量についてしっかり考えてみよう」外国語教育メディア学会第53回全国大会発表資料 http://www.slideshare.net/uranoken/let2013workshop

その他PDF形式やkeynote形式でも資料を配布されています。

http://www.urano-ken.com/blog/2013/08/05/let2013-workshop/

水本 篤(2012)「Excelを使った統計解析とグラフ化入門」2012年度大学英語教育学会(JACET)関西支部秋季大会企画ワークショップ発表資料

http://www.slideshare.net/AtsushiMizumoto/excel-15316169

水本 篤・竹内 理(2011)「効果量と検定力分析入門ー統計的検定を正しく使うためにーより良い外国語教育研究のための方法ー」『外国語教育メディア学会関西支部メソドロジー研究部会2010年報告論集ー』47-73頁

http://kuir.jm.kansai-u.ac.jp/dspace/handle/10112/6008

水本 篤・竹内 理(2008)「研究論文における効果量の報告のためにー基礎的概念と注意点ー」『英語教育研究』第31号 57-66頁 http://www.mizumot.com/files/EffectSize_KELES31.pdf

小林雄一郎(2013)「Rによる統計グラフ入門」LET中部支部第81回支部研究大会ワークショップ発表資料

http://www.slideshare.net/langstat/let-chubu-2013

小林雄一郎(2011)「Rによる成績データ分析入門」外国語教育メディア学会(LET)関西支部メソドロジー研究部会2011年度報告論集 81-91頁

http://www.mizumot.com/index/method2011.html

阪上辰也(2011)「統計解析環境「R」を利用した言語データの処理」外国語教育学会(LET)関西支部メソドロジー研究部会2011年度報告論集 8-14頁

http://www.mizumot.com/index/method2011.html

札幌R勉強会(2013)オンライン動画集

http://www.ustream.tv/channel/sapporo-r-2.

Read More

Rで一元配置分散分析(対応あり)

Rで繰り返しありの分散分析を行う方法。備忘録

======================================================
参加者  プリテスト  ポストテスト1  ポストテスト2
======================================================
参加者1    80     70          60
参加者2    30     40          50
参加者3    45     60           73
参加者4    77      89         20
参加者5    60     55          43

======================================================

仮にエクセルで上記のようなデータを作成したとします。エクセルでデータを整理した後にどのようにRで処理をしていくかをまとめます。

① エクセルのデータをcsv形式で保存(仮にdata.csvとします)(注意1参照)
② Rの作業ディレクトリに①を保存(注意2参照)
③ Rを開く

Rを開いた後は以下の手順でANOVAを実行します。

① csvデータをRに読み込む
② 各項目(プリテスト, ポストテスト1, ポストテスト2)のデータを取り出す。
③ 参加者のデータを取り出す
④ テスト結果をまとめる
⑤ 参加者データをまとめる
⑥ ANOVAを実行
⑦ 必要があれば多重比較を行う

では打ち込んでいきましょう。

#①文字列「データ」にcsvデータを読み込む

データ<-read.csv(“data.csv”,header=TRUE)

#[確認]データと打ち込むと以下のような出力が得られるはずです。

>データ

参加者  プリテスト  ポストテスト1  ポストテスト2

参加者1    80     70          60
参加者2    30     40          50
参加者3    45     60           73
参加者4    77      89         20
参加者5    60     55          43

#②文字列「プリテスト」にcsv上のプリテストのデータを読み込む

プリテスト<-データ$プリテスト

#②文字列「ポストテスト1」にcsv上のポストテスト1のデータを読み込む

ポストテスト1<-データ$ポストテスト1

#②文字列「ポストテスト2」にcsv上のポストテスト2のデータを読み込む

ポストテスト2<-データ$ポストテスト2

#③文字列「参加者」にcsv上の参加者を読み込む

参加者<-データ$参加者

#②と③が終わったらデータが入っているか確認してみましょう。

#④テストデータを一つにまとめます。

テストデータ<-c(プリテスト,ポストテスト1,ポストテスト2)
種類<-factor(c(rep(“プリテスト”,5),rep(“ポストテスト1″,5),rep(“ポストテスト2″,5)))

#⑤参加者データをまとめます。

参加者データ<-factor(rep(参加者,3))

#rep(“プリテスト”,5)の5はプリテストのデータの数が5個ありますから、5になります(参加者1〜参加者5までのデータの個数ですから、5になりますね)。100個あれば100になります。また、参加者データの中のrep(参加者,3)の3は項目数を指すと思ってもらって多分差し支えないです。項目は「プリテスト」「ポストテスト1」「ポストテスト2」の3つがありますから、3になります。これに仮に「ポストテスト3」が加わればrep(参加者,4)になります。

#⑥繰り返しありのANOVAを実行

summary(aov(テストデータ~種類+参加者データ))

#以下のような結果が返されます。

Df  Sum Sq  Mean Sq   F value   Pr(>F)

種類      2  481.6   240.80    0.6055   0.5690
参加者データ  4  1521.1     380.27    0.9561   0.4806
Residuals      8  3181.7    397.72

#⑦有意差が見られた場合、多重比較を実行します。仮にt-test with bonferroniを実行するときは

pairwise.t.test(テストデータ,種類,p.adjust.method=”bonferroni”,paired=TRUE)

でデータが得られます。(このデータでは有意差は見られないのでt検定は行いません)

注意①
Rでは、参加者の中に同じ参加者がいると同じ被験者とみなしてしまう傾向があるようです。以下の表を見てください。

======================================================
参加者  プリテスト  ポストテスト1  ポストテスト2
======================================================
太郎   80     70          60
次郎    30     40          50
花子    45     60           73
太郎   77      89         20
一郎   60     55          43

======================================================

仮に一人目の太郎さんと四人目の太郎さんは違う人だと仮定します。被験者数は5になりますね。しかし、上の⑤の参加者をまとめる段階でそのまま上の手順でデータをまとめてしまうと、一人目の太郎さんと四人目の太郎さんを同じ太郎さんと認識してしまい、被験者数が4と認識されてしまいます。

このような間違いを防ぐためには、あらかじめ被験者の名前を変更しておく必要があります。無難な方法は

======================================================
参加者  プリテスト  ポストテスト1  ポストテスト2
======================================================
参加者1    80     70          60
参加者2    30     40          50
参加者3    45     60           73
参加者4    77      89         20
参加者5    60     55          43

======================================================

のように、参加者1、参加者2….としておくとデータの重複は起こらないので大丈夫だと思います。

注意②
Macのエクセルでcsvデータを使用した場合、そのままRに読み込むと、

<94>팱<8e><31>に不正なマルチバイト文字があります

のようなエラーが返されます。そのため、こちらにあるような手法でcsvデータのエンコードを修正する必要があります。

上記の方法はANOVAを行う一つの手順に過ぎません。他にもRを使って様々な方法で分散分析を行うことができると思います。また、以上の内容は、以下の参考文献を参考にしましたが、手順の正当性、正確性については責任を持てませんので、自己責任で使用をお願いします。「こんな手順で分散分析ができるのか」くらいの参考程度にとどめておいてください。

参考文献

山田剛史・杉澤武俊・村井潤一郎(2008)『Rによるやさしい統計学』東京:オーム社

Read More

外部データ読み込み時に起こる、マルチ文字エラーの対処

備忘録。

エクセルで作成したcsvファイルを統計ソフトRで読み込む際に、「不正なマルチバイト文字があります」と出ることがあります。他のケースはわかりませんが、僕の今回のケースはテキストのエンコーディングが原因だったようです。excel for Mac 2008 でcsvファイルを作成すると、どうやらShift_JIS形式で保存されるようで、これがRでデータを取り込もうとする際にネックとなっているようでした。

対処法は以下のように行いました。まず、一度エクセルでcsvファイルを作成したあと、そのファイルをテキストエディタで開きます。僕はmiを使用しましたが、エンコーディング形式を変換できればなんでも良いと思われます。そして、エンコーディング形式をUTF-8に変換して保存し直しました。その後、Rに取り込むのに、read.csv()コマンドを入力すると無事取り込まれました。

久しぶりのRですが、まだ問題を抱えているので今日は長い夜になりそうです。

Read More