Menghapus intersep adalah model yang berbeda, tetapi ada banyak contoh di mana itu sah. Jawaban sejauh ini telah membahas secara rinci contoh di mana intersep sebenarnya adalah 0. Saya akan fokus pada beberapa contoh di mana kita mungkin tertarik pada parametriisasi model atipikal.
Contoh 1: Model gaya ANOVA. Untuk variabel kategorikal, kami biasanya membuat vektor biner yang mengkode keanggotaan grup. Model regresi standar parametrized sebagai mencegat + k - 1 dummy vektor. Intercept mengkode nilai yang diharapkan untuk grup "referensi", atau vektor yang dihilangkan, dan vektor yang tersisa menguji perbedaan antara setiap grup dan referensi. Tetapi dalam beberapa kasus, mungkin berguna untuk memiliki nilai yang diharapkan masing-masing kelompok.
dat <- mtcars
dat$vs <- factor(dat$vs)
## intercept model: vs coefficient becomes difference
lm(mpg ~ vs + hp, data = dat)
Coefficients:
(Intercept) vs1 hp
26.96300 2.57622 -0.05453
## no intercept: two vs coefficients, conditional expectations for both groups
lm(mpg ~ 0 + vs + hp, data = dat)
Coefficients:
vs0 vs1 hp
26.96300 29.53922 -0.05453
Contoh 2: Kasing data standar. Dalam beberapa kasus, seseorang mungkin bekerja dengan data standar. Dalam hal ini, intersep adalah 0 menurut desain. Saya pikir contoh klasik dari ini adalah model persamaan struktural gaya lama atau faktor, yang beroperasi hanya pada matriks kovarian data. Dalam kasus di bawah ini, mungkin merupakan ide yang bagus untuk memperkirakan penyadapan, jika hanya untuk menjatuhkan tingkat kebebasan tambahan (yang sebenarnya harus Anda hilangkan karena rata-rata diperkirakan), tetapi ada beberapa situasi di mana konstruksi, berarti mungkin 0 (mis., eksperimen tertentu di mana peserta memberikan peringkat, tetapi dibatasi untuk memberikan positif dan negatif yang sama).
dat <- as.data.frame(scale(mtcars))
## intercept is 0 by design
lm(mpg ~ hp + wt, data = dat)
Coefficients:
(Intercept) hp wt
3.813e-17 -3.615e-01 -6.296e-01
## leaving the intercept out
lm(mpg ~ 0 + hp + wt, data = dat)
Coefficients:
hp wt
-0.3615 -0.6296
Contoh 3: Model Multivarian dan Intercept Tersembunyi. Contoh ini mirip dengan yang pertama dalam banyak hal. Dalam hal ini, data telah ditumpuk sehingga dua variabel yang berbeda sekarang berada dalam satu vektor panjang. Variabel kedua mengkodekan informasi tentang apakah vektor respons,, y
termasuk mpg
atau disp
. Dalam hal ini, untuk mendapatkan intersep yang terpisah untuk setiap hasil, Anda menekan keseluruhan intersep dan menyertakan kedua vektor tiruan untuk diukur. Ini adalah semacam analisis multivariat. Ini biasanya tidak dilakukan menggunakanlm()
karena Anda telah mengulangi langkah-langkah dan mungkin harus membiarkan ketidakberadaan. Namun, ada beberapa kasus menarik di mana ini diperlukan. Misalnya ketika mencoba melakukan analisis mediasi dengan efek acak, untuk mendapatkan matriks varians kovarians penuh, Anda memerlukan kedua model yang diestimasi secara bersamaan, yang dapat dilakukan dengan menumpuk data dan beberapa penggunaan vektor dummy yang cerdas.
## stack data for multivariate analysis
dat <- reshape(mtcars, varying = c(1, 3), v.names = "y",
timevar = "measure", times = c("mpg", "disp"), direction = "long")
dat$measure <- factor(dat$measure)
## two regressions with intercepts only
lm(cbind(mpg, disp) ~ 1, data = mtcars)
Coefficients:
mpg disp
(Intercept) 20.09 230.72
## using the stacked data, measure is difference between outcome means
lm(y ~ measure, data = dat)
Coefficients:
(Intercept) measurempg
230.7 -210.6
## separate 'intercept' for each outcome
lm(y ~ 0 + measure, data = dat)
Coefficients:
measuredisp measurempg
230.72 20.09
Saya tidak berpendapat bahwa intersepsi pada umumnya harus dihapus, tetapi bagus untuk fleksibel.