看來,轉化因子變量爲序因子變量的變化從「contr.treatment」默認對比度爲「contr.poly」
# make cyl a factor
cars.data$cyl <- factor(cars.data$cyl)
現在考慮的lm
輸出與「對照。治療」和‘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
索爾有序因子用‘contr.poly’作爲默認的對比,我們可以從一個無序因素相同的結果。現在,考慮無序因素。
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"
現在,使用 「contr.poly」 對比度
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"
接着,檢查出cyl.ord代替缸
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"
最後兩個矩陣具有相同的條目,所以使用「contr.poly」似乎解釋了最初的差異。要了解有關對比度的更多信息,可以查看?contrasts
。
現在我發現我不瞭解對比,但這是一個不同的問題(可能更適合CV)。謝謝! – MissMonicaE