Você está na página 1de 22

ECO1442

Laboratório de Econometria I

Aula 11 – Modelo de probabilidade linear


(MPL), logit e probit

Gilberto Boaretto

Departamento de Economia
PUC-Rio
Conteúdo

Introdução

Modelo de probabilidade linear (MPL)

Modelos logit e probit

Interpretação dos modelos logit e probit

Estimação de MPL, logit e probit no R

Obtenção de efeitos marginais


Introdução

▶ Contexto: variável explicada Yi é binária, ou seja, assume apenas os


valores zero e 1.

▶ Exemplos: ocorrência de eventos, escolha discreta, classificação, etc.

▶ Objetivo: modelar P(Yi = 1 | X i ) em que X i = (1, Xi1 , . . . , Xik ) é um


vetor de variáveis explicativas.

▶ Costuma-se chamar P(Yi = 1 | X i ) de probabilidade de sucesso.

▶ Estudamos três possibilidades de modelagem.

2 / 21
Modelo de probabilidade linear (PML)
▶ Sob a hipótese de média condicional zero, E (U | X1 , X2 , . . . , Xk ) = 0,
sabemos que

E (Y | X1 , X2 , . . . , Xk ) = β0 + β1 X1 + · · · + βk Xk = Xβ, (1)

em que X = (1, X1 , . . . , Xk ) e β = (β0 , β1 , . . . , βk )′ .

▶ Quando Y é uma variável binária com valores 0 ou 1, sabemos que

E (Y | X) = 0 × P (Y = 0 | X) + 1 × P (Y = 1 | X)
E (Y | X) = P (Y = 1 | X) (2)

▶ Portanto, (1) e (2) implicam que

P (Y = 1 | X) = β0 + β1 X1 + · · · + βk Xk = Xβ, (3)

ou seja, a probabilidade de sucesso é uma função linear de X.

▶ Esse modelo é chamado de modelo de probabilidade linear (MPL).


3 / 21
Modelo de probabilidade linear (MPL)

▶ No modelo de probabilidade linear (MPL), βj mede a mudança na


probabilidade de sucesso quando Xj muda, mantendo os outros fatores
fixos:

∆P (Y = 1 | X) = βj ∆Xj

▶ A regressão (3) pode ser estimada por MQO.

▶ Na equação estimada,
b (Y = 1 | X) = βb0 + βb1 X1 + · · · + βbk Xk = X β,
P b

• βb0 representa a probabilidade estimada de sucesso quando Xj = 0, ∀j;

• βbj , j ∈ {1, . . . , k}, representa a mudança prevista na probabilidade de


sucesso (ou seja, de que Y = 1) quando Xj aumenta em uma unidade,
mantendo os outros fatores constantes.

4 / 21
MPL – Caracterı́sticas
▶ Principal vantagem: simples de estimar e interpretar.

▶ Principal desvantagem: para certos valores das variáveis explicativas,


a probabilidade estimada pode ser negativa ou maior do que 1.

▶ Heteroscedasticidade: pelo fato de Y ser binária, sua variância


condicional é
 
Var (Y | X) = P (Y = 1 | X) 1 − P (Y = 1 | X) ,

ou seja, depende de X.
• Erros-padrão e estatı́sticas convencionais não são válidas.

▶ Mesmo com limitações, esse tipo de modelo ainda é bastante útil e


usado em economia.

▶ Normalmente, o modelo funciona bem para valores das variáveis


explicativas que são próximos das médias nas amostras.
5 / 21
Modelos logit e probit
▶ Para resolver o problemada probabilidade prevista poder ser maior do
que 1 ou negativa, podemos considerar a seguinte especificação para a
probabilidade de sucesso:

P (Y = 1 | X) = G (β0 + β1 X1 + · · · + βk Xk ) = G (Xβ) ,

em que 0 ⩽ G(·) ⩽ 1.

▶ Funções não lineares para G(·) garantem que

0 ⩽ P (Y = 1 | X) ⩽ 1.

▶ Há duas opções clássicas para G(·):

1. função logı́stica;

2. c.d.f. da normal.

