Bagaimana menerapkan variabel dummy menggunakan variabel n-1?

9

Jika saya memiliki variabel dengan 4 level, secara teori saya perlu menggunakan 3 variabel dummy. Dalam praktiknya, bagaimana ini sebenarnya dilakukan? Apakah saya menggunakan 0-3, apakah saya menggunakan 1-3 dan membiarkan 4 kosong? Ada saran?

CATATAN: Saya akan bekerja di R.

UPDATE: Apa yang akan terjadi jika saya hanya menggunakan satu kolom yang menggunakan 1-4 yang sesuai dengan AD? Apakah itu akan berhasil atau menimbulkan masalah?

screechOwl
sumber
3
Saya pikir halaman ini dari UCLA ATS menjelaskannya dengan cukup baik.
caracal
4
Hanya untuk menjadi jelas, perhatikan bahwa pengkodean variabel ini sebagai bilangan bulat 0-3 atau 1-4 atau 1-3 bukan pengkodean dummy dan tidak akan memiliki efek yang sama dengan tiga variabel dummy. Namun, pengkodean yang salah seperti itu akan bekerja dalam formula dan perangkat lunak regresi dan akan ada output yang masuk akal: itu hanya tidak akan sesuai dengan model yang dimaksud. (NB: ini menjawab pembaruan terkini untuk pertanyaan itu. )
whuber

Jawaban:

11

Dalam praktiknya, seseorang biasanya membiarkan perangkat lunak pilihannya menangani pembuatan dan manipulasi variabel dummy. Ada beberapa cara penanganannya; berikut adalah beberapa kemungkinan umum untuk kumpulan data dengan empat pengamatan, satu di setiap tingkat A, B, C, dan D. Ini adalah parameterisasi yang berbeda; mereka menghasilkan model yang sama persis, tetapi dengan interpretasi yang berbeda untuk parameter. Satu dapat dengan mudah mengkonversi dari satu ke yang lain menggunakan aljabar dasar; perhatikan mereka semua kombinasi linear satu sama lain; sebenarnya, kombinasi linear apa pun dapat digunakan.

Gunakan perbedaan dari level pertama (default dalam R):

A 0 0 0
B 1 0 0
C 0 1 0
D 0 0 1

Gunakan perbedaan dari level terakhir (default di SAS):

A 1 0 0
B 0 1 0
C 0 0 1
D 0 0 0

Gunakan kontras "jumlah":

A    1    0    0
B    0    1    0
C    0    0    1
D   -1   -1   -1

Gunakan kontras "helmert":

A   -1   -1   -1
B    1   -1   -1
C    0    2   -1
D    0    0    3
Aaron meninggalkan Stack Overflow
sumber
1
Saya akan mengatakan, demi kemurnian, bahwa variabel dummy , dalam pengertian yang ketat, hanya 1 dan 2 contoh Anda. Variabel dummy juga dikenal sebagai variabel kontras indikator . Helmert , deviasi , dan jenis lain dari variabel kontras tidak boleh disebut dummy , bagi saya.
ttnphns
1
@ttnphns Saya setuju bahwa kontras Helmert bukan merupakan pengkodean dummy dari sudut pandang teknis, tapi saya pikir itu sangat masuk akal bagi mereka untuk dimasukkan di sini. Saya tidak tahu apakah Anda menunjukkan ini demi kejelasan atau menyarankan agar jawabannya diubah. @ Aaron +1, jawaban ini akan lebih baik jika Anda menjelaskan secara singkat bagaimana penafsiran skema pengkodean yang berbeda ini akan berbeda.
gung - Reinstate Monica
7

Mari kita asumsikan tingkat variabel Anda adalah A, B, C, dan D. Jika Anda memiliki istilah konstan dalam regresi, Anda perlu menggunakan tiga variabel dummy, jika tidak, Anda harus memiliki keempatnya.

Ada banyak cara yang setara secara matematis untuk menerapkan variabel dummy. Jika Anda memiliki istilah konstan dalam regresi, salah satu caranya adalah dengan memilih salah satu level sebagai level "dasar" dan membandingkan tiga lainnya. Katakanlah, untuk konkret, bahwa level dasar adalah A. Kemudian variabel dummy pertama Anda mengambil nilai 1 setiap kali levelnya adalah B dan 0 sebaliknya; yang kedua mengambil nilai 1 setiap kali level C dan 0 sebaliknya, dan yang ketiga mengambil nilai 1 setiap kali level D dan 0 sebaliknya. Karena istilah konstan Anda sama dengan 1 setiap saat, koefisien estimasi variabel dummy pertama akan menjadi estimasi perbedaan antara level B dan A, dan juga untuk variabel dummy lainnya.

