2016-05-28 11 views
10

aov(depvar~timevar+Error(id))aov(depvar~timevar+Error(id/timevar))の公式仕様の違いは何ですか?これら2つのバリエーションはわずかに異なる結果を生成します。Rのaov()エラー用語:bwエラー(id)とエラー(id/timevar)の違いは何ですか?

ここで同じ質問が表示されました。https://stats.stackexchange.com/questions/60108/how-to-write-the-error-term-in-repeated-measures-anova-in-r しかし、もっと適切な例でこれを繰り返したいと思います。ここで

は、私が作成した例です。

var=rep(NA,180) 
id=rep(1:20,each=180/20) 
group=rep(rep(1:2,each=9),180/(9*2)) 
time1=rep(rep(1:3,each=3),180/(3*3)) 
time2=rep(c(8,15,20),180/3) 

var[group==1&time1==1&time2==8]=runif(10,105,115) 
var[group==2&time1==1&time2==8]=runif(10,105,115) 
var[group==1&time1==1&time2==15]=runif(10,95,105) 
var[group==2&time1==1&time2==15]=runif(10,95,105) 
var[group==1&time1==1&time2==20]=runif(10,85,95) 
var[group==2&time1==1&time2==20]=runif(10,85,95) 

var[group==1&time1==2&time2==8]=runif(10,95,105) 
var[group==2&time1==2&time2==8]=runif(10,95,105) 
var[group==1&time1==2&time2==15]=runif(10,85,95) 
var[group==2&time1==2&time2==15]=runif(10,75,85) 
var[group==1&time1==2&time2==20]=runif(10,75,85) 
var[group==2&time1==2&time2==20]=runif(10,65,75) 

var[group==1&time1==3&time2==8]=runif(10,95,105) 
var[group==2&time1==3&time2==8]=runif(10,95,105) 
var[group==1&time1==3&time2==15]=runif(10,85,95) 
var[group==2&time1==3&time2==15]=runif(10,75,85) 
var[group==1&time1==3&time2==20]=runif(10,75,85) 
var[group==2&time1==3&time2==20]=runif(10,65,75) 

df=data.frame(id,var,group,time1,time2) 
df$id=factor(df$id) 
df$group=factor(df$group) 
df$time1=factor(df$time1) 
df$time2=factor(df$time2) 

AOVを実行する()この上(エラーによって若干異なる結果を取得します)長期仕様:

ちょうど1時間項について

> summary(aov(var~time1+Error(id),data=df)) 
Error: id 
     Df Sum Sq Mean Sq F value Pr(>F) 
     Residuals 19 958.4 50.44    
Error: Within 
     Df Sum Sq Mean Sq F value Pr(>F)  
     time1  2 7538 3769 30.41 6.72e-12 *** 
     Residuals 158 19584  124   

> summary(aov(var~time1+Error(id/time1),data=df)) 
Error: id 
     Df Sum Sq Mean Sq F value Pr(>F) 
     Residuals 19 958.4 50.44    
Error: id:time1 
     Df Sum Sq Mean Sq F value Pr(>F)  
     time1  2 7538 3769 211.5 <2e-16 *** 
     Residuals 38 677  18     
     --- 
    Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 
Error: Within 
     Df Sum Sq Mean Sq F value Pr(>F) 
     Residuals 120 18907 157.6  

または両方の期間(スペースのためにここに出力を入力しないでください。あなた自身で確認することができます):

summary(aov(var~group*time1*time2+Error(id/(group*time1*time2)),data=df)) 
summary(aov(var~group*time1*time2+Error(id),data=df)) 

どうしてですか?どちらが正しいのですか?

+2

この質問は本当にstats.stackexchange.comに属します。 – Chris

答えて

2

「古典的なANOVAのランダム効果」セクションで、それぞれの意味を解説するブログ記事です。

ブログからは、Errorという用語の「分割」とはどういう意味ですか?

aov(Y ~ Error(A), data=d)    # Lone random effect 
aov(Y ~ B + Error(A/B), data=d)   # A random, B fixed, B nested within A 
aov(Y ~ (B*X) + Error(A/(B*X)), data=d) # B and X interact within levels of A 

だからあなたの質問から、

aov(depvar~timevar+Error(id/timevar)) 

あなたはidからランダムな効果を持っているが、その後ちょうどidを取っている

aov(depvar~timevar+Error(id)) 

idレベル内にネストtimevartimevarを修正する意味します他の変数に制約のないランダムな効果として扱う。

出典:

Thishttp://conjugateprior.org/2013/01/formulae-in-r-anova/が同様に有用であることが分かるかもしれませんが、ANOVAを学ぶ上でいくつかの提言を持つ分散分析の上に行くいくつかのコードです。

0

aov(depvar~timevar+Error(id))aov(depvar~timevar+Error(id/timevar))の違いは、ランダムな効果としてtimevarを含めるかどうかにあります。

変数にランダムな効果を含めるには、複数の方法があります。また、aov(depvar~timevar+Error(id*timevar))またはaov(depvar~timevar+Error(id + timevar))を使用することもできます。これらのそれぞれは全く異なるものを意味しますが、データそのものの制約のために、同じデータセットに適用した場合によく似た結果が得られるため、混乱することがあります。

