Rを使用して被験者間および被験者内のコントラストを持つ4 x 4混合ANOVAを実行する方法


11

Rの初心者ユーザーは、繰り返し測定ANOVAと格闘しています。

4レベルの被験者因子間の1つ(「グループ」と呼ばれる単一の変数でコード化)と4レベルの被験者因子内の1つ(4つの別々の変数「DV1」、「DV2」、「DV3でコード化」で構成されるデータセットがあります。 '、' DV4 ')。

私には次の目的があります。

  1. 全体的な反復測定ANOVAを実行します。
  2. カスタムコントラストを使用してグループを比較します(SPSSのLMATRIXコマンドの場合と同様)。
  3. カスタムコントラストを使用して、異なるレベルのDVを比較します(SPSSのMMATRIXコマンドなど)。
  4. 2)と3)を同時に組み合わせて、被験者内因子の特定のレベルで特定のグループのみを比較します。
  5. 合計がゼロにならないコントラストのセットを実行します。

SPSSでこれを問題なく行うことができることはわかっていますが、Rでこれを行う方法を明確に理解できません。このパッケージの一部がさまざまなパッケージでどのように機能するかを確認しましたが、まだそうしていませんこれがRの1つのプロシージャまたは一連の関連プロシージャ内でどのように機能するかは、これまでに確認されています

回答:


18

1つのソリューションのスケッチ(別のソリューションについては以下を参照):

  1. データは、SPSSのようなワイドフォーマット(つまり、行ごとに1つのサブジェクト)ではなく、ロングフォーマット(つまり、行ごとの値)である必要があり?reshapeます。reshapeパッケージを参照してください。これには、サブジェクトID(サブジェクトID)を示す変数が必要であることも含まれます。
  2. すべての要素(サブジェクトIDを含む)はクラス要素でなければなりません(strこれを確認するにはデータフレームで実行してください)。これを行わないと、結果は正しくありません。
  3. タイプIIIの二乗和を取得する場合は、デフォルトのコントラストを設定してコーディングを実行します。
    options(contrasts=c("contr.sum","contr.poly"))
  4. compund対称相関構造を使用しlmeて、nlmeパッケージから目的のモデルを指定します(事前にinstall.packages("nlme")and を介してパッケージをインストールしてロードしますlibrary(nlme))。この質問に対する承認された回答に対する回答、特に私のコメントを参照してください。あなたのケースでは次のようなものになる可能性があります(強く推奨されるサンプルデータを提供した場合、正しいコードを受け取っていたでしょう):
    my.anova <- lme(dv ~ group*within, data = your.df, random = ~1|id, correlation = corCompSymm(form = ~1|id))
  5. ジェネリックanova関数を使用してanovaテーブルを取得します(を参照?anova.lme):
    anova(my.anova)
    タイプIIIの二乗和を取得するにはanova、引数をにtype設定してコマンドを使用します"marginal"(これは、コントラストがエフェクトコーディングに設定されている場合にのみ機能します。ポイント3を参照):
    anova(my.anova, type = "marginal")
  6. タイプの適合オブジェクトlmeにより、さまざまな機能がコントラストを実行できるようになりました。最も柔軟な解決策(しかし、かなり不便な解決策)は、Lへの呼び出しの引数ですanova.lme(再度参照してください?anova.lme)。
    他のソリューションでもlme、引数として適合オブジェクトが必要です。gmodelsパッケージの関数
    も非常に柔軟です。このパッケージは機能も提供します。multcompのパッケージには、使用して、(しかし、あなただけの要因のいずれかを使用してコントラストを行うことができます)アルファ誤差調整を使用してコントラストを可能にする機能を。 新しく有望なアプローチはコントラストパッケージですが、これまでのところ、考えられるすべてのコントラストを備えているようには見えません。estimablefit.contrasts
    glht

代替的な解決策は、の組み合わせを介して、標準的なANOVAを使用することであるafexlsmeansに概説されるようにafex-vignette


(+1)素晴らしく、非常に有益な応答。ブログ投稿を待っています...
chl

?anova.lme私には機能せずmethods(anova)、非表示関数としてリストされています。
John

@ジョンnlme以前にロードしましたか?そうでない場合は、を実行するlibrary(nlme)と、機能するはずです。それでも機能しない場合は、install.packages("nlme")最初に。
Henrik

ああ...私はどうやら、lme4だけではなかった
John

@ヘンリック、ステップ5に進むことができますが、特定の被験者内因子レベルで特定の被験者間因子を比較するコントラストを設定できません。私が見たすべてのオンラインドキュメントは、被験者間要因のさまざまなレベルでのテストの違いに関係しています。サンプルコードはありますか?あなたがそれをカバーするつもりなら、私はただブログ投稿を待つことができます。
aquadhere '15
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.