Birden Çok Tahmincisi Olan Bir Logit Modeli için Olasılık Eğrisini Grafikleme


12

Aşağıdaki olasılık işlevim var:

prob=11+e-z

nerede

z=B0+B1X1++BnXn.

Modelim şöyle görünüyor

Pr(Y=1)=11+tecrübe(-[-3.92+0.014x(teklif)])

Bu, aşağıdaki gibi görünen bir olasılık eğrisi aracılığıyla görselleştirilir.

resim açıklamasını buraya girin

Orijinal regresyon denklemime birkaç değişken eklemeyi düşünüyorum. Diyelim ki modele cinsiyet (kategorik: F ve M) ve yaş (kategorik: <25 ve> 26) ekliyorum, bununla bitiyorum:

Pr(Y=1)=11+exp([3.92+0.014×(bid)+0.25×(gender)+0.15×(age)])

RI'de benzer bir olasılık eğrisi oluşturabilir, bu da bana üç yordayıcıyı hesaplarken Y = 1 olasılığını söyleyecektir. Kaybettiğim yerde, bu varyasyonların olası her permütasyonu için olasılıkları bulmak istiyorum.

Dolayısıyla, teklif = 1, cinsiyet = M ve yaş> = 26 olduğunda, Y = 1'in olasılığı nedir? Benzer şekilde, teklif = 2, cinsiyet = F ve yaş> = 26 olduğunda, Y = 1 olma olasılığı nedir?

Bunu görselleştirmeme olanak tanıyan bir olasılık eğrisi oluşturmak istiyorum.

Biri yardım edebilir mi? Bir logit modelden ne tür bilgileri toplayabileceğini tamamen yanlış anlayabilirim, ama lütfen bana teoriyi yanlış anladığımı da söyle.


Kodun bunu R'de yapmasını mı, yoksa sadece sorunu kavramsal olarak mı anlamasını istiyorsunuz?
gung - Monica'yı eski durumuna döndürün

Eğer seçmek zorunda olsaydım, sorunu kavramsal olarak söylerdim. Sanırım kendi başıma çözebileceğim R kodunu düşünüyorum.
ATMathew

2
Sıradan (en küçük kareler) regresyon ile aynı sorunu çözmek konusunda , yanıtı neden sadece günlük oranları (sadece ) olarak ifade edip bildiğiniz teknikleri kullanmıyorsunuz? B0+B1X1++BnXn
whuber

1
Elbette, @FrankHarrell rms paketine bir göz atın ( RMS web sitesinde kapsamlı belgeler bulunabilir ). Başlangıç ile Predict()ve plot.Predict()işlevleri bu komplo içerir (neler yapılabileceğini bir fikir edinmesini bir fonksiyonu olarak ile varsayılan değerlerinde seti, veya seçtiğiniz sabit değerler). Pr(Y=1|x2,...,xp)x1x2,...,xp
chl

Yanıtlar:


24

Neyse ki sizin için sadece bir tane sürekli değişkeniniz var. Böylece, her biri BID ve arasındaki ilişkiye sahip dört (yani, 2 SEX x 2 YAŞ) grafik yapabilirsiniz . Alternatif olarak, üzerinde dört farklı çizgi bulunan bir çizim yapabilirsiniz (bunları ayırt etmek için farklı çizgi stilleri, ağırlıklar veya renkler kullanabilirsiniz). Bu öngörülen çizgileri, bir dizi BID değeri için dört kombinasyonun her birindeki regresyon denklemini çözerek elde edebilirsiniz. p(Y=1)

Daha karmaşık bir durum, birden fazla sürekli eş değişkeninizin olduğu yerdir. Böyle bir durumda, genellikle bir anlamda 'birincil' olan belirli bir ortak değişken vardır. Bu ortak değişken X ekseni için kullanılabilir. Daha sonra diğer ortak değişkenlerin önceden belirlenmiş birkaç değerini, genellikle ortalama ve +/- 1SD'yi çözersiniz. Diğer seçenekler arasında çeşitli 3B çizimler, kopyalar veya etkileşimli grafikler bulunur.

