Bagaimana memahami keluaran dari fungsi polr R (regresi logistik yang dipesan)?


26

Saya baru mengenal R, memerintahkan regresi logistik, dan polr.

Bagian "Contoh" di bagian bawah halaman bantuan untuk polr (yang cocok dengan model regresi logistik atau probit ke respons faktor yang dipesan) menunjukkan

options(contrasts = c("contr.treatment", "contr.poly"))
house.plr <- polr(Sat ~ Infl + Type + Cont, weights = Freq, data = housing)
pr <- profile(house.plr)
plot(pr)
pairs(pr)
  • Informasi apa yang prdikandungnya? Halaman bantuan pada profil bersifat umum, dan tidak memberikan panduan untuk polr.

  • Apa yang plot(pr)ditampilkan? Saya melihat enam grafik. Masing-masing memiliki sumbu X yang numerik, meskipun label adalah variabel indikator (terlihat seperti variabel input yang merupakan indikator untuk nilai ordinal). Maka sumbu Y adalah "tau" yang sama sekali tidak dapat dijelaskan.

  • Apa yang pairs(pr)ditampilkan? Sepertinya plot untuk setiap pasangan variabel input, tapi sekali lagi saya tidak melihat penjelasan sumbu X atau Y.

  • Bagaimana orang bisa mengerti jika modelnya cocok? summary(house.plr)menunjukkan Penyimpangan Sisa 3479.149 dan AIC (Akaike Information Criterion?) dari 3495.149. Apakah itu bagus? Dalam hal ini hanya berguna sebagai ukuran relatif (yaitu membandingkan dengan kecocokan model lain), apakah ukuran absolut yang baik? Apakah penyimpangan residual sekitar chi-kuadrat didistribusikan? Bisakah seseorang menggunakan "% diprediksi dengan benar" pada data asli atau validasi silang? Apa cara termudah untuk melakukan itu?

  • Bagaimana seseorang menerapkan dan menafsirkan anovamodel ini? Dokumen mengatakan "Ada metode untuk fungsi pemasangan model standar, termasuk prediksi, ringkasan, vcov, anova." Namun, menjalankan anova(house.plr)menghasilkananova is not implemented for a single "polr" object

  • Bagaimana cara seseorang mengartikan nilai t untuk setiap koefisien? Tidak seperti beberapa model yang cocok, tidak ada nilai P di sini.

Saya menyadari ini banyak pertanyaan, tetapi masuk akal bagi saya untuk bertanya sebagai satu bundel ("bagaimana saya menggunakan hal ini?") Daripada 7 pertanyaan yang berbeda. Setiap informasi dihargai.


3
@dfrankow Agak kasar dan tentu saja sangat membantu sebagian untuk dua pertanyaan pertama Anda, tetapi methods("profile")akan memberi Anda (S3 dalam kasus ini) metode yang terkait dengan profileobjek R , maka Anda akan melihat daripada ada metode khusus untuk polrhasil, yang dapat Anda telusuri on-line dengan mengetik getAnywhere("profile.polr")di prompt R.
chl

1
Terima kasih! Kode sumbernya bagus. Penjelasan akan lebih baik. :)
dfrankow

1
Seseorang menunjuk saya ke "Statistik Terapan Modern dengan S" oleh Venables dan Ripley. Bagian 7.3 memiliki "Contoh tabel frekuensi empat arah" yang mencakup model rumah ini secara luas. Membaca ..
dfrankow

Sebenarnya bagian ini adalah "model peluang proporsional"
dfrankow

Jawaban:


17

Saya menyarankan Anda melihat buku-buku tentang analisis data kategorikal (lih. Analisis Data Kategorikal Alan Agresti, 2002) untuk penjelasan dan pemahaman yang lebih baik tentang regresi logistik yang dipesan . Semua pertanyaan yang Anda ajukan pada dasarnya dijawab oleh beberapa bab dalam buku-buku tersebut. Jika Anda hanya tertarik pada Rcontoh terkait, Memperluas Model Linier dalam R oleh Julian Faraway (CRC Press, 2008) adalah referensi yang bagus.

