Representando graficamente uma curva de probabilidade para um modelo Logit com vários preditores

12

Eu tenho a seguinte função de probabilidade:

Prob=11+ez

Onde

z=B0+B1X1++BnXn.

Meu modelo parece

Pr(Y=1)=11+exp([3.92+0.014×(bid)])

Isso é visualizado através de uma curva de probabilidade que se parece com a abaixo.

insira a descrição da imagem aqui

Estou pensando em adicionar algumas variáveis ​​à minha equação de regressão original. Digamos que eu inclua gênero (categórico: F e M) e idade (categórico: <25 e> 26) no modelo, terminando com:

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

No IR, pode gerar uma curva de probabilidade semelhante que me dirá a probabilidade de Y = 1 ao contabilizar todos os três preditores. Onde estou perdido, quero encontrar as probabilidades para todas as permutações possíveis dessas variações.

Então, quando lance = 1, gênero = M e idade>> 26, qual é a probabilidade de Y = 1? Da mesma forma, quando lance = 2, gênero = F e idade>> 26, qual é a probabilidade de Y = 1?

Eu quero gerar uma curva de probabilidade que me permita visualizar isso.

Alguém pode ajudar? Talvez eu esteja entendendo completamente que tipo de informação se pode obter de um modelo de logit, mas por favor me diga se eu também estou entendendo errado a teoria.

ATMathew
fonte
Deseja que o código faça isso em R ou apenas entenda o problema conceitualmente?
gung - Restabelece Monica
Se eu tivesse que escolher, diria o problema conceitualmente. Eu acho que o código R eu consigo descobrir sozinho.
precisa saber é o seguinte
2
Se você está confortável em resolver o mesmo problema com a regressão comum (mínimos quadrados), por que não expressar a resposta como probabilidades de log (que são apenas ) e usar as técnicas que você conhece? B0 0+B1X1++BnXn
whuber
1
Claro, dê uma olhada no pacote @FrankHarrell rms (documentação extensa pode ser encontrada no site do RMS ). Comece com as funções Predict()e plot.Predict()para ter uma idéia do que pode ser feito (isso inclui plotar como uma função de , com definido nos valores padrão, ou valores fixos de sua escolha). Pr(Y=1|x2,...,xp)x1x2,...,xp
chl

Respostas:

24

Felizmente para você, você tem apenas uma covariável contínua. Assim, você pode apenas fazer quatro gráficos (ou seja, 2 SEX x 2 IDADE), cada um com a relação entre BID . Como alternativa, você pode fazer um gráfico com quatro linhas diferentes (você pode usar estilos, pesos ou cores diferentes para diferenciá-los). Você pode obter essas linhas previstas resolvendo a equação de regressão em cada uma das quatro combinações para um intervalo de valores de BID. p(Y=1)

Uma situação mais complicada é onde você tem mais de uma covariável contínua. Em um caso como esse, geralmente há uma covariável específica que é "primária" em algum sentido. Essa covariável pode ser usada para o eixo X. Em seguida, você resolve vários valores pré-especificados das outras covariáveis, geralmente a média e +/- 1SD. Outras opções incluem vários tipos de gráficos 3D, coplots ou gráficos interativos.

Minha resposta a uma pergunta diferente aqui contém informações sobre uma variedade de gráficos para explorar dados em mais de duas dimensões. Seu caso é essencialmente análogo, exceto pelo fato de você estar interessado em apresentar os valores previstos do modelo, em vez dos valores brutos.

Atualizar:

Eu escrevi algum código de exemplo simples em R para fazer esses gráficos. Permitam-me observar algumas coisas: como a 'ação' ocorre cedo, executei o BID apenas entre 700 (mas fique à vontade para estendê-lo para 2000). Neste exemplo, estou usando a função especificada e tendo a primeira categoria (ou seja, mulheres e jovens) como categoria de referência (que é o padrão em R). Como @whuber observa em seu comentário, Os modelos LR são lineares nas probabilidades de log, portanto, você pode usar o primeiro bloco de valores previstos e plotar como faria com a regressão OLS, se desejar. O logit é a função de link, que permite conectar o modelo às probabilidades; o segundo bloco converte as probabilidades do log em probabilidades através do inverso da função logit, ou seja, exponenciando (transformando em probabilidades) e depois dividindo as probabilidades por 1 + probabilidades. (I discutir a natureza das funções da ligação e este tipo de modelo aqui , se você quiser mais informações.)

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

O que produz o seguinte gráfico:
insira a descrição da imagem aqui
Essas funções são suficientemente semelhantes que a abordagem do gráfico em quatro paralelos que descrevi inicialmente não é muito distinta. O código a seguir implementa minha abordagem 'alternativa':

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

produzindo, por sua vez, esse enredo:
insira a descrição da imagem aqui

Repor a Monica
fonte