Bagaimana cara menjalankan analisis Regresi Logistik Ordinal dalam R dengan nilai numerik / kategorikal?

17

Data Dasar : Saya memiliki ~ 1.000 orang yang ditandai dengan penilaian: '1,' [baik] '2,' [tengah] atau '3' [buruk] - ini adalah nilai yang saya coba prediksi untuk orang-orang di masa depan . Selain itu, saya memiliki beberapa informasi demografis: jenis kelamin (kategorikal: M / F), usia (angka: 17-80), dan ras (kategorikal: hitam / kaukasia / latino).

Saya terutama punya empat pertanyaan:

  1. Saya awalnya mencoba menjalankan dataset yang dijelaskan di atas sebagai analisis regresi berganda. Tetapi saya baru-baru ini belajar bahwa karena ketergantungan saya adalah faktor yang teratur dan bukan variabel kontinu, saya harus menggunakan regresi logistik ordinal untuk sesuatu seperti ini. Saya awalnya menggunakan sesuatu seperti mod <- lm(assessment ~ age + gender + race, data = dataset), bisakah orang mengarahkan saya ke arah yang benar?

  2. Dari sana, dengan asumsi saya mendapatkan koefisien yang saya rasa nyaman, saya mengerti bagaimana cara memasukkan nilai numerik untuk x1, x2, dll. - tetapi bagaimana saya akan berurusan dengan ras, misalnya, di mana ada beberapa respons: hitam / kaukasia / latino? Jadi jika itu memberitahu saya koefisien kaukasia adalah 0,289 dan seseorang yang saya coba prediksi adalah kaukasia, bagaimana cara saya menghubungkannya kembali karena nilainya tidak numerik?

  3. Saya juga memiliki nilai acak yang hilang - beberapa untuk ras, beberapa untuk jenis kelamin, dll. Apakah saya harus melakukan sesuatu tambahan untuk memastikan ini tidak memiringkan apa pun? (Saya perhatikan ketika dataset saya dimuat ke R-Studio, ketika data yang hilang dimuat sebagai NA, R mengatakan sesuatu seperti (162 observations deleted due to missingness)- tetapi jika mereka dimuat sebagai kosong, itu tidak melakukan apa-apa.)

  4. Dengan asumsi semua ini berhasil dan saya memiliki data baru dengan jenis kelamin, usia, dan ras yang ingin saya prediksi - apakah ada cara yang lebih mudah di R untuk menjalankan semua itu melalui apa pun rumus saya dengan koefisien baru ternyata, daripada melakukannya secara manual? (Jika pertanyaan ini tidak sesuai di sini, saya dapat membawanya kembali ke forum R.)

Ryan
sumber

Jawaban:

16

Inilah sedikit info yang mungkin mengarahkan Anda ke arah yang benar.

Mengenai data Anda, apa yang Anda miliki adalah respons dengan beberapa kategori, dan kapan pun Anda mencoba memodelkan respons yang kategorikal, Anda benar untuk mencoba dan menggunakan beberapa jenis model linear umum (GLM). Dalam kasus Anda, Anda memiliki informasi tambahan yang harus Anda perhitungkan mengenai respons Anda dan itu adalah bahwa tingkat respons Anda memiliki urutan alami baik> menengah> buruk, perhatikan bagaimana hal ini berbeda dengan mencoba memodelkan respons seperti balon warna apa yang dimiliki seseorang kemungkinan untuk membeli (merah / biru / hijau), nilai-nilai ini tidak memiliki pemesanan alami. Saat melakukan model jenis ini dengan respons terurut, Anda mungkin ingin mempertimbangkan untuk menggunakan model odds proporsional.

http://en.wikipedia.org/wiki/Ordered_logit

Saya belum menggunakannya sendiri, tetapi polr()fungsi dalam paket MASS kemungkinan akan berguna, sebagai alternatif saya telah menggunakan lrm()fungsi dalam paket rms untuk melakukan jenis analisis yang serupa, dan telah menemukannya cukup berguna. Jika Anda memuat paket-paket ini gunakan saja ?polratau ?lrmuntuk informasi fungsi.

