Dalam model logit, adakah cara yang lebih cerdas untuk menentukan pengaruh variabel ordinal independen daripada menggunakan variabel dummy untuk setiap level?
Dalam model logit, adakah cara yang lebih cerdas untuk menentukan pengaruh variabel ordinal independen daripada menggunakan variabel dummy untuk setiap level?
Jawaban:
Untuk menambah tanggapan @ dmk38, "set skor apa pun memberikan tes yang valid , asalkan itu dibangun tanpa berkonsultasi dengan hasil percobaan. Jika set skor buruk, dalam hal itu buruk mendistorsi skala numerik yang benar-benar mendasari memerintahkan klasifikasi, tes tidak akan peka. Oleh karena itu skor harus mewujudkan wawasan terbaik yang tersedia tentang cara di mana klasifikasi dibangun dan digunakan. " (Cochran, 1954, dikutip oleh Agresti, 2002, hlm. 88-89). Dengan kata lain, memperlakukan faktor yang dipesan sebagai variabel yang diberi nilai numerik hanyalah masalah pemodelan. Asalkan masuk akal, ini hanya akan berdampak pada cara Anda menafsirkan hasilnya, dan tidak ada aturan praktis tentang bagaimana memilih representasi terbaik untuk variabel ordinal.
Pertimbangkan contoh berikut tentang konsumsi alkohol ibu dan ada atau tidak adanya cacat bawaan (Agresti, Analisis Data Kategorikal , Tabel 3.7 hal.89):
0 <1 1-2 3-5 6+
Absent 17066 14464 788 126 37
Present 48 38 5 1 1
Dalam kasus khusus ini, kita dapat memodelkan hasil menggunakan regresi logistik atau tabel asosiasi sederhana. Mari kita lakukan di R:
tab3.7 <- matrix(c(17066,48,14464,38,788,5,126,1,37,1), nr=2,
dimnames=list(c("Absent","Present"),
c("0","<1","1-2","3-5","6+")))
library(vcd)
assocstats(tab3.7)
Statistik (12.08, p = 0.016751) atau LR (6.20, p = 0.184562) yang biasa (dengan 4 df) tidak memperhitungkan tingkat keteraturan dalam konsumsi alkohol.
Memperlakukan kedua variabel sebagai ordinal dengan skor spasi yang sama (ini tidak memiliki dampak untuk variabel biner, seperti malformasi, dan kami memilih baseline sebagai 0 = tidak ada), kami dapat menguji linear dengan asosiasi linear. Pertama mari kita membangun versi meledak dari Tabel kontingensi ini:
library(reshape)
tab3.7.df <- untable(data.frame(malform=gl(2,1,10,labels=0:1),
alcohol=gl(5,2,10,labels=colnames(tab3.7))),
c(tab3.7))
# xtabs(~malform+alcohol, tab3.7.df) # check
Kemudian kita dapat menguji untuk menggunakan hubungan linier
library(coin)
#lbl_test(as.table(tab3.7))
lbl_test(malform ~ alcohol, data=tab3.7.df)
cor(sapply(tab3.7.df, as.numeric))[1,2]^2*(32574-1)
Seperti dapat dilihat, tidak ada banyak bukti hubungan yang jelas antara kedua variabel. Seperti yang dilakukan oleh Agresti, jika kita memilih untuk mengkode ulang level Alkohol sebagai {0,0.5,1.5,4,7}, yaitu menggunakan nilai-nilai mid-range untuk skala berkesinambungan yang dihipotesiskan dengan skor terakhir agak murni arbitrer, maka kita akan menyimpulkan untuk efek yang lebih besar dari konsumsi alkohol ibu pada pengembangan kelainan bawaan:
lbl_test(malform ~ alcohol, data=tab3.7.df,
scores=list(alcohol=c(0,0.5,1.5,4,7)))
menghasilkan statistik uji 6.57 dengan nilai p terkait 0,01037.
Dengan menggunakan pendekatan GLM, kami akan melanjutkan sebagai berikut. Tapi pertama-tama periksa bagaimana Alkohol dikodekan dalam R:
class(tab3.7.df$alcohol)
Ini adalah faktor unordered sederhana ( "factor"
), karenanya merupakan prediktor nominal. Sekarang, berikut adalah tiga model yang kami anggap Alkohol sebagai prediktor nominal, ordinal, atau berkelanjutan.
summary(mod1 <- glm(malform ~ alcohol, data=tab3.7.df,
family=binomial))
summary(mod2 <- glm(malform ~ ordered(alcohol), data=tab3.7.df,
family=binomial))
summary(mod3 <- glm(malform ~ as.numeric(alcohol), data=tab3.7.df,
family=binomial))
. Tes Wald tidak signifikan pada level 5% biasa. Dalam hal ini, matriks desain hanya mencakup 2 kolom: yang pertama adalah kolom konstan 1 untuk intersep, yang kedua adalah nilai numerik (1 hingga 5) untuk prediktor, seperti dalam regresi linier sederhana. Singkatnya, model ini menguji efek linear Alkohol pada hasilnya (pada skala logit).
Namun, dalam dua kasus lain ( mod1
dan mod2
), kami mendapatkan output yang berbeda karena matriks desain yang digunakan untuk memodelkan prediktor berbeda, seperti yang dapat diperiksa dengan menggunakan:
model.matrix(mod1)
model.matrix(mod2)
mod1
mod2
mod1
mod2
Anda dapat mencoba menetapkan skor baru untuk Alkohol dan melihat bagaimana hal itu akan berdampak pada kemungkinan prediksi malformasi.
tidak apa-apa menggunakan prediktor kategoris dalam model regresi logit (atau OLS) jika levelnya ordinal. Tetapi jika Anda memiliki alasan untuk memperlakukan setiap level sebagai diskrit (atau jika sebenarnya variabel kategori Anda adalah nominal daripada ordinal), maka, sebagai alternatif pengkodean dummy, Anda juga dapat menggunakan pengkodean kontras ortogonal. Untuk diskusi yang sangat lengkap & mudah diakses, lihat Judd, CM, McClelland, GH & Ryan, analisis data CS: pendekatan perbandingan model, Edn. Ke-2 (Routledge / Taylor dan Francis, New York, NY; 2008), atau hanya google "pengkodean kontras"