6 / 21
Modelos logit e probit

▶ No modelo logit, G(·) é uma função logı́stica:

exp (Xβ)
G(Xβ) = Λ(Xβ) = .
1 + exp (Xβ)

É a função de distribuição acumulada de uma variável logı́stica padrão.

▶ No modelo probit, G(·) é a função de distribuição acumulada de


uma variável normal padrão:
Z Xβ
G(Xβ) = Φ(Xβ) = ϕ(z) dz,
−∞

onde ϕ(z) é a densidade da normal padrão

ϕ(z) = (2π)−1/2 exp (−z 2 /2).

7 / 21
Modelos logit e probit
▶ Ambas as funções G(z) acima são crescentes no argumento z.
▶ Essas funções crescem mais rapidamente quando z = 0.

▶ G(z) → 0 quando z → −∞.


▶ G(z) → 1 quando z → ∞.
▶ Ambas são simetricamente distribuı́das ao redor de 0.

Figura: Comparação visual do ajuste: MPL, probit e logit

8 / 21
A “economia” por trás desses modelos
▶ Para entendermos melhor, vamos considerar o modelo de variável
latente: suponha que Y ∗ seja uma variável não observada tal que

Y ∗ = Xβ + U, Y = I (Y ∗ > 0)

onde I (·) é a função indicadora.

▶ Assim, Y = 1 se Y ∗ > 0 e Y = 0 caso contrário. Criamos um resultado


binário.

▶ Podemos assumir que U ⊥ X e que U tem distribuição normal ou


logı́stica.

▶ Podemos derivar a probabilidade de resposta de Y como

P (Y = 1 | X) = P (Y ∗ > 0 | X) = P (U > −Xβ | X) = 1 − G (−Xβ)


=⇒ P (Y = 1 | X) = G (Xβ)

em que usamos 1 − G(−z) = G(z).


9 / 21
Modelo de variável latente no R
set.seed(100) # fixando geracao de numeros aleatorios para a simulacao
n <- 100 # tamanho da amostra
x <- rnorm(n,0,10) # variavel explicativa
u <- rnorm(n) # variavel latente (termo de erro)
beta1 <- 0.5 # parametro do x; para simplificar considerei intercepto zero
y <- rep(NA,n) # vetor que recebera a variavel explicada

# loop para preencher a variavel explicada


for (i in 1:n) {
if (u[i] < x[i]*beta1) {
y[i] <- 1 # a expressao u < x*beta vem da modelo de variavel latente
} else {
y[i] <- 0
}
}

plot(x, y, main = "Variável de escolha", ylab = "Y", xlab = "X",


ylim = c(-0.2, 1.2), col = "blue")

10 / 21
Estimação dos modelos logit e probit

▶ No caso do modelo de probabilidade linear, podemos estimar os


parâmetros usando mı́nimo quadrados ordinários (MQO).

▶ Agora, em razão da natureza não linear de E (Y | X) = G (Xβ), o


estimador de MQO não é mais aplicável.

▶ Usamos o estimador de máxima verossimilhança (MLE):

• Não temos fórmulas fechadas (soluções exatas) para esses estimadores no


caso de logit e probit.

• A solução é numérica.

• Os softwares já são equipados para essa estimação e nos fornecem os


respectivos erros-padrão dos estimadores.

11 / 21
Interpretação dos modelos logit e probit

▶ Principal desvantagem: interpretação mais complicada.

▶ Os coeficientes obtidos dão o sinal dos efeitos parciais de cada Xj sobre


a probabilidade de resposta.

▶ Significância estatı́stica é analisada da maneira comumente usada, mas


considerando erros-padrão robustos à heteroscedasticidade.

▶ Qualidade de ajuste: percentagem corretamente predita, um forma


de “pseudo R-quadrado”.

12 / 21
Interpretação dos modelos logit e probit
▶ Efeitos parciais: é necessário reescalonar os coeficientes pois o efeito
parcial depende de X e da distribuição G(·).
• Quando X for uma variável contı́nua:
∂P (Y = 1 | X) ∂G (Xβ)
= = g (Xβ) βj
∂Xj ∂Xj
em que g(·) = dG(z)/dz.
• Portanto, considerando uma variação ∆Xj em Xj , temos:

P (Y = 1 | X) ≈ g X β
∆b b βbj ∆Xj

▶ Como g (Xβ) > 0, o efeito parcial de Xj sobre P (Y = 1 | X) terá o


mesmo sinal de βj .

▶ Os efeitos parciais
 serão mais difı́ceis de serem analisados devido à
escala g X βb depender de X.

▶ Uma possibilidade é usar valores de Xj como médias, medianas,


mı́nimos, máximos ou valores especı́ficos.
13 / 21
Interpretação dos modelos logit e probit

▶ Efeito parcial na média: calculamos g X̄ β
b , em que X̄ é um vetor
das médias de cada regressor.

▶ Efeito parcial médio: para a j-ésima variável explicativa, calculamos


a média dos efeitos parciais individuais ao longo da amostra:
" N
#
1 X 
g Xi β
b βbj .
N i=1

▶ Se Xj é uma variável discreta, podemos calcular:


N 
1 X b  
G β0 + βb1 X1i + · · · + βbj Xji + 1 + · · · + βbk Xki
N i=1
 
− G β0 + β1 X1i + · · · + βj Xji + · · · + βk Xki .
b b b b

▶ Note que os efeitos dependem dos nı́veis e dos coeficientes de todas as


variáveis.
14 / 21
Estimação do MPL no R
### mpl ###

mpl <- lm(y ˜ x) # modelo de probabilidade linear sempre heteroscedastico; devemos


usar estimador robusto para a variancia

hc_mpl <- vcovHC(mpl, type = "HC2") # estimacao robusta a heteroscedasticidade da


variancia do estimador

se <- sqrt(diag(hc_mpl)) # erros-padrão robustos a heteroscedasticidade

coeftest(mpl, vcov. = hc_mpl)

t test of coefficients:

Estimate Std. Error t value Pr(>|t|)


(Intercept) 0.4789049 0.0324764 14.746 < 2.2e-16 ***
x 0.0375996 0.0025406 14.799 < 2.2e-16 ***
---
Signif. codes: 0 *** 0.001 ** 0.01 * 0.05 . 0.1 1

Podemos também usar o comando lm robust() direto:


lm_robust(y ˜ x) # HC2 é o default

Estimate Std. Error t value Pr(>|t|) CI Lower CI Upper DF


(Intercept) 0.47890489 0.032476443 14.74622 1.277836e-26 0.41445644 0.5433533 98
x 0.03759961 0.002540624 14.79936 1.000825e-26 0.03255783 0.0426414 98
15 / 21
Estimação do probit no R
### probit ###

probit <- glm(y ˜ x, family = binomial(link = "probit")) # se os dados estiverem num


data.frame acrescentamos data=base_de_dados

bptest(probit) # nao rejeitou homoscedasticidade; poderiamos manter a estimacao


convencional da variancia

summary(probit)

# se os erros fossem heteroscedasticos:

hc_probit <- vcovHC(probit, type = "HC2") # estimacao robusta a heteroscedasticidade da


variancia do estimador (se tivesse dado heteroscedasticidade)

coeftest(probit, vcov. = hc_probit)

z test of coefficients:

Estimate Std. Error z value Pr(>|z|)


(Intercept) -0.11288 0.32294 -0.3495 0.7267
x 0.95510 0.23727 4.0254 5.688e-05 ***
---
Signif. codes: 0 *** 0.001 ** 0.01 * 0.05 . 0.1 1

16 / 21
Estimação do logit no R
### logit ###

logit <- glm(y ˜ x, family = binomial(link = "logit"))

bptest(logit) # nao rejeitou homoscedasticidade; poderiamos manter a estimacao


convencional da variancia

summary(logit)

# se os erros fossem heteroscedasticos:

hc_logit <- vcovHC(logit, type = "HC2") # estimacao robusta a heteroscedasticidade da


variancia do estimador (se tivesse dado heteroscedasticidade)

