Ok, saya memiliki regresi logistik dan telah menggunakan predict()
fungsi untuk mengembangkan kurva probabilitas berdasarkan perkiraan saya.
## LOGIT MODEL:
library(car)
mod1 = glm(factor(won) ~ as.numeric(bid), data=mydat, family=binomial(link="logit"))
## PROBABILITY CURVE:
all.x <- expand.grid(won=unique(won), bid=unique(bid))
y.hat.new <- predict(mod1, newdata=all.x, type="response")
plot(bid<-000:1000,predict(mod1,newdata=data.frame(bid<-c(000:1000)),type="response"), lwd=5, col="blue", type="l")
Ini bagus, tetapi saya ingin tahu tentang merencanakan interval kepercayaan untuk probabilitas. Saya sudah mencoba plot.ci()
tetapi tidak berhasil. Adakah yang bisa mengarahkan saya ke beberapa cara untuk menyelesaikan ini, sebaiknya dengan car
paket atau pangkalan R.
r
logistic
confidence-interval
ATMathew
sumber
sumber
Jawaban:
Kode yang Anda gunakan memperkirakan model regresi logistik menggunakan
glm
fungsi. Anda tidak memasukkan data, jadi saya hanya akan menebusnya.Model regresi logistik memodelkan hubungan antara variabel respons biner dan, dalam hal ini, satu prediktor kontinu. Hasilnya adalah probabilitas logit-transformed sebagai hubungan linier dengan prediktor. Dalam kasus Anda, hasilnya adalah respons biner yang terkait dengan menang atau tidaknya menang dalam judi dan diprediksi oleh nilai taruhan. Koefisien dari
mod1
diberikan dalam odds log (yang sulit diinterpretasikan), sesuai dengan:Untuk mengonversi peluang yang dicatat menjadi probabilitas, kami dapat menerjemahkan di atas ke
Anda dapat menggunakan informasi ini untuk mengatur plot. Pertama, Anda memerlukan rentang variabel prediktor:
Kemudian menggunakan
predict
, Anda dapat memperoleh prediksi berdasarkan model AndaPerhatikan bahwa nilai yang dipasang juga dapat diperoleh melalui
Dengan menentukan
se.fit=TRUE
, Anda juga mendapatkan kesalahan standar yang terkait dengan setiap nilai yang dipasang. Hasilnyadata.frame
adalah matriks dengan komponen-komponen berikut: prediksi yang dipasang (fit
), estimasi kesalahan standar (se.fit
), dan skalar yang memberikan akar kuadrat dari dispersi yang digunakan untuk menghitung kesalahan standar (residual.scale
). Dalam kasus logit binomial, nilai akan menjadi 1 (yang dapat Anda lihat dengan memasukkanpreddat$residual.scale
dalamR
). Jika Anda ingin melihat contoh dari apa yang Anda hitung sejauh ini, Anda bisa mengetikhead(data.frame(preddat))
.Langkah selanjutnya adalah mengatur plot. Saya ingin mengatur area plot kosong dengan parameter terlebih dahulu:
Sekarang Anda dapat melihat di mana penting untuk mengetahui cara menghitung probabilitas yang dipasang. Anda dapat menggambar garis yang sesuai dengan probabilitas yang dipasang mengikuti rumus kedua di atas. Menggunakan
preddat data.frame
Anda dapat mengonversi nilai yang dipasang ke probabilitas dan menggunakannya untuk memplot garis terhadap nilai variabel prediktor Anda.Akhirnya, jawab pertanyaan Anda, interval kepercayaan dapat ditambahkan ke plot dengan menghitung probabilitas untuk nilai yang dipasang
+/- 1.96
dikali kesalahan standar:Plot yang dihasilkan (dari data yang dihasilkan secara acak) akan terlihat seperti ini:
Demi kepentingan, inilah semua kode dalam satu potongan:
(Catatan: Ini adalah jawaban yang diedit dalam upaya untuk membuatnya lebih relevan dengan stats.stackexchange.)
sumber
se.fit
didefinisikan?predict(..., se.fit=TRUE)
.Ini adalah modifikasi dari solusi @ smillig. Saya menggunakan alat rapi di sini, dan juga menggunakan
linkinv
fungsi yang merupakan bagian dari objek model GLMmod1
. Dengan begitu, Anda tidak perlu membalikkan fungsi logistik secara manual, dan pendekatan ini akan berfungsi terlepas dari GLM spesifik apa yang Anda muat.sumber