数学的には反復測定分散分析はタイプIII平方和というものを計算します。設定しないと正しいタイプIII平方和を計算してくれないため、この設定が必要となります。contr.sum)のようにlist内で指定します。行う時はcarパッケージのAnova関数を使います。res(resultの略、何でも良い)という変数名に結果を入れます。FALSEと入れるとEZRと同じ結果が表示されます。FALSE)行が長くて大変ですが実は色の部分以外はコピペ可能です。(被験者間要因があればまた変わります。次回記事で紹介します)結果はまずMauchlyの球面仮定を確認し、有意差がなければ上、あれば下をチェックします。sex→握力は性別により変化するtime→握力は時間経過により変化するsex:time→交互作用(時間経過に伴う握力の改善の程度は男女で異なるか)結果はEZRと同じになりました。4.まとめ今回は2要因以上ある反復測定分散分析を行いました。前回の記事との違いは被験者間要因があるかどうかでした。設定が必要になりますので注意が必要です。前回・今回はEZRと同じ方法のcarパッケージのAnova関数を使いました。してもコードが長くなってしまいます。RにはのANOVA君という分散分析に特化した非常に有名なスクリプトがあります。次回はANOVA君を使った分散分析を紹介します。(repeated-measures-ANOVA)を行う方法1(2019年11月24日修正:8の2のfactor関数を修正しています)第4章は統計を扱います。今回も「シロート統計学」のハルさんとコラボレーションすることとなりました。シロート統計学はEZRを使った統計分析をわかりやすく解説されています。第4章はシロート統計学で使われていたEZRをRで行うとどうなるのか?といった視点で進めていきます。今回使うデータもハルさんのサイトと同じものを使わせでいただく事になりました。それぞれ見比べることで参考にしてみてください!今回は繰り返しのある一元配置分散分析を紹介しますまず繰り返しのある一元配置分散分析(ANOVA)についてはハルさんのサイトをご参照ください。1.準備〜4.データの読み込みまでは【4-1】Rでt検定を行う方法と全く同じ流れになります。1〜4まででわからない部分があれば確認してみてください。第4章は毎回ExcelデータをダウンロードしてRを使うのでプロジェクトで管理して行うことを勧めています。ここではR練習というプロジェクトを作り、Excelファイルを入れるためのdataフォルダを作っています。これを前提に次から進めていきます。次にRのコードを書くためのスクリプトファイルを作ります。3.データのダウンロード【1-13】Rで読み込みやすいExcelファイルの作り方今回もハルさんのサイトのデータを使わせていただきます。実は分散分析を行う上で覚えておくと便利なExcelデータの作り方(列の並べ方)があります。詳細は【1-13】Rで読み込みやすいExcelファイルの作り方で紹介しています。デモデータ(反復測定分散分析)この章ではRを使ってダウンロードしています。リンクのアドレスをコピーdestfileは保存場所と保存のファイル名を指定します。実際のコードは以下になります。"の中)とdestfileのdata/以降を変更するだけでOKです。destfile)dataフォルダにダウンロードできたことを確認します。4.データの読み込みデータを読み込みます。今回は【4-0】第4章を進めていく上での準備で行った方法で進めます。Fileでデータを確認します。データが入っているセルを確認します。Datasetでデータを取り込みます。Sheet,Rangeを指定します。Name:ハルさんのサイトではgripでしたがgrip_rep_anovaとします(大文字・小文字は別物とされます)Sheet:このExcelは1つしかデータがないのでDefaultのままでOKRange:先ほど確認したB2:E32(実は今回のように表以外に余計なものがなければ空欄でもOK)Importボタンを押す前に右にあるコードをコピーしスクリプトファイルに貼り付けることも忘れずに行います。"B2:E32")View(grip_rep_anova)データが正しく入っていることを確認します。これでデータの取り込みは完成です。5.被験者間要因と被験者内要因と分散分析のデザインについて分散分析を行う上で大切なのが被験者間要因と被験者内要因についてです。被験者間要因はいわゆる対応のないデータのことで被験者全体をA法、B法の2つに割り振るといった方法です。同じ人がA法とB法を行うことはありません。被験者内要因はいわゆる対応のあるデータのことで同じ人が繰り返し測定します。被験者間要因は列の左側に、被験者内要因は列の右側に並べると後々分析しやすくなります。被験者間要因は縦に、被験者内要因は横につなげるとEZRで分析を行うには都合がいいです。仮に下のデータがあったとします。この並びが分散分析を行う上での基本的な形になります。繰り返し)あるのでABC被験者間要因と被験者内要因の間にsを付ける上記の場合はABsCデザインと言います。今回はsexの列を使いませんので繰り返しの1要因のみで分散分析を実施します。(sexの列を使った分析は次の記事で紹介します)被験者間要因がありませんので、今回はsAデザインということになります。繰り返しの群間に差があるかどうかを見たいということです。分散分析を行うにはデータの分布が正規分布であることが必要です。ハルさんのサイトに沿って正規分布の確認を行います。正規分布の確認は【4-10】Rで分散分析(一元配置分散分析)を行う方法と基本的には同じですが、今回は繰り返しの部分がwideデータになっています。longデータであれば今までの記事で紹介した方法でまとめて出すことができますが、今回は1つずつ確認します。今回ヒストグラムはgeom_histgram関数を使いますのでtidyverseパッケージを読み込みます。5とすることにします。次にハルさんのサイトでは正規性の検定を行っています。正規性の検討はshapriro.test関数を3つのカテゴリーそれぞれに行う必要があります。ここでもwideデータなので1つずつ行います。shapiro.test((grip_rep_anova$W0))shapiro.test((grip_rep_anova$W1))shapiro.test((grip_rep_anova$W2))すべて正規分布であることが棄却されませんでした。行うには主に2つの方法があります。1.carパッケージのAnova関数を使う(EZRもcarパッケージを使ってる)2.ANOVA君を使うANOVA君は井関龍太さんが作成した分散分析に特化したスクリプトです。使い方に特徴がありますが使えるようになると慣れると簡単でどの方法よりも詳細に分析できます。行うには次の方法になります。20191carパッケージを読み込むまずはcarパッケージを読み込みます。carパッケージはEZRをインストールする時に一緒にインストールされています。インストールしていなければ先にインストールします。install.packages("car")その後library関数で呼び出します。library(car)2被験者要因を指定するdata.frameを準備する今回のデータではsexの列は「MとFの2つのデータがある」とパソコンは読み取れますがW0,W1,W2はwideデータとなっているため「この3列が繰り返しのデータである」ことがパソコンは読み取れません。それがわかるためのものを2つ作ります。繰り返しの順番がわかるtimeというベクトルを作ります。このデータはfactor型である必要があるためfactor関数を使います。timeのデータをdata.frame型に変更したidataを作ります。指定しないとfacorは五十音順になります。使わないとmid→post→preの順番になってしまいます。factor関数に関しては【1-10】Rでよく使われる型について説明します。3lm関数でモデルを作る次に分析するためのモデルを作ります。モデルはlm関数を使います。model(名前は何でもいい)という変数名に結果を入れます。被験者内要因は3列になっているのでcbind関数でつなげます。被験者間要因は今回無いので1とします。あると別の設定も必要ですが次の記事で紹介します。4Anova関数で分散分析を実行する反復測定分散分析を行う時はcarパッケージのAnova関数を使います。res(resultの略、何でも良い)という変数名に結果を入れます。FALSEと入れるとEZRと同じ結果が表示されます。FALSE)行が長くて大変ですが実は色の部分以外はコピペ可能です。(被験者間要因があればまた変わります。次回記事で紹介します)このあたりはハルさんのサイトと同じです。EZRと同じ結果になります。9.多重比較を行うEZRの多重比較はEZR独自の関数を使っています。そのため今回はpairwise.t.test関数を使います。(被験者間要因があると使えないので注意!)ただpairwise.t.test関数はlongデータで行う必要があります。wideデータをlongデータに変えるにはgather関数、またはpivot_longer関数を使います。wideデータとlongデータの切り替えは【2-5】Rでデータを集計するのに便利なlongデータとgather関数で紹介しています。"◯◯")〇〇はここでは3つの方法を紹介します。"hochberg")10.まとめ今回は反復測定分散分析を紹介しました。今までの手法に比べると手続きが必要ですが、慣れるとコピペでもできるようになります。11.今回使ったコード今回使ったコードは以下になります。【1-13】Rで読み込みやすいExcelファイルの作り方RStudioではまずExcelやcsvファイル等を読み込む必要がありますが、そもそもExcelではRに読み込みやすい形とそうでない形があります。Excelの見栄え的には良くても実際にRで読み込もうとすると大変な手間になることもあります。今回はRで読み込みやすいExcelのポイントを紹介します。1.上や左に空白はないか?RでなにもせずにExcelファイルを読み込むとA1を始めとしてデータを読み込みます。Excelでかけ線を設定している場合B2から表をつくることがありますが、Rで読み込むときには一手間必要です。2.一番下に合計の行がないか?加えてもし一番下に合計や平均の列があったらそれも1データとして読み込んでしまうので注意が必要です。Excelは集計のために使い分析をRで行う場合はそもそも無いほうが安全です。Excelでも集計を行いたい場合は集計を別のタブで行うかピボットテーブルを使う方法があります。3.タイトル行が2行に渡っていないか?タイトル行が2行に渡っているとRではうまく読み込んでくれません。いう場合はセル結合されていることも多いです。いった場合も対処が必要です。タイトルが2行に渡った時の対処法に関しては以下の記事で説明しています。4.無駄な空間を作らない上記の図のように空欄だとパソコンは読み込んでくれません。列名をちゃんと書き、データは空欄にせず入力しましょう。入れていないか10,000などカンマ含む場合、Rで読み込むと数字ではなく文字として認識されます。取る方法はあります(parse_number関数)6.マイナスの値を▲にしていないか?-100を▲100にしていたらマイナスに直す必要があります。)にするにはstr_replaceなどの関数がありますが、手間を考えると−の方が手間が省けます。7.和暦か西暦か?和暦だと古いExcelではいつまでたっても令和になりません。計算や列の順番を考えると西暦のほうが後々対処しやすいです。加えて2001年を01年としないよう注意しましょう。8.tidyなデータか?データ分析を行う上で必要な考え方にtidy(タイディー:整然データ)なデータかどうかという考え方があります。tidyに関しては以下の記事が具体例も交えながらわかりやすく説明されています。これからデータ収集を考えている方は参考になると思います。9.被験者間要因は左側に、被験者内要因は右側に並べる先程tidyなデータの話がありましたが、実際にデータを取りExcelに打ち込む時に覚えておくと後で便利になる考え方があります。それは被験者間要因と被験者内要因です。被験者間要因はいわゆる対応のないデータのことで被験者全体をA法、B法の2つに割り振るといった方法です。同じ人がA法とB法を行うことはありません。被験者内要因はいわゆる対応のあるデータのことで同じ人が繰り返し測定します。加えて被験者間要因は列の左側に、被験者内要因は列の右側に並べると後々分析しやすくなります。被験者間要因は縦に、被験者内要因は横につなげるとEZRで分析を行うには都合がいいです。横に列が長くなりすぎて困る場合は全部縦にしても大丈夫です。あとで横に変換できます。この方法は特に分散分析を行う場合に便利になります。