Olasılıkları elde etmek için lojistik regresyon betalarını + ham verileri nasıl kullanabilirim


17

Bir modelim var (literatürden). Ayrıca tahmin değişkenleri için ham verilerim var.

Olasılıkları elde etmek için kullanmam gereken denklem nedir? Temel olarak, olasılıkları elde etmek için ham verileri ve katsayıları nasıl birleştiririm?

Yanıtlar:


15

İşte uygulanan araştırmacının cevabı (R istatistik paketini kullanarak).

İlk olarak, bazı veriler oluşturalım, yani basit bir iki değişkenli lojistik regresyon modeli için veri simüle ediyorum :log(p1p)=β0+β1x

> set.seed(3124)
> 
> ## Formula for converting logit to probabilities 
> ## Source: http://www.statgun.com/tutorials/logistic-regression.html
> logit2prop <- function(l){exp(l)/(1+exp(l))}
> 
> ## Make up some data
> y <- rbinom(100, 1, 0.2)
> x <- rbinom(100, 1, 0.5)

Öngörücü x, ikilik bir değişkendir:

> x
  [1] 0 1 1 1 1 1 0 1 0 1 0 1 0 0 1 1 1 0 1 1 1 1 1 1 0 0 1 1 1 1 0 0 1 0 0 1 0 0 0 1 1 1 0 1 1 1 1 
 [48] 1 1 0 1 0 0 0 0 1 0 0 1 1 0 0 0 0 1 0 0 1 1 1 0 0 1 0 0 0 0 1 1 0 1 0 1 0 1 1 1 1 1 0 1 0 0 0
 [95] 1 1 1 1 1 0

İkincisi, kesişmeyi ( ) ve eğimi ( β 1 ) tahmin edin . Gördüğünüz gibi, kesme noktası β 0 = - 0.8690 ve eğim β 1 = - 1.0769'dur .β0β1β0=0.8690β1=1.0769

> ## Run the model
> summary(glm.mod <- glm(y ~ x, family = "binomial"))

[...]

    Coefficients:
            Estimate Std. Error z value Pr(>|z|)   
(Intercept)  -0.8690     0.3304  -2.630  0.00854 **
x            -1.0769     0.5220  -2.063  0.03910 * 
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

(Dispersion parameter for binomial family taken to be 1)

[...]

Üçüncüsü, R, çoğu istatistiksel paket gibi, takılan değerleri, yani olasılıkları hesaplayabilir. Bu değerleri referans olarak kullanacağım.

> ## Save the fitted values
> glm.fitted <- fitted(glm.mod)

xβ0β1glm.rcdm

> ## "Raw data + coefficients" method (RDCM)
## logit = -0.8690 + (-1.0769) * x
glm.rdcm <- -0.8690 + (-1.0769)*x

Son adım, R- fittedfonksiyonuna ( glm.fitted) ve "el yapımı" yaklaşımım ( logit2prop.glm.rdcm) 'na dayanan uygun değerlerin karşılaştırılmasıdır . Kendi logit2propişlevim (ilk adıma bakın) günlükleri olasılıklara dönüştürür:

> ## Compare fitted values and RDCM
> df <- data.frame(glm.fitted, logit2prop(glm.rdcm))
> df[10:25,]
> df[10:25,]
   glm.fitted logit2prop.glm.rdcm.
10  0.1250000            0.1250011
11  0.2954545            0.2954624
12  0.1250000            0.1250011
13  0.2954545            0.2954624
14  0.2954545            0.2954624
15  0.1250000            0.1250011
16  0.1250000            0.1250011
17  0.1250000            0.1250011
18  0.2954545            0.2954624
19  0.1250000            0.1250011
20  0.1250000            0.1250011
21  0.1250000            0.1250011
22  0.1250000            0.1250011
23  0.1250000            0.1250011
24  0.1250000            0.1250011
25  0.2954545            0.2954624

6
Not glm(y ~ x)size lojistik regresyon vermez, sen setine sahip family=binomial(link="logit"). Çıktının Dispersion parameter for gaussian familydeğil, dediğine dikkat edin binomial family. Doğru yaparsanız, fitted(glm.mod)gerçekte günlükleri değil, tahmini olasılıkları döndürür. Günlükleri ile alırsınız predict(glm.mod, type="link").
karakulak

Aua! Bunu düzelttim. Beni düzelttiğiniz için çok teşekkürler, @caracal! Bu gerçekten utanç verici ( başka bir SO iş parçacığında doğru cevabı vermiş olduğum için daha da utanç verici ).
Bernd Weiss

1
paket kolu loglog2prop fonksiyonunuz olan invlogit fonksiyonuna sahiptir.
Manoel Galdino

glm.fittedVe için tam olarak aynı sayıları almamalıydık logit2prop.glm.rdcm.? Çok küçük farklar var. Örneğinizde neden tam olarak aynı sayılara sahip olmadığımızı anlayamadım. Kontrol ettiğimde; ve library(arm); data.frame(logit2prop(glm.rdcm), invlogit(glm.rdcm))için tam olarak aynı sonuçları üretir . Bu nedenle, eşit olarak, nedenini soruyorum ve tam olarak aynı numaraları döndürmüyorum? logit2propinvlogitglm.fittedinvlogit
Erdoğan CEVHER

20

f:xgünlükx1-xg:xtecrübex1+tecrübex

π

f(π)=β0+x1β1+x2β2+...

Bu nedenle, isterseniz π değerlendirmen gerek g sağ tarafta:

π=g(β0+x1β1+x2β2+...).


Ordinal lojistik regresyon ne dersiniz? O zaman mantık ne olurdu?
user333

@ user333: Şey ... Sıralı lojistik regresyonla pek oynamadım ... ama bence aynı bağlantı fonksiyonunu kullanıyor. Her durumda, mantık aynıdır: yanıt değişkenini elde etmek için bağlantı fonksiyonunun tersi ...
ocram

evet ... ama hangi olasılıkların hangi hedef kategorilere eşlendiğini nasıl bilebilirim?
user333

@ user333, sorunuz lojistik regresyon ile ilgiliydi, eğer ordinal regresyon hakkında da cevaplar istiyorsanız, lütfen bunu soruya ekleyin.
mpiktas
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.