Jika Anda tidak memiliki istilah konstan, Anda bisa menggunakan empat variabel dummy, dibuat seperti pada contoh sebelumnya, hanya menambahkan satu untuk level A.

Jbowman
sumber
Catatan bagus tentang bagaimana memiliki istilah konstan dalam masalah regresi.
Aaron meninggalkan Stack Overflow
5

Di R, tentukan variabel sebagai faktor dan itu akan mengimplementasikannya untuk Anda:

x <- as.factor(sample(LETTERS[1:4], 20, replace = TRUE))
y <- rnorm(20)
lm (y ~ x)

yang kembali

Call:
lm(formula = y ~ x)

Coefficients:
(Intercept)           xB           xC           xD  
     1.0236      -0.6462      -0.9466      -0.4234  

Dokumentasi untuk 'lm', 'factor', dan 'formula' dalam R mengisi beberapa detail.

Abu-abu
sumber
1
+1 Ini adalah pelengkap yang bagus untuk jawaban yang sudah terdaftar. Kami juga dapat mencatat bahwa jika Anda sudah memiliki variabel dengan nama grup (seperti AD), ini dapat dilakukan dalam panggilan fungsi analisis tanpa langkah tambahan: lm(y ~ as.factor(x))
gung - Reinstate Monica
Alasan utama saya melihat menggunakan variabel dummy adalah bahwa saya bekerja dengan kumpulan data besar dengan banyak level faktor (> 32) dan beberapa paket dalam R (yaitu randomforest) tidak dapat menangani faktor dengan banyak level, jadi saya mencoba untuk melihat apakah boneka itu bekerja di sekitar.
screechOwl
1
Anda dapat membuat matriks desain regresi menggunakan 'model.matrix': model.matrix (y ~ x) (x masih merupakan faktor) akan memberi Anda matriks dengan variabel dummy. Saya tidak terbiasa dengan paket randomforest, tetapi saya curiga bahwa Anda dapat memberikan fungsi apa pun dengan matriks desain eksplisit yang Anda dapatkan dari model.matrix, dan model.matrix tampaknya berfungsi dengan banyak (yaitu ratusan) level.
Gray
ps: Anda mungkin ingin mengedit pertanyaan untuk memperjelas bahwa Anda peduli dengan solusi yang bekerja dengan banyak level. Pertanyaannya tentang 4.
Gray
4

whuber memberi tahu Anda dalam komentar bahwa pengkodean kode 0-3 atau 1-4 bukannya membuat variabel dummy bukan yang Anda inginkan. Ini coba - semoga saya jelaskan apa yang akan Anda lakukan dengan model itu dan mengapa itu salah.

Jika Anda melakukan kode variabel X sehingga jika A maka X = 1, jika B maka X = 2, jika C maka X = 3, jika D maka X = 4 maka ketika Anda melakukan regresi Anda hanya akan mendapatkan satu parameter. Katakanlah akhirnya adalah bahwa estimasi parameter yang terkait dengan X adalah 2. Ini akan memberitahu Anda bahwa perbedaan yang diharapkan antara rata-rata B dan rata-rata A adalah 2. Ini juga memberi tahu Anda bahwa perbedaan yang diharapkan antara rata-rata C dan rata-rata B adalah 2. Beberapa untuk D dan C. Anda akan memaksa perbedaan dalam cara bagi kelompok-kelompok ini untuk mengikuti pola yang sangat ketat ini. Satu parameter itu memberi tahu Anda dengan tepat bagaimana semua kelompok Anda berarti saling terkait.

Jadi, jika Anda melakukan pengkodean seperti ini, Anda harus mengasumsikan bahwa Anda tidak hanya memesan dengan benar (karena dalam hal ini jika Anda mengharapkan peningkatan dari A ke B maka Anda perlu mengharapkan peningkatan dari B ke C dan dari C ke D) tetapi Anda juga harus menganggap bahwa perbedaannya sama!

Jika sebaliknya, Anda melakukan pengkodean dummy yang telah disarankan agar Anda mengizinkan masing-masing grup untuk memiliki mean sendiri - tanpa batasan. Model ini jauh lebih masuk akal dan menjawab pertanyaan yang Anda inginkan.

Alasan
sumber