Latar belakang yang cukup bagus, ke pertanyaan Anda:

  1. Ini harus dibahas di atas, periksa paket / fungsi ini dan baca tentang regresi logistik ordinal dan model peluang proporsional

  2. Setiap kali Anda memiliki kovariat yang kategorikal (Ras / Jenis Kelamin / Warna Rambut) Anda ingin memperlakukan ini sebagai 'faktor' dalam pengkodean R Anda untuk memodelkannya dengan tepat. Penting untuk mengetahui apa faktornya dan bagaimana mereka diperlakukan, tetapi pada dasarnya Anda memperlakukan setiap kategori sebagai tingkat yang terpisah dan kemudian memodelkannya dengan cara yang tepat. Cukup baca faktor-faktor dalam model dan Anda harus bisa mengetahui apa yang sedang terjadi. Perlu diingat bahwa memperlakukan variabel kategori sebagai faktor tidak unik untuk model GLM atau model odds proporsional, tetapi biasanya bagaimana semua model berurusan dengan variabel kategori. http://www.stat.berkeley.edu/classes/s133/factors.html

  3. Nilai yang hilang kadang-kadang bisa menjadi masalah untuk ditangani, tetapi jika Anda melakukan analisis yang cukup mendasar mungkin aman untuk menghapus baris data yang mengandung nilai yang hilang (ini tidak selalu benar, tetapi berdasarkan tingkat pengalaman Anda saat ini saya menebak Anda tidak perlu khawatir dengan spesifik kapan dan bagaimana menangani nilai yang hilang). Sebenarnya inilah yang dilakukan R. Jika Anda memiliki data yang Anda gunakan untuk memodelkan, jika Anda kehilangan informasi berturut-turut untuk respons Anda atau kovariat dalam model R hanya akan mengecualikan data ini (ini adalah peringatan Anda melihat). Jelas jika Anda mengecualikan sebagian besar data Anda karena hilang, hasil Anda dapat menjadi bias dan mungkin baik untuk mencoba dan mendapatkan info lebih lanjut tentang mengapa ada begitu banyak nilai yang hilang, tetapi jika Anda Aku kehilangan 162 pengamatan dalam 10.000 baris data. Aku tidak akan terlalu banyak berkeringat. Anda dapat menggunakan metode-metode untuk menangani data yang hilang jika Anda tertarik pada beberapa hal yang lebih spesifik.

  4. Hampir semua Model R benda ( lm, glm, lrm, ...) akan memiliki terkait predict()fungsi yang akan memungkinkan Anda untuk menghitung nilai prediksi untuk dataset pemodelan Anda saat ini dan juga untuk dataset lain yang Anda ingin untuk memprediksi hasil untuk. Cukup cari ?predict.glmatau ?predict.lmcoba dan dapatkan lebih banyak info untuk jenis model apa pun yang ingin Anda gunakan. Ini adalah hal yang sangat khas yang ingin dilakukan orang dengan model, jadi yakinlah bahwa ada beberapa fungsi dan metode bawaan yang membuat melakukan ini relatif mudah.

Semoga berhasil!

Steve Reno
sumber
2
  1. Ya, logit atau probit yang dipesan akan menjadi tempat untuk memulai. Berikut ini adalah tutorial tentang logit berurutan yang menggunakan R. Pertanyaan CV lainnya mungkin dapat membantu Anda dengan hambatan apa pun yang Anda hadapi — coba tag 'logit,' 'probit,' dan 'ordinal.'

  2. kk-1caucasian

  3. Berurusan dengan data yang hilang sangat tergantung pada masalah yang dihadapi, dan ya, bagaimana Anda menangani data yang hilang dapat menimbulkan bias. Kutipan buku ini dengan baik menjelaskan empat mekanisme yang dapat menghasilkan data yang hilang, yang akan membantu Anda mempertimbangkan potensi bias dalam masalah Anda sendiri. (Khususnya, bagian 25.1, hal. 530.)

  4. Banyak paket pemodelan memiliki predictfungsi, dan memang tutorial pertama yang ditautkan di atas menyertakan demonstrasi.

Sean Easter
sumber
Terima kasih banyak! Tindak lanjut cepat pada # 2: Itu asumsi dasar saya - tetapi kode apa yang ada lebih dari dua variabel? Misalnya, kaukasia, hitam, latino.
Ryan
Selamat datang! Dalam contoh itu, Anda akan memilih satu kategori untuk dimasukkan ke intersep, katakanlah latino, dan boneka untuk dua lainnya. Nilai 1 untuk caucasianboneka menunjukkan responden Kaukasia, serupa untuk blackvariabel boneka. Nilai 0 untuk keduanya menunjukkan responden Latin. Masuk akal?
Sean Easter
Jadi saya harus mengubah dataset dari satu kolom dengan beberapa respons ('hitam,' 'kaukasia,' dan 'latino') menjadi satu kolom 'hitam' dengan 1s dan 0s, satu kolom 'kaukasia' dengan 1s dan 0s, dan satu Kolom 'latino' dengan 1s dan 0s?
Ryan
Itu salah satu pendekatan yang akan bekerja dengan baik. Satu-satunya perbedaan dari menggunakan dua kolom adalah bagaimana Anda menafsirkan intersep. Anda dapat melakukan ini secara manual, tetapi saya percaya faktor-faktor dalam R dapat menanganinya untuk Anda. Coba iniini berjalan dengan menggunakan faktor-faktor dengan contoh serupa. Bersulang!
Sean Easter
1
Tautan ke tutorial rusak. Jika seseorang dapat memperbaikinya, itu akan bagus!
Dan Hicks