Sebelum saya menjawab pertanyaan Anda, regresi logistik berurutan adalah kasus model multinomial logit di mana kategori dipesan. Misalkan kita memiliki memerintahkan kategori dan bahwa untuk individu i , dengan respon ordinal Y i , p i j = P ( Y i = j ) untuk j = 1 , . . . , J . Dengan respons yang dipesan, seringkali lebih mudah untuk bekerja dengan probabilitas kumulatif, γ i j = PJiYipij=P(Yi=j)j=1,...,J . Probabilitas kumulatif meningkat dan tidak berubah untuk menggabungkan kategori yang berdekatan. Selanjutnya, γ i J = 1 , jadi kita hanya perlu memodelkanprobabilitas.γij=P(Yij)γiJ=1J-1

Sekarang kami ingin menautkan s ke covariates . Dalam kasus Anda, memiliki 3 tingkat memerintahkan: , , . Lebih masuk akal memperlakukan mereka seperti yang diperintahkan daripada tidak teratur. Variabel yang tersisa adalah kovariat Anda. Model spesifik yang Anda pertimbangkan adalah model odds proporsional dan secara matematis setara dengan: xγsayajxSatlowmediumhigh

mana  γ j ( x i ) = P ( Y ij | x i )

logit γj(xsaya)=θj-βTxsaya,j=1...J-1
dimana γj(xsaya)=P(Ysayaj|xsaya)

Disebut demikian karena peluang relatif untuk membandingkan dan adalah:x 1 x 2Yjx1x2

(γj(x1)1-γj(x1))/(γj(x2)1-γj(x2))=exp(-βT(x1-x2))

Perhatikan, ungkapan di atas tidak tergantung pada . Tentu saja, asumsi odds proporsional perlu diperiksa untuk dataset yang diberikan.j

Sekarang, saya akan menjawab beberapa (1, 2, 4) pertanyaan.

Bagaimana orang bisa mengerti jika modelnya cocok? ringkasan (house.plr) menunjukkan Penyimpangan Residual 3479.149 dan AIC (Akaike Information Criterion?) dari 3495.149. Apakah itu bagus? Dalam hal ini hanya berguna sebagai ukuran relatif (yaitu membandingkan dengan kecocokan model lain), apakah ukuran absolut yang baik? Apakah penyimpangan residual sekitar chi-kuadrat didistribusikan? Bisakah seseorang menggunakan "% diprediksi dengan benar" pada data asli atau validasi silang? Apa cara termudah untuk melakukan itu?

Model yang cocok polradalah yang spesial glm, jadi semua asumsi yang berlaku untuk glmpegangan tradisional di sini. Jika Anda merawat parameter dengan benar, Anda dapat mengetahui distribusinya. Khususnya, untuk menguji apakah modelnya bagus atau tidak, Anda mungkin ingin melakukan uji goodness of fit , yang menguji nol berikut (perhatikan ini halus, kebanyakan Anda ingin menolak nol, tetapi di sini Anda tidak ingin tolak untuk mendapatkan kecocokan yang baik):

HHai: model saat ini cukup baik 

Anda akan menggunakan tes chi-square untuk ini. Nilai p diperoleh sebagai:

1-pchisq(deviance(house.plr),df.residual(house.plr))

Sebagian besar waktu Anda berharap untuk mendapatkan nilai p lebih besar dari 0,05 sehingga Anda tidak menolak nol untuk menyimpulkan bahwa model tersebut cocok (kebenaran filosofis diabaikan di sini).

AIC harusnya tinggi agar pas pada saat yang sama Anda tidak ingin memiliki sejumlah besar parameter. stepAICadalah cara yang baik untuk memeriksa ini.

Ya, Anda pasti dapat menggunakan validasi silang untuk melihat apakah prediksi tersebut berlaku. Lihat predictfungsi (opsi:) type = "probs"di ?polr. Yang perlu Anda urus adalah kovariat.

Informasi apa yang terkandung dalam pr? Halaman bantuan pada profil bersifat umum, dan tidak memberikan panduan untuk polr

Seperti yang ditunjukkan oleh @chl dan lainnya, prberisi semua informasi yang diperlukan untuk mendapatkan CI dan informasi terkait lainnya yang mungkin dari polr fit. Semua glms cocok menggunakan metode estimasi kuadrat terkecil tertimbang iteratif untuk kemungkinan log. Dalam optimasi ini Anda mendapatkan banyak informasi (silakan lihat referensi) yang akan diperlukan untuk menghitung Variance Covariance Matrix, CI, t-value, dll. Ini mencakup semuanya.

Bagaimana cara seseorang mengartikan nilai t untuk setiap koefisien? Tidak seperti beberapa model> cocok, tidak ada nilai P di sini.

