dHeightですlogical。_ この中でmodel因子に強制され、レベルは辞書式にソートされます (つまり、F は T の前です)。
@Hongooiの回答に記載されているように、4つのパラメーターを推定することはできないため、Rは表示される順序で用語に適合します(TRUEの前にFALSE)
R最初に値を強制的に適合させたい場合はTRUE、モデルを次のように適合させることができます!dHeight
lm(formula = Volume ~ Girth + cGirth:!dHeight, data = trees)
!dHeightFALSEと同等であることに注意してくださいdHeightTRUE
また、この単純なケースでは、係数の符号を変更するだけなので、どのモデルを適合させるかは実際には問題ではないことに注意してください。
はるかに優れたアプローチを編集する
R はcGirthとGirthが共線であることを認識することができるため、 が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 つを推定します。