coeftest(logit, vcov. = hc_logit)

z test of coefficients:

Estimate Std. Error z value Pr(>|z|)


(Intercept) -0.19408 0.59291 -0.3273 0.7434190
x 1.64996 0.46055 3.5826 0.0003403 ***
---
Signif. codes: 0 *** 0.001 ** 0.01 * 0.05 . 0.1 1

17 / 21
Figura dos ajustes
### figura completa ###

jpeg("mpl_probit_logit.jpeg", width = 1200, height = 400) # criamos um arquivo .jpeg em


branco com dimensoes 1200 x 400

par(mfrow = c(1,3)) # definimos que acrescentaremos tres graficos no formato uma linha
x tres colunas

plot(x, y, ylim = c(-0.5, 1.5), col = "blue", type = "p", main = "(a) MPL",
lwd = 2, pch = 1, cex = 3, cex.axis = 2, cex.lab = 2, cex.main = 2.5)
abline(mpl, col = "red", lwd = 4)

plot(x, y, ylim = c(-0.5, 1.5), col = "blue", type = "p", main = "(b) Probit",
lwd = 2, pch = 1, cex = 3, cex.axis = 2, cex.lab = 2, cex.main = 2.5)
curve(pnorm(beta0_probit + beta1_probit*x),
col = "green",
lwd = 4, type = "l", lty = 1,
add = TRUE)

plot(x, y, ylim = c(-0.5, 1.5), col = "blue", type = "p", main = "(c) Logit",
lwd = 2, pch = 1, cex = 3, cex.axis = 2, cex.lab = 2, cex.main = 2.5)
curve(exp(beta0_logit + beta1_logit*x)/(1 + exp(beta0_logit + beta1_logit*x)),
col = "purple",
lwd = 4, type = "l", lty = 1,
add = TRUE)

dev.off()

18 / 21
Figura dos ajustes

Figura: Comparação visual do ajuste: MPL, probit e logit

19 / 21
Efeitos marginais do probit
Comando probitmfx() do pacote mfx calcula efeito marginal médio (e na
media) para o probit:
probitmfx(probit, atmean = TRUE, data = data.frame(y = y, x = x)) # efeito marginal na
media (PEA) do probit

Call:
probitmfx(formula = probit, data = data.frame(y = y, x = x),
atmean = TRUE)

Marginal Effects:
dF/dx Std. Err. z P>|z|
x 0.37965 0.10605 3.5799 0.0003437 ***
---
Signif. codes: 0 *** 0.001 ** 0.01 * 0.05 . 0.1 1

probitmfx(probit, atmean = FALSE, data = data.frame(y = y, x = x)) # efeito marginal medio


(APE) do probit

Call:
logitmfx(formula = logit, data = data.frame(y = y, x = x), atmean = TRUE)

Marginal Effects:
dF/dx Std. Err. z P>|z|
x 0.4103 0.1263 3.2485 0.00116 **
---
Signif. codes: 0 *** 0.001 ** 0.01 * 0.05 . 0.1 1
20 / 21
Efeitos marginais do logit
Comando logitmfx() do pacote mfx calcula efeito marginal médio (e na
media) para o logit:
logit.pea <- logitmfx(logit, atmean = TRUE, data = data.frame(y = y, x = x)) # efeito
marginal na media (PEA) do logit

Call:
logitmfx(formula = logit, data = data.frame(y = y, x = x), atmean = TRUE)

Marginal Effects:
dF/dx Std. Err. z P>|z|
x 0.4103 0.1263 3.2485 0.00116 **
---
Signif. codes: 0 *** 0.001 ** 0.01 * 0.05 . 0.1 1

logit.ape <- logitmfx(logit, atmean = FALSE, data = data.frame(y = y, x = x)) # efeito


marginal medio (APE) do logit

Call:
logitmfx(formula = logit, data = data.frame(y = y, x = x), atmean = FALSE)

Marginal Effects:
dF/dx Std. Err. z P>|z|
x 0.053142 0.034485 1.541 0.1233

21 / 21

Você também pode gostar