Tidak seperti model linear normal (khusus glm), yang lain glmtidak memiliki distribusi t yang baik untuk koefisien regresi. Oleh karena itu yang bisa Anda dapatkan hanyalah estimasi parameter dan matriks kovarians varians asimptotiknya menggunakan teori max-likelihood. Karena itu:

Perbedaan(β^)=(XTWX)-1ϕ^

Perkirakan dibagi dengan kesalahan standarnya adalah apa yang disebut BDR dan WV nilai-t (saya mengasumsikan MASSkonvensi di sini). Ini setara dengan nilai-t dari regresi linier normal tetapi tidak mengikuti distribusi-t. Menggunakan CLT, secara asimptotik terdistribusi normal. Tetapi mereka memilih untuk tidak menggunakan kira-kira ini (kurasa), karenanya tidak ada nilai-p. (Saya harap saya tidak salah, dan jika saya salah, saya harap BDR tidak ada di forum ini. Saya berharap lebih jauh, seseorang akan memperbaiki saya jika saya salah.)


Saya akan menambahkan lebih banyak.
suncoolsu

1
Terima kasih untuk ini. Saya sudah membacanya beberapa kali. Masih banyak pertanyaan. 1. Secara fungsional dalam R, bagaimana seseorang menguji asumsi odds proporsional? 2. Apakah Anda yakin bahwa tes chi-squared benar? Pada contoh ini mengembalikan 0, yang berarti .. fit jelek? Tetapi beberapa nilai t cukup tinggi (InflHigh 10.1, InflMedium 5.4, ContHigh 3.7). 3. Apa yang ditunjukkan plot atau pasangan?
dfrankow

Terima kasih atas jawaban suncoolsu Anda yang luas. Saya dalam situasi yang sama dan memiliki beberapa pertanyaan. 1. Saya juga mendapatkan 0 untuk setiap model menggunakan persamaan uji chi-sq Anda. 2. Halaman wikipedia di AIC mengatakan "model yang disukai adalah model dengan nilai AIC minimum", tetapi Anda berkata, "AIC harusnya tinggi untuk kecocokan yang baik." Saya mencoba merekonsiliasi akun-akun ini.
Sam Swift

@dfrankow dan @Sam Swift. Maaf, agak sibuk menulis beberapa makalah. Ok - jika Anda mendapatkan nilai-p = 0, itu berarti model tersebut TIDAK cocok karena uji goodness of fit gagal. Mengenai masalah AIC, wikipedia dan saya menggunakan konvensi yang berbeda untuk itu. Saya menggunakan salah satu yang digunakan oleh BDR dan WV. (lih. Memperluas Model linear dalam R, oleh Dr. Julian Faraway)
suncoolsu

Ada beberapa pertanyaan khusus untuk nilai 0/1 p dan interpretasi AIC yang mungkin bermanfaat bagi Anda: stats.stackexchange.com/questions/15223/… stats.stackexchange.com/questions/81427/…
Scott

3

Saya sangat menikmati percakapan di sini, namun saya merasa bahwa jawaban tidak benar menjawab semua komponen (sangat baik) untuk pertanyaan yang Anda ajukan. Bagian kedua dari halaman contoh polradalah tentang profiling. Referensi teknis yang baik di sini adalah Yang Mulia dan Ripley yang membahas profiling dan apa fungsinya. Ini adalah teknik kritis ketika Anda melangkah keluar dari zona nyaman dengan memasang model keluarga eksponensial dengan kemungkinan penuh (GLM biasa).

Keberangkatan utama di sini adalah penggunaan ambang kategoris. Anda akan melihat POLR tidak memperkirakan istilah intersep yang biasa. Sebaliknya, ada parameter gangguan : ambang batas yang risiko pasnya cenderung jatuh dalam kumulatif tertentu dari kategori yang mungkin. Karena ambang ini tidak pernah diestimasi bersama, kovariansnya dengan parameter model tidak diketahui. Tidak seperti GLM kami tidak dapat "mengganggu" suatu koefisien dengan jumlah dan memastikan bagaimana hal itu dapat mempengaruhi estimasi lainnya. Kami menggunakan profil untuk melakukan penghitungan ini untuk ambang gangguan. Profiling adalah subjek besar, tetapi pada dasarnya tujuannya adalah bersemangat mengukur kovarians dari koefisien regresi ketika model memaksimalkan sebuah kemungkinan yang tidak teratur, seperti dengan , , , dank-1klmernlspolrglm.nb.

