序因子変数に因子変数を変換すると、CONTR」とlm
の出力を考える「contr.poly」今
# make cyl a factor
cars.data$cyl <- factor(cars.data$cyl)
する「contr.treatment」からデフォルトのコントラストを変更することが表示されます。治療」および 『contr.polyデフォルトのコントラストとしてcontr.polyを『』注文要因ソル
lm(mpg ~ disp + cyl.ord, data=cars.data)
Call:
lm(formula = mpg ~ disp + cyl.ord, data = cars.data)
Coefficients:
(Intercept) disp cyl.ord.L cyl.ord.Q
26.34212 -0.02731 -3.38852 1.95127
lm(mpg ~ disp + cyl, data=cars.data,
contrasts=list(cyl="contr.poly"))
Call:
lm(formula = mpg ~ disp + cyl, data = cars.data,
contrasts=list(cyl = "contr.poly"))
Coefficients:
(Intercept) disp cyl.L cyl.Q
26.34212 -0.02731 -3.38852 1.95127
は使用しています』と、私たちは順不同要因から同じ結果を得ることができます。さて、順序付けられていない要素を考えてみましょう。
lm(mpg ~ disp + cyl, data=cars.data)
Call:
lm(formula = mpg ~ disp + cyl, data = cars.data)
Coefficients:
(Intercept) disp cyl6 cyl8
29.53477 -0.02731 -4.78585 -4.79209
lm(mpg ~ disp + cyl.ord, data=cars.data, contrasts=list(cyl.ord="contr.treatment"))
Call:
lm(formula = mpg ~ disp + cyl.ord, data = cars.data,
contrasts=list(cyl.ord="contr.treatment"))
Coefficients:
(Intercept) disp cyl.ord6 cyl.ord8
29.53477 -0.02731 -4.78585 -4.79209
ので、順不同因子変数は、デフォルトでは「contr.treatment」を使用し、我々は、明示的にそれを頼むことによって命じ要因から同じ結果を得ることができます。
しかし、回帰で使用されるモデル行列を詳しく見ていきましょう。
今
# Show model matrix
model.matrix(mpg ~ disp + cyl, data=cars.data)
(Intercept) disp cyl6 cyl8
Mazda RX4 1 160.0 1 0
Mazda RX4 Wag 1 160.0 1 0
Datsun 710 1 108.0 0 0
...
attr(,"assign")
[1] 0 1 2 2
attr(,"contrasts")
attr(,"contrasts")$cyl
[1] "contr.treatment"
は、コントラスト
model.matrix(mpg ~ disp + cyl, data=cars.data, contrasts.arg=list(cyl="contr.poly"))
(Intercept) disp cyl.L cyl.Q
Mazda RX4 1 160.0 -9.073800e-17 -0.8164966
Mazda RX4 Wag 1 160.0 -9.073800e-17 -0.8164966
Datsun 710 1 108.0 -7.071068e-01 0.4082483
...
attr(,"assign")
[1] 0 1 2 2
attr(,"contrasts")
attr(,"contrasts")$cyl
[1] "contr.poly"
として次の "contr.poly" を使用し、CYL
model.matrix(mpg ~ disp + cyl.ord, data=cars.data)
(Intercept) disp cyl.ord.L cyl.ord.Q
Mazda RX4 1 160.0 -9.073800e-17 -0.8164966
Mazda RX4 Wag 1 160.0 -9.073800e-17 -0.8164966
Datsun 710 1 108.0 -7.071068e-01 0.4082483
...
attr(,"assign")
[1] 0 1 2 2
attr(,"contrasts")
attr(,"contrasts")$cyl.ord
[1] "contr.poly"
の代わりにcyl.ordをチェックアウト最後の二つの行列は、同じエントリを持っています最初の不一致を説明するために "contr.poly"を使用しています。コントラストの詳細については、?contrasts
をご覧ください。
私はコントラストを理解していないことを発見しましたが、これは別の質問です(おそらくCVに適しています)。ありがとうございました! – MissMonicaE