参照レベルを変更すると、一部の回帰推定は符号の変化によって異なるが、他の推定は異なるのはなぜですか?


8

継続的な結果yと2つの要因予測因子があり、それぞれに2つのレベルがあるとします。私のカテゴリカル予測子の1つは、drug2つのレベル( "A"または "B")を持つことができ、もう1つはsmokeYesです。回帰モデルを実行するとき、次のように、ベースラインまたは参照レベルをdrug"A"に選択できますmodel1

set.seed(123)
y<-rnorm(100, 100, 10)
drug.ab<-factor(sample(c("A", "B"), 100, T), levels=c("A", "B"))
drug.ba<-factor(drug.ab, levels=c("B", "A"))
smoke<-factor(sample(c("Yes", "No"), 100, T), levels=c("No", "Yes"))

#model1:
coef(summary(lm(y~drug.ab*smoke)))
                     Estimate Std. Error    t value     Pr(>|t|)
(Intercept)       100.7484158   2.065091 48.7864379 1.465848e-69
drug.abB            0.9030541   2.796146  0.3229639 7.474250e-01
smokeYes           -0.8693598   2.632484 -0.3302431 7.419359e-01
drug.abB:smokeYes   0.8709116   3.746684  0.2324487 8.166844e-01

または、次のようにベースラインを「B」に設定できますmodel2

#model2:
coef(summary(lm(y~drug.ba*smoke)))
                       Estimate Std. Error       t value     Pr(>|t|)
(Intercept)       101.651469922   1.885161 53.9218978856 1.377147e-73
drug.baA           -0.903054145   2.796146 -0.3229638818 7.474250e-01
smokeYes            0.001551843   2.666021  0.0005820821 9.995368e-01
drug.baA:smokeYes  -0.870911601   3.746684 -0.2324486531 8.166844e-01

私の質問は、のために、なぜ推定値であるsmokeYes間は異なりmodel1model2?記号のような変化drug.baAと相互作用の項が違うのはなぜですか?


3
治療のコントラストの良い説明を探してください。簡単に言うと、drugBとsmokeの予測を計算する場合:はい(mod1)100.75 + 0.90-0.87 + 0.87 = 101.65 | (mod2)101.65 + 0.00 = 101.65
Roland

グループの平均をすべて計算する非常に単純なRのコード行があるため、そこで重複する質問を見たとき、それは間違いなくSOの話題であると思いましたtapply( y, interaction( drug.ab, smoke) ,mean)。より長い説明には、治療のコントラストと合計のコントラストの違いを示すことが含まれる場合があります。
DWin

@Dwin、すでに2つの回答が投稿されている場合でも、正確に対照的な問題に対処する別の回答の余地は確かにあると思います。私は誰かがそのアプローチを取って回答を投稿することを願っています。
Silverfish、2015

回答:


8

簡単な例を使って概念を説明しましょう。それを係数と照合します。

「A / B」ダミー変数と交互作用項の両方を含めることにより、「A」データに異なる切片(ダミーを使用)と勾配(交互作用を使用)を適合させる柔軟性を効果的にモデルに与えることに注意してください。 「B」データ。以下では、他の予測子が連続変数であるか、あなたの場合のように、別のダミー変数であるかは実際には重要ではありません。「切片」と「傾き」で言えば、「ダミーがゼロのときのレベル」、「ダミーが0から1に変わったときのレベルの変化」と解釈することもできます。バツ01

"A"のデータにモデルを嵌OLSを想定するのみであり、Yが = 12 + 5 、X及び"B"のデータに、単独で、Yは = 11 + 7 Xを。データは次のようになります。y^=12+5バツy^=11+7バツ

2つのグループの散布図

今、私たちは私たちの基準レベルとして「A」を取ると仮定し、ダミー変数の使用するように、B = 1、グループBの観測のためではなく、B = 0、グループAには、データセット全体にフィットモデルでありますbb=1b=0

y^=β^0+β^1バツ+β^2b+β^バツb

グループAの観測のために我々は持っているY I = β 0 + β 1は、xは、私を、私たちが設定することにより、残差二乗それらの和を最小限に抑えることができβ 0 = 12β 1 = 5。グループBデータについてY iは = β 0 + β 2+ β 1 + β 3X Iy^=β^0+β^1バツβ^0=12β^1=5y^=β^0+β^2+β^1+β^バツ、我々が取ることによって、残差二乗それらの和を最小限に抑えることができβ 0 + β 2 = 11β 1β^0+β^2=11。それは我々が両方のグループのための合計を最小化することによって、全体的な回帰における残差二乗和を最小化することができ、これは、設定することによって達成することができることは明らかだ β 0 = 12 β 1 = 5(グループAから)と β 2 = - 1 ββ^1+β^=7β^0=12β^1=5β^2=1( "B"データには切片が1つ低く、勾配が2つ高いため)。両方のグループの二乗残差の合計を一度に最小化するのに十分な柔軟性を持たせるには、交互作用項の存在がどのように必要であったかを観察します。私の適合モデルは:β^=2

