コントラストコードを使用してRでType-III SS ANOVAを行う方法


26

-3、-1、1、3のコントラストで被験者間ANOVAを実行できるようにするRコードを提供してください。このような分析に適した平方和(SS)タイプに関して議論があることを理解しています。ただし、SASおよびSPSSで使用されるSSのデフォルトタイプ(タイプIII)は、私の地域の標準と考えられています。したがって、この分析の結果が、これらの統計プログラムによって生成されたものと完全に一致することを望みます。回答を受け入れるにはaov()を直接呼び出す必要がありますが、他の回答は投票される可能性があります(特に理解/使用が容易な場合)。

sample.data <- data.frame(IV=rep(1:4,each=20),DV=rep(c(-3,-3,1,3),each=20)+rnorm(80))

編集:私が要求しているコントラストは、単純な線形または多項式コントラストではなく、理論的予測、すなわちRosentalとRosnowによって議論されたコントラストのタイプによって導き出されたコントラストであることに注意してください。


5
タイプIIIの合計が必要であることは理解していますが、この(stats.ox.ac.uk/pub/MASS3/Exegeses.pdf)記事は読みやすいです。興味深い点をいくつか示しています。
suncoolsu

あなたの質問に関しては、次の議論に興味があるかもしれません:stats.stackexchange.com/questions/60362/…ANOVAタイプI、II、およびIIIの選択は、見かけほど簡単ではありません。
phx 14年

あなたの質問が有用であると支持したことで、いくつかの学習された回答が引き起こされました。定義されたコントラストは定義により「タイプI」であり、自動化された方法を使用して「マシンが運転を行う」場合におそらく最も重要な部分回帰統計を評価するときにのみ関連する他のタイプの議論に関連するというStaGuyの立場を要約したいと思います。
DWin

@DWin:私が完全にあなたについてくるかどうかはわかりません。他の種類のSSを「機械に運転をさせる」ことなく合法的に使用することができます(少なくとも私はそのフレーズを理解しています)。ここでは少しさびているかもしれませんが、メモリが機能する場合、偏回帰を使用しないときに他のタイプが関連する可能性があります。たとえば、タイプIII SSは、相互作用の主な効果を部分的にしません。タイプIがそうであるのに対してタイプIIIは部分的ではないので、タイプ間の区別は正確に重要です。述べられている問題には、単一のコントラストのみが含まれていたため、SSのタイプの違いは無意味でした。
ラッセルピアス

私の理解では、タイプIII SSSを選択するためにSASによって与えられた理論的根拠(そして、これがタイプIIIが好ましいと考える理由であるように思われます)は、後方および前方選択プロセスをよりよくサポートすることです。
DWin

回答:


22

ANOVAのタイプIIIの二乗和はAnova()カーパッケージの関数を使用して簡単に入手できます。

コントラストコーディングは、、ファミリー(@nicoで示される)、または関数/引数を直接使用してC()、いくつかの方法で実行できます。これについては、S(Springer、2002、第4版)を使用したModern Applied Statisticsの §6.2(pp。144-151)で詳しく説明されています。は関数の単なるラッパー関数であることに注意してください。モデルの誤差項を制御したい場合(被験者内の設計のように)興味深いのですが、それ以外の場合は両方とも同じ結果を生成します(そして、モデルにフィットする方法に関係なく、ANOVAまたはLM- またはの概要のように)。contr.*contrasts()aov()lm()summary.aovsummary.lm

2つの出力を比較するSPSSはありませんが、

> library(car)
> sample.data <- data.frame(IV=factor(rep(1:4,each=20)),
                            DV=rep(c(-3,-3,1,3),each=20)+rnorm(80))
> Anova(lm1 <- lm(DV ~ IV, data=sample.data, 
                  contrasts=list(IV=contr.poly)), type="III")
Anova Table (Type III tests)

Response: DV
            Sum Sq Df F value    Pr(>F)    
(Intercept)  18.08  1  21.815  1.27e-05 ***
IV          567.05  3 228.046 < 2.2e-16 ***
Residuals    62.99 76                      
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1 

最初に試す価値があります。

RとSASのファクターコーディングについて:Rは、辞書式順序の最初のレベルとしてベースラインまたは参照レベルを考慮しますが、SASは最後のレベルを考慮します。したがって、同等の結果を得るには、使用するcontr.SAS()relevel()、Rファクターにする必要があります。


1
この答えは、指定した-3、-1,1,3コントラストを使用しているとは思わず、コントラストの1 dfテストも提供していないようです。
ラッセルピアス

@drknexusはい、その通りです。速すぎた。のようなものAnova(lm(DV ~ C(IV, c(-3,-1,1,3),1), data=sample.data), type="III")が良いはずです。これでよろしければ教えてください。
chl

ありがとう!大丈夫そうです。明日SPSSで検証し、ご連絡いたします。
ラッセルピアス

1
ところで、Anovaコードをラップするためのezパッケージ(cran.r-project.org/web/packages/ez/index.html)をご覧ください ...
Tal Galili

2
@drknexus:ezの機能リクエストと問題送信ページのみがあった場合... github.com/mike-lawrence/ez/issues :)
マイクローレンス

11

これは少し自己宣伝のように見えるかもしれません(そしてそうだと思います)。しかし、私はRのlsmeansパッケージ(CRANで入手可能)を開発しました。このパッケージは、まさにこのような状況を処理するように設計されています。これがあなたの例の仕組みです:

