Regresi linier dengan faktor-faktor dalam R

10

Saya mencoba memahami bagaimana sebenarnya faktor bekerja di R. Katakanlah saya ingin menjalankan regresi menggunakan beberapa data sampel di R:

> data(CO2)
> colnames(CO2)
[1] "Plant"     "Type"      "Treatment" "conc"      "uptake"   
> levels(CO2$Type)
[1] "Quebec"      "Mississippi"
> levels(CO2$Treatment)
[1] "nonchilled" "chilled"   
> lm(uptake ~ Type + Treatment, data = CO2)

Call:
lm(formula = uptake ~ Type + Treatment, data = CO2)

Coefficients:
 (Intercept)   TypeMississippi  Treatmentchilled  
       36.97            -12.66             -6.86  

Saya mengerti itu TypeMississippidan Treatmentchilleddiperlakukan sebagai boolean: Untuk setiap baris, penyerapan awal adalah 36.97, dan kami kurangi 12.66jika jenis Mississippi dan 6.86jika dingin. Saya mengalami kesulitan memahami sesuatu seperti ini:

 > lm(uptake ~ Type * Treatment, data = CO2)

 Call:
 lm(formula = uptake ~ Type * Treatment, data = CO2)

 Coefficients:
                 (Intercept)                   TypeMississippi  
                      35.333                            -9.381  
            Treatmentchilled  TypeMississippi:Treatmentchilled  
                      -3.581                            -6.557  

Apa artinya melipatgandakan dua faktor menjadi satu lm?

sylowtheorems
sumber

Jawaban:

17

Untuk menguraikan jawaban @ John: dalam rumus R, Anda memiliki beberapa operator yang dapat Anda terapkan pada istilah: "+" cukup menambahkannya, ":" berarti Anda menambahkan istilah (atau beberapa istilah) yang merujuk pada interaksinya ( lihat di bawah), "*" berarti keduanya, yaitu: "efek utama" ditambahkan, dan istilah interaksi ditambahkan juga.

Jadi apa artinya interaksi ini? Nah, dalam kasus variabel kontinu, itu memang istilah yang ditambahkan yang hanya kelipatan dari dua variabel. Jika Anda memiliki tinggi dan berat sebagai prediktor, dan digunakan out ~ height * weightsebagai rumus, maka model linier akan mengandung tiga 'variabel', yaitu berat, tinggi, dan produk mereka (juga mengandung interaksi tetapi kurang menarik di sini).

Meskipun saya menyarankan sebaliknya di atas: ini bekerja dengan cara yang persis sama untuk variabel kategori, tetapi sekarang 'produk' berlaku untuk (set) variabel dummy (s) untuk setiap variabel kategori. Misalkan tinggi dan berat badan Anda sekarang kategorikal, masing-masing dengan tiga kategori (S (mal), M (edium) dan L (arge)). Kemudian dalam model linier, masing-masing diwakili oleh satu set dua variabel dummy yang baik 0 atau 1 (ada cara pengkodean lain, tetapi ini adalah default dalam R dan yang paling umum digunakan). Katakanlah kita menggunakan S sebagai kategori referensi untuk keduanya, maka setiap kali kita memiliki tinggi dua boneka. Tinggi dan tinggi. L (dan serupa untuk berat).

Jadi sekarang, model out ~ height * weightsekarang berisi 4 boneka + semua produk dari semua kombinasi dummy (saya tidak secara eksplisit menulis koefisien di sini, mereka tersirat):

(intercept) + height.M + height.L + weight.M + weight.L + height.M * weight.M + height.L * weight.M + height.M * weight.L + height.L * weight.L.

Pada baris di atas, '*' sekarang lagi mengacu pada produk sederhana, tetapi kali ini boneka, sehingga setiap produk itu sendiri juga baik 1 (ketika semua faktor adalah 1) atau 0 (ketika setidaknya satu tidak).

Dalam hal ini 8 'variabel' memungkinkan hasil yang berbeda (rata-rata) dalam semua kombinasi dari dua variabel: efek dari memiliki berat besar sekarang tidak lagi sama untuk orang kecil (bagi mereka efeknya hanya dibentuk oleh istilah weight.L) sebagai untuk orang besar (di sini, efeknya adalah weight.L + height.L * weight.L)

Nick Sabbe
sumber
7

Untuk menindaklanjuti jawaban John, rumus dalam lm tidak menggunakan notasi aritmatika, mereka menggunakan notasi simbolik ringkas untuk menggambarkan model linier (khususnya notasi Wilkinson-Rogers, ada ringkasan pendek yang bagus di sini http: //www.physiol .ox.ac.uk / ~ raac / R.shtml ).

Pada dasarnya, memasukkan A * B dalam rumus model berarti Anda memasang A, B, dan A: B (interaksi A dan B). Jika istilah interaksi signifikan secara statistik, itu menunjukkan bahwa efek dari perlakuan berbeda untuk masing-masing jenis.

Marius
sumber
3

Mungkin mencari 'formula' dalam bantuan akan membantu. Anda tidak mengalikan, Anda mengatakan Anda menginginkan dua efek utama dan interaksi mereka juga.

John
sumber
1
(+1) meskipun sepertinya lebih seperti komentar untuk saya.
Dmitrij Celov