y^=12+5バツ1b+2バツb

これをすべて切り替えて、「B」が参照レベルでありがグループAのダミー変数コーディングであることを確認します。モデルを適合させる必要があることがわかりますか?a

y^=11+7バツ+1a2バツa

117


それを出力と比較してみましょう。上記と同様の表記で、ベースライン "A"を持つ最初の近似モデルは次のとおりです。

y^=100.7484158+0.9030541b0.8693598バツ+0.8709116バツb

ベースライン "B"を持つ2番目の近似モデルは次のとおりです。

y^=101.6514699220.903054145a+0.001551843バツ0.870911601バツa

b=1a

y^=100.7484158+0.90305411a0.8693598バツ+0.8709116バツ1a

これにより、次のことが簡単になります。

y^=100.7484158+0.90305410.9030541a+0.8693598+0.8709116バツ0.8709116バツa

少し計算すると、これが2番目の近似モデルと同じであることが確認されます。さらに、どの係数が符号で入れ替わったか、どの係数が他のベースラインに単純に調整されたかが明確になります!

次に、グループ "A"と "B"で異なる近似モデルが何であるかを見てみましょう。あなたの最初のモデルはすぐに与えyの私は = 100.7484158を- 0.8693598 X Iy^=100.74841580.8693598バツy^=101.651469922+0.001551843バツb=1a=1

3番目に、他のリグレッサもダミー変数だったので、4つのカテゴリすべて( "A")の近似条件付き平均を計算することをお勧めしますバツ=0バツ=1バツ=0バツ=1バツバツy^

y^

#Make data set with desired conditional means
data.df <- data.frame(
  x = c(0,0,0,        1,1,1,        0,0,0,        1,1,1),
  b = c(0,0,0,        0,0,0,        1,1,1,        1,1,1),
  y = c(11.8,12,12.2, 16.8,17,17.2, 10.8,11,11.2, 17.8,18,18.2)
)
data.df$a <- 1 - data.df$b

baselineA.lm <- lm(y ~ x * b, data.df)
summary(baselineA.lm) #check this matches y = 12 + 5x - 1b + 2xb

baselineB.lm <- lm(y ~ x * a, data.df)
summary(baselineB.lm) #check this matches y = 11 + 7x + 1a - 2xa

fitted(baselineA.lm)
fitted(baselineB.lm) #check the two models give the same fitted values for y...
with(data.df, tapply(y, interaction(x, b), mean)) #...which are the group sample means

colorSet <- c("red", "blue")
symbolSet <- c(19,17)
with(data.df, plot(x, y, yaxt="n", col=colorSet[b+1], pch=symbolSet[b+1],
                   main="Response y against other predictor x",
                   panel.first = {
                     axis(2, at=10:20)
                     abline(h = 10:20, col="gray70")
                     abline(v = 0:1,  col="gray70")
                   }))
abline(lm(y ~ x, data.df[data.df$b==0,]), col=colorSet[1])
abline(lm(y ~ x, data.df[data.df$b==1,]), col=colorSet[2])
legend(0.1, 17, c("Group A", "Group B"), col = colorSet,
       pch = symbolSet, bg = "gray95")

はい、素晴らしい説明なので、私はこれに投票します!
JonB、2015

@DavidZありがとう!他の答えがあるかもしれないので、「受け入れる」ボックスを早めにオンにしないことをお勧めします。私の説明はかなりきちんとしていますが、私は継続的にも機能していた非常に一般的な側面に基づいていますバツ

3

これは、切片がどのように定義されているかに関係しています。最初の例では、切片は喫煙をせず、薬物Aを持っている人として定義されています。薬物Aも持っている喫煙者の値は100.75-0.87 = 99.9ですが、薬物Bを持っている喫煙者は100.75 + 0.90-0.87 + 0.87 = 101.65の値。

2番目の例では、切片は喫煙せずに薬物Bを飲んでいる人として定義されています。薬物Bを飲んだ喫煙者の値は101.65 + 0.001 = 101.65になり、薬物Aを飲んだ喫煙者の値は100.65-0.90 +になります。 0.001-0.87 = 99.9。

したがって、すべてが加算されます。それは、切片がどのように定義されているか、つまり、すべての因子が参照カテゴリに設定されているときのレベルの問題です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.