> sample.data <- data.frame(IV=rep(1:4,each=20),DV=rep(c(-3,-3,1,3),each=20)+rnorm(80))
> sample.aov <- aov(DV ~ factor(IV), data = sample.data)

> library("lsmeans")
> (sample.lsm <- lsmeans(sample.aov, "IV"))
 IV    lsmean        SE df   lower.CL  upper.CL
  1 -3.009669 0.2237448 76 -3.4552957 -2.564043
  2 -3.046072 0.2237448 76 -3.4916980 -2.600445
  3  1.147080 0.2237448 76  0.7014539  1.592707
  4  3.049153 0.2237448 76  2.6035264  3.494779

> contrast(sample.lsm, list(mycon = c(-3,-1,1,3)))
 contrast estimate       SE df t.ratio p.value
 mycon    22.36962 1.000617 76  22.356  <.0001

必要に応じて、リストで追加のコントラストを指定できます。この例では、組み込みの線形多項式コントラストで同じ結果が得られます。

> con <- contrast(sample.lsm, "poly")
> con
 contrast   estimate        SE df t.ratio p.value
 linear    22.369618 1.0006172 76  22.356  <.0001
 quadratic  1.938475 0.4474896 76   4.332  <.0001
 cubic     -6.520633 1.0006172 76  -6.517  <.0001

これを確認するために、"poly"仕様poly.lsmcでは次の結果を生成するを呼び出すように指定されていることに注意してください。

> poly.lsmc(1:4)
  linear quadratic cubic
1     -3         1    -1
2     -1        -1     3
3      1        -1    -3
4      3         1     1

複数のコントラストのジョイントテストを実行する場合は、でtest関数を使用しますjoint = TRUE。例えば、

> test(con, joint = TRUE)

これにより、「タイプIII」テストが生成されます。とは異なりcar::Anova()、モデル適合段階で使用されるコントラストコーディングに関係なく、正しく行われます。これは、テストされる線形関数が、モデルの縮小を介して暗黙的にではなく、直接指定されるためです。追加の機能として、テスト対象のコントラストが線形に依存する場合が検出され、正しいテスト統計と自由度が生成されます。



7

対比を行う場合、適切な誤差項のコンテキスト内で、セルの平均の特定の線形結合を行います。そのため、「SSのタイプ」の概念は、コントラストでは意味がありません。各コントラストは、本質的にタイプI SSを使用した最初の効果です。「SSのタイプ」は、他の用語で部分的に除外または説明されているものに関係しています。対照的に、何も部分的に除外または説明されていません。コントラストはそれだけで成り立っています。


あなたは、絶対に正しい。
russellpierce

3

タイプIIIテストが職場で使用されているという事実は、テストを使用し続ける最も弱い理由です。この点に関して、SASは統計に大きな損害を与えました。上記のBill Venablesの弁解は、これに関する優れたリソースです。タイプIIIにはノーとだけ言ってください。それはバランスの誤った概念に基づいており、不均衡なケースではセルの愚かな重みのために電力が低下します。

R rmsパッケージcontrast.rms関数によって、一般的なコントラストを取得し、何をしたかを説明できる、より自然でエラーの少ない方法が提供されます。コントラストは非常に複雑になる場合がありますが、予測値の違いの観点から述べられるため、ユーザーにとっては非常に簡単です。テストと同時コントラストがサポートされています。これは、非線形回帰効果、非線形相互作用効果、部分的コントラスト、あらゆる種類のものを処理します。


評判の定評のある人としては、それはすべて素晴らしいことです。他の人はレビュアーに反対する勇気を持っていません。統計の解釈は異なるので、新しい人に原則を守り、不当な費用を負担するように頼むことになります。私は、この(そして同様の)丘の上で何度も私の死を遂げた誰かとして言った。この面でのIMOの変更は、ゲートキーパー、つまり編集者と校閲者の責任です。
ラッセルピアス

データに非常に優れている人は、幅広い仕事の選択肢があり、スキルと意見が尊重される分野で働くオプションを選択できます。
フランクハレル

1
...それが今私がしていることです。しかし、この質問にたどり着く人は、そのクラスにはあまり参加しません。私が7年前ではなかったように。私は初心者と彼らの状況に少し共感するだけだと主張します。
ラッセルピアス

2

車のライブラリでAnovaコマンドを試してください。type = "III"引数を使用します。デフォルトではタイプIIです。例えば:

library(car)
mod <- lm(conformity ~ fcategory*partner.status, data=Moore, contrasts=list(fcategory=contr.sum, partner.status=contr.sum))
Anova(mod, type="III")

3
ムーアは車のライブラリにあることは知っていますが、サンプルデータが提供されている場合、サンプルデータを使用すると、質問者が回答を理解しやすくなります。
ラッセルピアス

0

また、自己促進型で、これのための関数を作成しました:https : //github.com/samuelfranssens/type3anova

次のようにインストールします。

library(devtools)
install_github(samuelfranssens/type3anova)
library(type3anova)

sample.data <- data.frame(IV=rep(1:4,each=20),DV=rep(c(-3,-3,1,3),each=20)+rnorm(80))

type3anova(lm(DV ~ IV, data = sample.data))

また、carパッケージをインストールする必要があります。


これを質問のコントラスト部分にどのように適用しますか?
ラッセルピアス

1
謝罪、私は質問を適切に読みませんでした。私の機能は、タイプIII Anovaの実行を単純化するだけです。上記のStatGuyのように、特定のコントラストをテストするときにSSが作用する場所はわかりません。
sam_f
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.