Trouver l'équation à partir de la sortie du modèle linéaire généralisé

9

Disons que je génère la probabilité d'un résultat basé sur un certain facteur et trace la courbe de ce résultat. Existe-t-il un moyen d'extraire l'équation de cette courbe de R?

> mod = glm(winner~our_bid, data=mydat, family=binomial(link="logit"))
> summary(mod)

Call:
glm(formula = winner ~ our_bid, family = binomial(link = "logit"), 
    data = mydat)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-0.7443  -0.6083  -0.5329  -0.4702   2.3518  

Coefficients:
              Estimate Std. Error z value Pr(>|z|)    
(Intercept) -9.781e-01  2.836e-02  -34.49   <2e-16 ***
our_bid     -2.050e-03  7.576e-05  -27.07   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1 

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 42850  on 49971  degrees of freedom
Residual deviance: 42094  on 49970  degrees of freedom
AIC: 42098

Number of Fisher Scoring iterations: 4

> all.x <- expand.grid(winner=unique(winner), our_bid=unique(our_bid))
> all.x
> won = subset(all.x, winner == 1)
> y.hat.new <- predict(mod, newdata=won, type="response")
> options(max.print=5000000)
> y.hat.new
> plot(our_bid<-000:1000, predict(mod, newdata=data.frame(our_bid<-c(000:1000)),
       type="response"))

entrez la description de l'image ici

Comment passer de cette courbe de probabilité à une équation dans R? J'espérais quelque chose comme:

Probability = -0.08*bid3 + 0.0364*bid2 - 0.0281*bid + 4E-14
ATMathew
la source
2
Contrairement à l'exemple de votre code, qui a une variable indépendante (enchère) et trace donc sous forme de courbe dans un plan (enchère, probabilité), l'exemple de votre modification à la fin ne tracerait pas sous forme de courbe: ce serait un trois -Hypersurface dimensionnelle tracée en quatre dimensions (bid, bid2, bid3, probabilités).
whuber

Réponses:

15

Ce modèle linéaire généralisé suppose que le résultat associé à une valeur indépendante de a une distribution binomiale dont les cotes logarithmiques ("logit") varient linéairement avec . La sortie fournit les coefficients de cette relation linéaire; à savoir, l'ordonnée à l'origine est estimée à -0,9781 et la pente ("our_bid") à -0,002050. Vous pouvez les voir dans la colonne:xxEstimate

              Estimate Std. Error z value Pr(>|z|)    
(Intercept) -9.781e-01  2.836e-02  -34.49   <2e-16 ***
our_bid     -2.050e-03  7.576e-05  -27.07   <2e-16 ***

La probabilité, que vous souhaitez tracer, est liée aux cotes de log par

probability=11+exp(log odds).

R appelle cela la fonction "logit inverse", inv.logit.

Les rassembler donne l'équation

probability=11+exp([0.97810.00205x]).

Une commande R pour tracer ce serait

plot(inv.logit(-0.9781 - 0.00205*(0:1000)))

Sortie de tracé

En général, vous devez extraire ces coefficients avec la coefficientscommande plutôt que de les transcrire (comme je l'ai fait ici, car je n'ai pas accès à vos données).

whuber
la source
3
(+1) Il est à noter que la Hmisc::latexfonction facilite l'impression de ce qui précède en tant que , par exemple, peut produire cette sortie (en utilisant un exemple de code ici ). LATEXlatex(fit.1)
chl