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
pr
dikandungnya? 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
anova
model ini? Dokumen mengatakan "Ada metode untuk fungsi pemasangan model standar, termasuk prediksi, ringkasan, vcov, anova." Namun, menjalankananova(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.
methods("profile")
akan memberi Anda (S3 dalam kasus ini) metode yang terkait denganprofile
objek R , maka Anda akan melihat daripada ada metode khusus untukpolr
hasil, yang dapat Anda telusuri on-line dengan mengetikgetAnywhere("profile.polr")
di prompt R.Jawaban:
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
R
contoh 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 = PJ i Yi pij=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(Yi≤j) γiJ=1 J- 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γsaya j x
Sat
low
medium
high
mana γ j ( x i ) = P ( Y i ≤ j | x i )
Disebut demikian karena peluang relatif untuk membandingkan dan adalah:x 1 x 2Y≤ j 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.
Model yang cocok
polr
adalah yang spesialglm
, jadi semua asumsi yang berlaku untukglm
pegangan 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):Anda akan menggunakan tes chi-square untuk ini. Nilai p diperoleh sebagai:
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.
stepAIC
adalah cara yang baik untuk memeriksa ini.Ya, Anda pasti dapat menggunakan validasi silang untuk melihat apakah prediksi tersebut berlaku. Lihat
predict
fungsi (opsi:)type = "probs"
di?polr
. Yang perlu Anda urus adalah kovariat.Seperti yang ditunjukkan oleh @chl dan lainnya,
pr
berisi semua informasi yang diperlukan untuk mendapatkan CI dan informasi terkait lainnya yang mungkin daripolr fit
. Semuaglm
s 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.Tidak seperti model linear normal (khusus
glm
), yang lainglm
tidak 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:Perkirakan dibagi dengan kesalahan standarnya adalah apa yang disebut BDR dan WV nilai-t (saya mengasumsikan
MASS
konvensi 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.)sumber
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
polr
adalah 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 - 1 k
lmer
nls
polr
glm.nb
.Halaman bantuan
?profile.glm
harus berguna karenapolr
objek pada dasarnya adalah GLM (ditambah ambang kategori). Terakhir, Anda benar-benar dapat memuncak pada kode sumber, jika ada gunanya, menggunakangetS3method('profile', 'polr')
. Saya banyak menggunakangetS3method
fungsi ini karena, sementara R tampaknya bersikeras banyak metode harus disembunyikan, orang dapat belajar banyak tentang implementasi dan metode dengan meninjau kode.pr
adalahprofile.polr, profile
objek (kelas warisanprofile
). 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 melihatpr$InflMedium
, Anda akan mencatat bahwa, ketika "z" adalah 0, efek tetap lainnya sama seperti yang ditemukan dalam fit aslinya.Sekali lagi,
?plot.profile
berikan 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 menggunakanmethod='profile'
, untuk mengkode ulang variabel, atau untuk melakukan diagnostik lainnya.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.
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.
mode
adalah 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.Anda dapat menguji model bersarang dengan
waldtest
danlrtest
dalamlmtest
paket di R. Ini setara dengan ANOVA. Interpretasinya persis sama dengan GLM.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.merMod
untuk 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, gunakancoeftest(house.plr)
darilrtest
paket.sumber
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
sumber