Burada farklı bir soruya cevabım, 2'den fazla boyuttaki verileri keşfetmek için bir dizi grafik hakkında bilgi içeriyor. Durumunuz temel olarak benzerdir, ancak ham değerler yerine modelin öngörülen değerlerini sunmakla ilgilenirsiniz.

Güncelleme:

Bu grafikleri yapmak için R bazı basit örnek kod yazdım. Birkaç şeyi not edeyim: 'Eylem' erken gerçekleştiğinden, sadece BID'yi 700'den geçirdim (ancak 2000'e kadar genişletmekten çekinmeyin). Bu örnekte, belirttiğiniz işlevi kullanıyorum ve ilk kategoriyi (yani, kadın ve genç) referans kategorisi olarak alıyorum (R'de varsayılan). Onun içinde @whuber notları gibi açıklama, LR modelleri günlük oranlarında doğrusaldır, bu nedenle tahmin edilen değerlerin ilk bloğunu kullanabilir ve isterseniz OLS regresyonu ile olabildiğince çizim yapabilirsiniz. Logit, modeli olasılıklara bağlamanızı sağlayan link fonksiyonudur; ikinci blok log olasılıklarını logit fonksiyonunun tersi vasıtasıyla olasılıklara dönüştürür; (Daha fazla bilgi istiyorsanız, burada bağlantı işlevlerinin doğasını ve bu tür bir modeli tartışıyorum .)

BID = seq(from=0, to=700, by=10)

logOdds.F.young = -3.92 + .014*BID
logOdds.M.young = -3.92 + .014*BID + .25*1
logOdds.F.old   = -3.92 + .014*BID         + .15*1
logOdds.M.old   = -3.92 + .014*BID + .25*1 + .15*1

pY.F.young = exp(logOdds.F.young)/(1+ exp(logOdds.F.young))
pY.M.young = exp(logOdds.M.young)/(1+ exp(logOdds.M.young))
pY.F.old   = exp(logOdds.F.old)  /(1+ exp(logOdds.F.old))
pY.M.old   = exp(logOdds.M.old)  /(1+ exp(logOdds.M.old))

windows()
  par(mfrow=c(2,2))
  plot(x=BID, y=pY.F.young, type="l", col="blue", lwd=2, 
       ylab="Pr(Y=1)", main="predicted probabilities for young women")
  plot(x=BID, y=pY.M.young, type="l", col="blue", lwd=2, 
       ylab="Pr(Y=1)", main="predicted probabilities for young men")
  plot(x=BID, y=pY.F.old, type="l", col="blue", lwd=2, 
       ylab="Pr(Y=1)", main="predicted probabilities for old women")
  plot(x=BID, y=pY.M.old, type="l", col="blue", lwd=2, 
       ylab="Pr(Y=1)", main="predicted probabilities for old men")

Bu, aşağıdaki grafiği üretir:
resim açıklamasını buraya girin
Bu işlevler, başlangıçta özetlediğim dört paralel çizim yaklaşımının çok belirgin olmadığı kadar benzerdir. Aşağıdaki kod benim 'alternatif' yaklaşımımı uygular:

windows()
  plot(x=BID, y=pY.F.young, type="l", col="red", lwd=1, 
       ylab="Pr(Y=1)", main="predicted probabilities")
  lines(x=BID, y=pY.M.young, col="blue", lwd=1)
  lines(x=BID, y=pY.F.old,   col="red",  lwd=2, lty="dotted")
  lines(x=BID, y=pY.M.old,   col="blue", lwd=2, lty="dotted")
  legend("bottomright", legend=c("young women", "young men", 
         "old women", "old men"), lty=c("solid", "solid", "dotted",
         "dotted"), lwd=c(1,1,2,2), col=c("red", "blue", "red", "blue"))

sırayla üreten, bu arsa:
resim açıklamasını buraya girin

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.