Encontre a equação a partir da saída do modelo linear generalizado

9

Digamos que eu gere a probabilidade de um resultado com base em um determinado fator e trace a curva desse resultado. Existe alguma maneira de extrair a equação para essa curva 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"))

insira a descrição da imagem aqui

Como posso passar dessa curva de probabilidade para uma equação em R? Eu esperava algo como:

Probability = -0.08*bid3 + 0.0364*bid2 - 0.0281*bid + 4E-14
ATMathew
fonte
2
Diferente do exemplo no seu código, que possui uma variável independente (lance) e, portanto, é plotada como uma curva em um plano (lance, probabilidade), o exemplo em sua edição no final não é plotado como uma curva: seria três hipersuperfície tridimensional plotada em quatro dimensões (oferta, oferta2, oferta3, probabilidade).
whuber

Respostas:

15

Esse modelo linear generalizado supõe o resultado associado a um valor independente de x possui uma distribuição binomial cujas chances de log ("logit") variam linearmente com x. A saída fornece os coeficientes dessa relação linear; ou seja, a interceptação é estimada em -0,9781 e a inclinação ("our_bid") em -0,002050. Você pode vê-los na Estimatecoluna:

              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 ***

A probabilidade, que você deseja traçar, está relacionada às probabilidades do log por

probability=11+exp(log odds).

R chama isso de função "logit inverso" inv.logit,.

Colocá-los juntos dá a equação

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

Um comando R para plotá-lo seria

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

Saída do gráfico

Em geral, você deve extrair esses coeficientes com o coefficientscomando, em vez de transcrevê-los (como fiz aqui, porque não tenho acesso aos seus dados).

whuber
fonte
3
(+1) É importante notar que a Hmisc::latexfunção facilita a impressão acima, conformeLATEX, por exemplo, latex(fit.1)pode produzir essa saída (usando o código de amostra aqui ).
chl