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

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).


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.