Halaman bantuan ?profile.glmharus berguna karena polrobjek pada dasarnya adalah GLM (ditambah ambang kategori). Terakhir, Anda benar-benar dapat memuncak pada kode sumber, jika ada gunanya, menggunakan getS3method('profile', 'polr'). Saya banyak menggunakan getS3methodfungsi ini karena, sementara R tampaknya bersikeras banyak metode harus disembunyikan, orang dapat belajar banyak tentang implementasi dan metode dengan meninjau kode.

• Informasi apa yang dimuat pr? Halaman bantuan pada profil bersifat umum, dan tidak memberikan panduan untuk polr.

pradalah profile.polr, profileobjek (kelas warisan profile). Ada entri untuk setiap kovariat. Profiler ini mengulangi setiap kovariat, menghitung ulang model optimal yang sesuai dengan kovariat yang ditetapkan pada jumlah yang sedikit berbeda. Output menunjukkan nilai tetap kovariat yang diukur sebagai perbedaan "z-score" dari nilai estimasi dan efek tetap yang dihasilkan pada kovariat lainnya. Misalnya, jika Anda melihat pr$InflMedium, Anda akan mencatat bahwa, ketika "z" adalah 0, efek tetap lainnya sama seperti yang ditemukan dalam fit aslinya.

• Apa yang ditunjukkan plot (pr)? Saya melihat enam grafik. Masing-masing memiliki sumbu X yang numerik, meskipun label adalah variabel indikator (terlihat seperti variabel input yang merupakan indikator untuk nilai ordinal). Maka sumbu Y adalah "tau" yang sama sekali tidak dapat dijelaskan.

Sekali lagi, ?plot.profileberikan deskripsi. Plotnya secara kasar menunjukkan bagaimana koefisien regresi kovari. tau adalah perbedaan skala, skor z sebelumnya, jadi nilai 0nya memberikan koefisien fit optimal, digambarkan dengan tanda centang. Anda tidak akan mengatakan untuk cocok ini berperilaku sangat baik, tetapi "garis" itu sebenarnya splines. Jika kemungkinan berperilaku sangat tidak teratur pada kecocokan optimal, Anda akan mengamati perilaku aneh dan tak terduga dalam plot. Ini akan mendorong Anda untuk memperkirakan output menggunakan estimasi kesalahan yang lebih kuat (bootstrap / jackknife), untuk menghitung CI menggunakan method='profile', untuk mengkode ulang variabel, atau untuk melakukan diagnostik lainnya.

• Apa yang ditampilkan pasangan? Sepertinya plot untuk setiap pasangan variabel input, tapi sekali lagi saya tidak melihat penjelasan sumbu X atau Y.

File bantuan mengatakan: "Metode pasangan menunjukkan, untuk setiap pasangan parameter x dan y, dua kurva berpotongan pada perkiraan kemungkinan maksimum, yang memberikan lokasi titik-titik di mana garis singgung ke kontur profil bivariat kemungkinan menjadi vertikal. dan horizontal, masing-masing. Dalam kasus kemungkinan profil normal bivariat yang tepat, dua kurva ini akan menjadi garis lurus yang memberikan sarana kondisional dari y | x dan x | y, dan konturnya akan menjadi elips. " Pada dasarnya, mereka lagi membantu Anda memvisualisasikan elips kepercayaan diri. Sumbu non-ortogonal menunjukkan langkah-langkah yang sangat kovariabel, seperti InfMedium dan InfHigh yang secara intuitif sangat terkait. Sekali lagi, kemungkinan tidak teratur akan menyebabkan gambar yang cukup membingungkan di sini.

• Bagaimana seseorang bisa mengerti jika modelnya cocok? ringkasan (house.plr) menunjukkan Penyimpangan Residual 3479.149 dan AIC (Akaike Information Criterion?) dari 3495.149. Apakah itu bagus? Dalam hal ini hanya berguna sebagai ukuran relatif (yaitu membandingkan dengan kecocokan model lain), apakah ukuran absolut yang baik? Apakah penyimpangan residual sekitar chi-kuadrat didistribusikan? Bisakah seseorang menggunakan "% diprediksi dengan benar" pada data asli atau validasi silang? Apa cara termudah untuk melakukan itu?