aov()で使用されるスラッシュ/は、nestingを示します。 /を使用すると、Rはそれを自動的にボトム変数のメインエフェクトとボトムとトップの間の相互作用に加えて展開します。たとえば、A/Bは自動的にA + A:Bに展開されます。これは、A*Bが自動的にA + B + A:Bにどのように展開されるかに似ていますが、ネストすると、ネストの変数はネストの外側に表示されません(つまり、Bの主な効果はありません)。

あなたは、この拡張は、あなたの出力で起こって見ることができます:

> summary(aov(var~time1+Error(id/time1))) 

Error: id 
      Df Sum Sq Mean Sq F value Pr(>F) 
Residuals 1 52.24 52.24    

Error: id:time1 
     Df Sum Sq Mean Sq 
time1 1 4291 4291 

Error: Within 
      Df Sum Sq Mean Sq F value Pr(>F) 
time1  1 1239 1238.7 10.19 0.00167 ** 
Residuals 176 21399 121.6     
--- 
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

Error用語はランダム効果を表します。 idのメインエフェクトは、idtime1の間の相互作用のためのものです。time1idにネストされています(Withinの基本的な残余用語であるError効果も得られます)。モデル、すなわち個々の観測結果自体のランダムな効果)。

データにはどのようなアプローチが適していますか?

これは、1)データが実際にどのように構造化されているか、2)実行するモデルによって異なります。注:構造または正しいモデルを決定するためにデータに対して実行できる決定的なテストはありません。これは計算的なものではなく、思考的な運動です。あなたが提供した例のモデルで

、あなたは結果varを持って、その後、変数groupidをグループ化しているように見えるものを、その後、2時間変数time1time2。各idは、1つのグループにのみ存在し、両方のグループにまたがっているわけではなく、IDがグループ内にネストされていることを示しています。

> table(group, id) 
    id 
group 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 
    1 9 0 9 0 9 0 9 0 9 0 9 0 9 0 9 0 9 0 9 0 
    2 0 9 0 9 0 9 0 9 0 9 0 9 0 9 0 9 0 9 0 9 

Iはidは、単一の参加者を指すと仮定します、そしてtime1time2上の9つの測定は、各参加者に被験者内試験(すなわち、各参加者がvarで9回測定しているので、これはrepeated measures design)。

のはvarを言わせ、それが具体的なようにするには、いくつかの問題解決タスクのスコアで、time1time2はそれぞれ、参加者は、問題と、彼らは問題を完了するために与えられている時間の量を研究するために許可されている分です。 time1time2が交差しているため、各参加者は各組み合わせの状況の下でタスクを9回完了します。

> table(time1, time2) 
    time2 
time1 8 15 20 
    1 20 20 20 
    2 20 20 20 
    3 20 20 20 
> table(time1, time2, id) 
, , id = 1 

    time2 
time1 8 15 20 
    1 1 1 1 
    2 1 1 1 
    3 1 1 1 

, , id = 2 

    time2 
time1 8 15 20 
    1 1 1 1 
    2 1 1 1 
    3 1 1 1 
(output truncated) 

参加者はグループ1の参加者の半分とおそらく研究が教室で実行されたグループ2の残りの半分で、グループでテストされており、グループ1は、1つのクラスであり、グループ2は、第二のクラスです。おそらく、グループアイデンティティは実際には関心のある変数ではありませんが、グループ間の相違に起因する不快な差異が存在する可能性があるため、モデルから除外しないでください。たとえば、最初の教室ではグループ1のメンバー全員にグループ2のメンバーよりも良いスコアを与えることができます。

スコア、ID、グループはすべてランダムな効果でなければなりませんtime1とtime2は固定された効果でなければなりません(モデル内の考え方が異なる場合は、同じデータに対して異なる可能性があります;たとえば、研究の質問に応じてグループを固定として考えることができます)。

モデルは、これはaov()を使用して、モデルの中で最も完全なバージョンになることを考える:

aov(var~time1*time2 + Error(group/id/(time1*time2)),data=df) 

ここでは出力です:

> summary(aov(var~time1*time2 + Error(group/id/(time1*time2)),data=df)) 

Error: group 
      Df Sum Sq Mean Sq F value Pr(>F) 
Residuals 1 771.7 771.7    

Error: group:id 
      Df Sum Sq Mean Sq F value Pr(>F) 
Residuals 18 243.8 13.55    

Error: group:id:time1 
      Df Sum Sq Mean Sq F value Pr(>F)  
time1  2 7141 3571 181.6 <2e-16 *** 
Residuals 38 747  20     
--- 
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

Error: group:id:time2 
      Df Sum Sq Mean Sq F value Pr(>F)  
time2  2 16353 8176 434.6 <2e-16 *** 
Residuals 38 715  19     
--- 
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

Error: group:id:time1:time2 
      Df Sum Sq Mean Sq F value Pr(>F) 
time1:time2 4 214.5 53.63 5.131 0.00103 ** 
Residuals 76 794.3 10.45     
--- 
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 
Warning message: 
In aov(var ~ time1 * time2 + Error(group/id/(time1 * time2)), data = df) : 
    Error() model is singular 

(上記のリンクに加えて、ここでいくつかはありますrandom vs. fixed effectsに関する追加の案内)

関連する問題