Saya mencoba melakukan regresi logit yang dipesan. Saya menjalankan model seperti itu (hanya model kecil yang bodoh memperkirakan jumlah perusahaan di pasar dari ukuran pendapatan dan populasi). Pertanyaan saya adalah tentang prediksi.
nfirm.opr<-polr(y~pop0+inc0, Hess = TRUE)
pr_out<-predict(nfirm.opr)
Ketika saya menjalankan prediksi (yang saya coba gunakan untuk mendapatkan prediksi y), hasilnya adalah 0, 3, atau 27, yang sama sekali tidak mencerminkan apa yang seharusnya menjadi prediksi berdasarkan prediksi manual saya dari koefisien estimasi dan penyadapan. Adakah yang tahu bagaimana mendapatkan prediksi "akurat" untuk model logit yang saya pesan?
EDIT
Untuk memperjelas kekhawatiran saya, data respons saya memiliki pengamatan di semua tingkatan
>head(table(y))
y
0 1 2 3 4 5
29 21 19 27 15 16
di mana sebagai variabel prediksi saya tampaknya berkumpul
> head(table(pr_out))
pr_out
0 1 2 3 4 5
117 0 0 114 0 0
r
econometrics
logit
ordered-logit
prototoast
sumber
sumber
predict
fungsi berbeda dari yang Anda hasilkan secara manual? Bagaimana struktur variabel dependen Anda? Berikan contoh yang dapat direproduksi.polr()
terhadap fungsi lain? Anda bisa mencobalrm()
dari paketrms
:lrmFit <- lrm(y ~ pop0 + inc0); predict(lrmFit, type="fitted.ind")
. Pilihan lain adalahvglm()
dari paketVGAM
:vglmFit <- vglm(y ~ pop0 + inc0, family=propodds); predict(vglmFit, type="response")
. Keduanya mengembalikan matriks probabilitas kategori yang diprediksi. Lihat jawaban saya untuk mendapatkan kategori yang diprediksi dari sana.Jawaban:
polr()
MASS
polr()
Untuk kemungkinan pilihan yang diterapkan dalam fungsi lain, lihat jawaban ini . Fungsi logistik adalah kebalikan dari fungsi logit, sehingga probabilitas yang diprediksi adalahp^(Y⩽g)
Probabilitas kategori yang diprediksi adalah . Berikut adalah contoh yang dapat direproduksi dalam R dengan dua prediktor . Untuk variabel ordinal , saya memotong variabel kontinu yang disimulasikan menjadi 4 kategori.P^(Y=g)=P^(Y≤g)−P^(Y≤g−1) X1,X2 Y
Sekarang pas menggunakan model odds proporsional menggunakan
polr()
dan dapatkan matriks probabilitas kategori yang diprediksi menggunakanpredict(polr(), type="probs")
.Untuk memverifikasi hasil ini secara manual, kita perlu mengekstraksi estimasi parameter, dari ini menghitung log yang diprediksi, dari log ini menghitung probabilitas yang diprediksi , dan kemudian mengikat probabilitas kategori yang diprediksi ke matriks .p^(Y⩽g)
Bandingkan dengan hasil dari
polr()
.Untuk kategori yang diprediksi,
predict(polr(), type="class")
pilih saja - untuk setiap pengamatan - kategori dengan probabilitas tertinggi.Bandingkan dengan hasil dari
polr()
.sumber