Salah satu asumsi yang baik untuk dinilai adalah asumsi odds proporsional. Ini agak tercermin dalam uji global (yang menilai polr terhadap model loglinear jenuh). Keterbatasan di sini adalah bahwa dengan data yang besar, tes global selalu gagal. Akibatnya, menggunakan grafik dan memeriksa perkiraan (betas) dan presisi (UK) untuk model loglinear dan fit polr adalah ide yang baik. Jika mereka sangat tidak setuju, mungkin ada sesuatu yang salah.

Dengan hasil yang dipesan, sulit untuk menentukan persen persetujuan. Bagaimana Anda akan memilih classifier berdasarkan model, dan jika Anda melakukan bagaimana Anda akan suss kinerja yang buruk dari classifier yang buruk. modeadalah pilihan yang buruk. Jika saya memiliki 10 kategori log dan prediksi saya selalu ada satu kategori, mungkin itu bukan hal yang buruk. Lebih lanjut, model saya dapat memprediksi dengan benar peluang 40% dari jawaban 0, tetapi juga peluang 20% ​​dari 8, 9, 10. Jadi, jika saya amati 9 apakah itu baik atau buruk? Jika Anda harus mengukur kesepakatan, gunakan kappa tertimbang, atau bahkan MSE. Model loglinear akan selalu menghasilkan kesepakatan terbaik. Bukan itu yang dilakukan POLR.

• Bagaimana seseorang menerapkan dan menafsirkan anova pada model ini? Dokumen mengatakan "Ada metode untuk fungsi pemasangan model standar, termasuk prediksi, ringkasan, vcov, anova." Namun, menjalankan anova (house.plr) menghasilkan anova tidak diimplementasikan untuk objek "polr" tunggal

Anda dapat menguji model bersarang dengan waldtestdan lrtestdalam lmtestpaket di R. Ini setara dengan ANOVA. Interpretasinya persis sama dengan GLM.

• Bagaimana seseorang mengartikan nilai t untuk setiap koefisien? Tidak seperti beberapa model yang cocok, tidak ada nilai P di sini.

Sekali lagi, tidak seperti model linier, model POLR mampu memiliki masalah dengan kemungkinan tidak teratur sehingga kesimpulan berdasarkan Hessian bisa sangat tidak stabil. Ini analog dengan memasang model campuran, lihat misalnya file bantuan confint.merModuntuk paket lme4. Di sini, penilaian yang dibuat dengan profil menunjukkan bahwa kovarians berperilaku baik. Programer akan melakukan ini secara default, kecuali bahwa profil dapat sangat intensif secara komputasi, dan dengan demikian mereka menyerahkannya kepada Anda. Jika Anda harus melihat inferensi berbasis Wald, gunakan coeftest(house.plr)dari lrtestpaket.


2

Untuk 'menguji' (yaitu, mengevaluasi) asumsi peluang proporsional dalam R, Anda dapat menggunakan residuals.lrm () dalam paket Desain Frank Harrell Jr. Jika Anda mengetik? Residuals.lrm, ada contoh cepat-untuk-meniru bagaimana Frank Harrell merekomendasikan mengevaluasi asumsi peluang proporsional (yaitu, secara visual, bukan dengan uji tombol-tekan). Perkiraan desain memerintahkan regresi logistik menggunakan lrm (), yang dapat Anda gantikan dengan polr () dari MASS.

Untuk contoh yang lebih formal tentang cara menguji asumsi peluang proporsional secara visual dalam R, lihat: Makalah: Model Regresi Respons Ordinal dalam Ekologi Penulis: Antoine Guisan dan Frank E. Harrell Sumber: Journal of Vegetation Science, Vol. 11, No. 5 (Oktober, 2000), hlm. 617-626


3
Saya sangat menghargai tanggapan Anda. Namun, tujuan StackExchange adalah untuk memberikan jawaban, bukan referensi. Ahli statistik tampaknya sangat rentan terhadap masalah referensi ini. Apakah ada detail yang bisa Anda tambahkan tentang cara menggunakan residuals.lrm? Misalnya, contoh perintah dan contoh menafsirkan grafik untuk contoh house.plr?
dfrankow

1
Pembaruan dari situs web penulis: "Paket Desain sekarang usang. Pengguna R harus menggunakan paket rms sebagai gantinya". Mark, respons Anda sangat membantu saya.
Tal Galili
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.