5

スタンドアロン変数としてモデルに入らない 2 つの変数間の相互作用を持つモデルを推定するとき、これらの変数の 1 つがダミー (クラス「論理」) 変数である場合、R はダミー変数の「符号を反転」します。 . つまり、ダミーが TRUE の場合ではなく FALSE の場合に、交互作用項の係数の推定値を報告します。次に例を示します。

data(trees)
trees$dHeight <- trees$Height > 76
trees$cGirth  <- trees$Girth - mean(trees$Girth)
lm(Volume ~ Girth +  Girth:dHeight, data = trees)  # estimate is for  Girth:dHeightTRUE
lm(Volume ~ Girth + cGirth:dHeight, data = trees)  # estimate is for cGirth:dHeightFALSE    

dHeight最後の行の回帰が、 TRUE ではなく FALSE である交互作用の推定値を生成するのはなぜですか? (dHeight が TRUE の場合、R に見積もりを報告してもらいたいです。)

これは大きな問題ではありませんが、なぜ R が何をしているのかをよりよく理解したいと思います。relevel()とについては知ってcontrasts()いますが、ここで違いが生じるとは思いません。

4

2 に答える 2

3

dHeightですlogical。_ この中でmodel因子に強制され、レベルは辞書式にソートされます (つまり、F は T の前です)。

@Hongooiの回答に記載されているように、4つのパラメーターを推定することはできないため、Rは表示される順序で用語に適合します(TRUEの前にFALSE)

R最初に値を強制的に適合させたい場合はTRUE、モデルを次のように適合させることができます!dHeight

lm(formula = Volume ~ Girth + cGirth:!dHeight, data = trees)

!dHeightFALSEと同等であることに注意してくださいdHeightTRUE

また、この単純なケースでは、係数の符号を変更するだけなので、どのモデルを適合させるかは実際には問題ではないことに注意してください。


はるかに優れたアプローチを編集する

R はcGirthGirthが共線であることを認識することができるため、 がa/b展開してa + a:b

lm(formula = Volume ~ Girth + cGirth/dHeight, data = trees)
Coefficients:
       (Intercept)               Girth              cGirth  cGirth:dHeightTRUE  
           -27.198               4.251                  NA               1.286

これにより、係数にわかりやすい名前Rが付けられ、係数を返すのに失敗する可能性があります。cGirth


R両方とも「主効果」またはスタンドアロンの項としてのモデルである場合、共線的であることがわかりGirthます。cGirth

とが共線であり、論理的に適合する係数になりたいと考えると、それをフィッティングするRときに伝えることができるはずの方法はありません。(本当に必要な場合は、独自の数式パーサーを作成してこれを行うことができます)Girth + cGirth:dHeightcGirthGirthdHeightcGirthdHeightTRUE

必要なモデルに適合し、共線項がない別のアプローチは、使用することです

lm(formula = Volume ~ Girth + I(cGirth*dHeight), data = trees)

これはdHeight数値 ( TRUE becomes 1) に強制されます。


ポイントを編集して編集します。

あなたが合うとき~Girth + Girth:dHeight

あなたが言っているのは、Girth+ の調整には主効果があるということですdHeight。R は、因子の最初の水準を参照水準と見なします。の勾配dHeightFALSEは単に の値であり、 (Girth:dHeightTRUE)Girthの場合に調整します。dHeight == TRUE

When you fit ~Girth + cGirth:dHeight--には、与えられたことがわかり、2 つの項の相互作用を当てはめたときに共線的であるマインド リーディング パーサーがありません。2 番目のレベルが参照レベルであると見なされますR) 。cGirthGirthdHeight

まったく関係のない変数があると想像してくださいGirth

例えば

set.seed(1)
trees$cG <- runif(nrow(trees))

次に、フィットGirth + cG:dHeightすると、4つのパラメーターが推定されます

lm(formula = Volume ~ Girth + cG:dHeight, data = trees)

Call:
lm(formula = Volume ~ Girth + cG:dHeight, data = trees)

Coefficients:
    (Intercept)            Girth  cG:dHeightFALSE   cG:dHeightTRUE  
      -31.79645          4.79435         -5.92168          0.09578  

これは賢明です。

が をR処理するGirth + cGirth:dHeightと、(因子の最初のレベルが最初に) 展開され1 + Girth + cGirth:dHeightFALSE + cGirth:dHeightTRUE、4 つのパラメーターすべてを推定することはできないことがわかり、最初の 3 つを推定します。

于 2013-07-19T03:35:12.143 に答える