Exemplos de Aplicação do Modelo de Seleção de Heckman

1 MROZ 1987

De acordo com Hill, Griffiths, and Lim (2008), em um problema de estimação de parâmetros, se os dados são obtidos por amostragem aleatória, métodos de regressão, clássicos, tais como mínimos quadrados, funcionam bem. No entanto, se os dados são obtidos por um procedimento de amostragem que não é aleatório, os procedimentos normais não funcionam adequadamente. Geralmente enfrentamos tais problemas na amostragem. Uma ilustração famosa vem de economia do trabalho. Se quisermos estudar os determinantes dos salários das mulheres casadas, nos deparamos com um problema de seleção da amostra. Pois, ao recolher dados sobre as mulheres casadas, e perguntar-lhes o salário que ganham, muitas vão responder que são donas de casa. Nós só observamos os dados sobre salários de mercado quando a mulher escolhe entrar na força de trabalho. Uma estratégia é ignorar as mulheres que são donas de casa, omiti-las a partir da amostra, em seguida, usar mínimos quadrados para estimar a equação de salários para aquelas que trabalham. Esta estratégia é falha, a razão para a falha é que a amostra não é uma amostra aleatória, uma vez que os dados observados, ao omitir as mulheres que são donas de casa, são selecionados por um processo sistemático.

O primeiro exemplo é retirado do livro de Hill, Griffiths, and Lim (2008), vamos reconsiderar a análise dos salários recebidos por mulheres casadas usando o conjunto de dados obtidos de Mroz (1987). Na amostra de 753 mulheres casadas, 428 são empregadas no mercado formal e recebem salários diferentes de zero. Vejam uma parte do conjunto de dados:

setwd("~/GitHub/Modelos de Heckman/Modelo-de-Heckman")
#install.packages("Rtools")
#devtools::install_github("hadley/readxl")
library(readxl)
dados <- read_excel("~/GitHub/Modelos de Heckman/Modelo-de-Heckman/mroz_z.xls",col_names = TRUE, col_types = NULL)
## DEFINEDNAME: 0b 00 00 11 02 00 00 00 00 00 00 00 00 00 00 5f 78 6c 66 6e 2e 4e 4f 52 4d 2e 53 2e 44 49 53 54 1c 1d 
## DEFINEDNAME: 0b 00 00 11 02 00 00 00 00 00 00 00 00 00 00 5f 78 6c 66 6e 2e 4e 4f 52 4d 2e 53 2e 44 49 53 54 1c 1d 
## DEFINEDNAME: 0b 00 00 11 02 00 00 00 00 00 00 00 00 00 00 5f 78 6c 66 6e 2e 4e 4f 52 4d 2e 53 2e 44 49 53 54 1c 1d 
## DEFINEDNAME: 0b 00 00 11 02 00 00 00 00 00 00 00 00 00 00 5f 78 6c 66 6e 2e 4e 4f 52 4d 2e 53 2e 44 49 53 54 1c 1d
dados[423:433,c(5,6,19,23,14,1,7,21)]
##     age educ exper kids    mtr inlf   wage     lwage
## 423  32   17    14    1 0.7215    1 4.7826 1.5649840
## 424  36   10     2    1 0.7215    1 2.3118 0.8380265
## 425  40   12    21    1 0.6215    1 5.3061 1.6688570
## 426  43   13    22    1 0.5815    1 5.8675 1.7694290
## 427  33   12    14    1 0.5815    1 3.4091 1.2264480
## 428  30   12     7    1 0.6915    1 4.0816 1.4064890
## 429  49   12     2    1 0.6615    0     NA        NA
## 430  30   16     5    1 0.6615    0     NA        NA
## 431  30   12    12    1 0.6615    0     NA        NA
## 432  41   12     1    1 0.5815    0     NA        NA
## 433  45   12    12    1 0.6615    0     NA        NA
attach(dados)
#tail(MEPS2001)
par(mfrow=c(1,2))
#library(stringr)
#dados$wage<-as.numeric(dados$wage)
#wage2<- str_replace(dados$wage, pattern="NA", replacement= 0)
#wage2<-as.numeric(wage2)
#dados$wage2
#dados$lwage<-as.numeric(dados$lwage)
#lwage2<- str_replace(dados$lwage, pattern="NA", replacement= 0)
#lwage2<-as.numeric(lwage2)
#dados$lwage2
hist(wage,ylim=c(0,200),xlim = c(-1,30),xlab = "Salário de mulheres com emprego formal", ylab = "Frequência",main = "Dados MROZ")
hist(lwage,ylim=c(0,150),xlim = c(-3,5),xlab = "Log do Salário de mulheres com emprego formal", ylab = "Frequência",main = "Dados MROZ")

Primeiro, vamos estimar uma equação simples para o salário, explicando \(ln(salário)\) como uma função da educação, EDUC, e anos de experiência no mercado de trabalho (EXPER), utilizando as 428 mulheres que têm salários positivos. O modelo é:

\[ln(wage)_{i}=\beta_{0}+\beta_{1}Educ+\beta_{2}exper+\epsilon_{i},\]

com, \(\epsilon\sim N(0,1).\)

as estimativas dos parâmetros são:

lreg<-lm(lwage~educ+exper,data = dados[dados$inlf==1,])
summary(lreg)
## 
## Call:
## lm(formula = lwage ~ educ + exper, data = dados[dados$inlf == 
##     1, ])
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -3.05608 -0.30524  0.05599  0.38846  2.27384 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -0.400174   0.190368  -2.102 0.036132 *  
## educ         0.109489   0.014167   7.728 7.94e-14 ***
## exper        0.015674   0.004019   3.900 0.000112 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.669 on 425 degrees of freedom
## Multiple R-squared:  0.1484, Adjusted R-squared:  0.1444 
## F-statistic: 37.02 on 2 and 425 DF,  p-value: 1.512e-15

O retorno estimado para a educação é cerca de 11%, e os coeficientes estimados de educação e experiência são estatisticamente significativos.


Agora vamos ajustar o modelo:

\[\begin{eqnarray*} lwage_{i} &=& \beta_{0} + \beta_{1}educ + \beta_{2}exper + u_{1} \end{eqnarray*}\]

e assumimos que o log do salário\((lwage)\) é observado se:

\[\begin{eqnarray*} \beta_{0}+\beta_{1}Age+\beta_{2}Educ_{i}+\beta_{3}kids_{i}+\beta_{4}mtr+u_{2}>0, \end{eqnarray*}\]

onde \(u_{1}\) e \(u_{2}\) são correlacionados.

1.1 Ajuste com função Glm e lm do R

O procedimento Heckit (seleção amostral) começa por estimar um modelo probit de participação na força de trabalho. Como variáveis explicativas usamos a idade da mulher, seus anos de escolaridade, uma variável de indicador para saber se ela tem filhos, e a taxa de imposto marginal que ela iria pagar sobre rendimentos se empregada. O modelo probit é dado por:

\[\begin{eqnarray*} inlf_{i} &\sim& Binomial (n, \pi_i)\\ g(\pi_i) &=& \beta_{0}+\beta_{1}Age+\beta_{2}Educ_{i}+\beta_{3}kids_{i}+\beta_{4}mtr \end{eqnarray*}\]

Sendo \(inlf\) a variável resposta binária, \(Age_{i},Educ_{i},kids_{i}\) e \(mtr_{i}\) as i-ésimas realizações das respectivas variáveis explicativas \(Age,Educ,kids\) e \(mtr,\) respectivamente, e \(g(\pi_i)=\Phi^{-1}(\pi_{i})\) a função de ligação probit. Como houve indivíduos com o mesmo conjunto de covariáveis considera-se o número de repetições \(n=428\) para a distribuição de \(inlf_{i}.\)

as estimativas dos parâmetros são:

#Modelo Probit
fit1<-glm(inlf~age+educ+kids+mtr,family=binomial(link=probit),data=dados)
summary(fit1)
## 
## Call:
## glm(formula = inlf ~ age + educ + kids + mtr, family = binomial(link = probit), 
##     data = dados)
## 
## Deviance Residuals: 
##    Min      1Q  Median      3Q     Max  
## -1.908  -1.208   0.816   1.060   1.588  
## 
## Coefficients:
##              Estimate Std. Error z value Pr(>|z|)    
## (Intercept)  1.192261   0.726243   1.642 0.100656    
## age         -0.020615   0.007031  -2.932 0.003369 ** 
## educ         0.083776   0.023120   3.623 0.000291 ***
## kids        -0.313885   0.122509  -2.562 0.010403 *  
## mtr         -1.393817   0.626166  -2.226 0.026017 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 1029.75  on 752  degrees of freedom
## Residual deviance:  988.29  on 748  degrees of freedom
## AIC: 998.29
## 
## Number of Fisher Scoring iterations: 4

Como esperado, os efeitos da idade, a presença de crianças, e as perspectivas de impostos mais altos reduzem significativamente a probabilidade de que uma mulher se junte à força de trabalho, enquanto a educação aumenta a probabilidade. Utilizando os coeficientes estimados calculamos a razão inversa de Mills para as 428 mulheres com salários de mercado.

library(sampleSelection)
dados$IMR <- invMillsRatio(fit1)$IMR1#Criar uma nova coluna com a covariável Razão Inversa de Mills 
dados[423:433,c(5,6,19,23,14,1,7,21,32)]
##     age educ exper kids    mtr inlf   wage     lwage       IMR
## 423  32   17    14    1 0.7215    1 4.7826 1.5649840 0.4412366
## 424  36   10     2    1 0.7215    1 2.3118 0.8380265 0.8181494
## 425  40   12    21    1 0.6215    1 5.3061 1.6688570 0.6793267
## 426  43   13    22    1 0.5815    1 5.8675 1.7694290 0.6340350
## 427  33   12    14    1 0.5815    1 3.4091 1.2264480 0.5657426
## 428  30   12     7    1 0.6915    1 4.0816 1.4064890 0.6164304
## 429  49   12     2    1 0.6615    0     NA        NA 0.8290024
## 430  30   16     5    1 0.6615    0     NA        NA 0.4219251
## 431  30   12    12    1 0.6615    0     NA        NA 0.5929940
## 432  41   12     1    1 0.5815    0     NA        NA 0.6586579
## 433  45   12    12    1 0.6615    0     NA        NA 0.7763784

Este é então incluído na equação de regressão múltipla de salários e aplicado mínimos quadrados para obter as seguintes estimativas:

#Modelo de Regressão Linear Simples com wage>0
fit2<- lm(lwage~educ+exper+IMR, data = dados[dados$inlf==1,])
summary(fit2)
## 
## Call:
## lm(formula = lwage ~ educ + exper + IMR, data = dados[dados$inlf == 
##     1, ])
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -3.02634 -0.28901  0.05418  0.37278  2.42408 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  0.810529   0.494476   1.639  0.10192    
## educ         0.058459   0.023850   2.451  0.01464 *  
## exper        0.016320   0.003998   4.082 5.34e-05 ***
## IMR         -0.866429   0.326988  -2.650  0.00836 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.6643 on 424 degrees of freedom
## Multiple R-squared:  0.1622, Adjusted R-squared:  0.1563 
## F-statistic: 27.37 on 3 and 424 DF,  p-value: 3.381e-16

Notemos que o coeficiente estimado da razão inversa de Mills é estatisticamente significativo, o que implica que existe um viés de seleção presente nos resultados de quadrados mínimos da primeira equação de regressão sem a covariável IMR. Além disso, o retorno salárial estimado para a educação diminuiu de 11% para aproximadamente 6%.

Outra forma de proceder os calculos acima é utilizar o método de Máxima Verossimilhança ou o método de duas etapas de Heckman para estimar todos os parâmetros do modelo de regressão via pacote sampleSelection do R. Vejamos as saídas:


1.2 Ajuste com o pacote Sample Selection

1.2.1 Processo de duas etapas

library("sampleSelection")
# Two-step estimation
fit3<-heckit( inlf~age+educ+kids+mtr,
              lwage~educ+exper, dados)
summary(fit3)
## --------------------------------------------
## Tobit 2 model (sample selection model)
## 2-step Heckman / heckit estimation
## 753 observations (325 censored and 428 observed)
## 11 free parameters (df = 743)
## Probit selection equation:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  1.192296   0.720544   1.655 0.098404 .  
## age         -0.020616   0.007045  -2.926 0.003534 ** 
## educ         0.083775   0.023205   3.610 0.000326 ***
## kids        -0.313885   0.123711  -2.537 0.011376 *  
## mtr         -1.393853   0.616575  -2.261 0.024070 *  
## Outcome equation:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 0.810542   0.610799   1.327 0.184910    
## educ        0.058458   0.029635   1.973 0.048915 *  
## exper       0.016320   0.004202   3.884 0.000112 ***
## Multiple R-Squared:0.1622,   Adjusted R-Squared:0.1563
##    Error terms:
##               Estimate Std. Error t value Pr(>|t|)  
## invMillsRatio  -0.8664     0.3993   -2.17   0.0303 *
## sigma           0.9326         NA      NA       NA  
## rho            -0.9291         NA      NA       NA  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## --------------------------------------------

Note neste caso a diferença entre as t-estatísticas. Os valores anteriores das t-estatísticas, calculados via função glm e lm são baseados em erros padrão como normalmente calculado pelo uso da regressão de mínimos quadrados. Os habituais erros padrão não levam em conta o fato de que a razão inversa de Mills é um valor estimado. Assim, o pacote sampleSelection corrige os erros padrão ao levar em conta a estimativa do primeiro estágio probit, estes são usados para construir as t-estatísticas ajustadas. Como podemos ver as t-estatísticas ajustadas são um pouco menores na saída do sampleSelection, indicando que os erros padrão ajustados são um pouco maiores do que os da saída do glm e lm.

É preferível estimar o modelo completo, tanto a equação de seleção e a equação de interesse, em conjunto por máxima verosimilhança. Pois, os erros padrão com base no procedimento de máxima verossimilhança são menores do que aqueles gerados pelo método de estimação de dois passos.

1.2.2 Método de Máxima Verossimilhança

# ML estimation
fit4<-selection(inlf~age+educ+kids+mtr,
                lwage~educ+exper, dados)
summary(fit4)
## --------------------------------------------
## Tobit 2 model (sample selection model)
## Maximum Likelihood estimation
## Newton-Raphson maximisation, 6 iterations
## Return code 2: successive function values within tolerance limit
## Log-Likelihood: -913.561 
## 753 observations (325 censored and 428 observed)
## 10 free parameters (df = 743)
## Probit selection equation:
##              Estimate Std. error t value  Pr(> t)    
## (Intercept)  1.595958   0.623731   2.559  0.01051 *  
## age         -0.013262   0.005939  -2.233  0.02555 *  
## educ         0.063931   0.021745   2.940  0.00328 ** 
## kids        -0.152592   0.099587  -1.532  0.12546    
## mtr         -2.291885   0.537565  -4.263 2.01e-05 ***
## Outcome equation:
##             Estimate Std. error t value Pr(> t)    
## (Intercept) 0.668587   0.235006   2.845 0.00444 ** 
## educ        0.065816   0.016635   3.957 7.6e-05 ***
## exper       0.011767   0.004094   2.875 0.00404 ** 
##    Error terms:
##       Estimate Std. error t value Pr(> t)    
## sigma  0.84944    0.04248   20.00  <2e-16 ***
## rho   -0.83947    0.03490  -24.05  <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## --------------------------------------------

Neste caso a estimativa do parâmetro da razão inversa de Mills é:

IMR<-coef(summary(fit4))["rho",1]*coef(summary(fit4))["sigma",1]
IMR
## [1] -0.7130812
#res<-fit4$estimate
#IMR<-res[9]*res[10]
#IMR

1.3 Ajuste com o pacote SSMROB

library(ssmrob)
#Equação de seleção que será ajustada via modelo probit
 selectEq <- inlf~age+educ+kids+mtr
#Equação de regressão que será ajustada via modelo linear simples
outcomeEq <- lwage~educ+exper
fit5<-heckitrob(outcomeEq,selectEq,control=heckitrob.control(tcc=3.2,weights.x1="robCov"))
summary(fit5)
## ------------------------------------------------------------- 
## Robust 2-step Heckman / heckit M-estimation 
## Probit selection equation: 
##                  Estimate   Std.Error t-value  p-value    
## XS(Intercept)  1.19229732 0.726234392   1.642 0.101000    
## XSage         -0.02061554 0.007031349  -2.932 0.003370  **
## XSeduc         0.08377532 0.023119989   3.624 0.000291 ***
## XSkids        -0.31388480 0.122508531  -2.562 0.010400   *
## XSmtr         -1.39385431 0.626155191  -2.226 0.026000   *
## Outcome equation: 
##                  Estimate   Std.Error t-value  p-value    
## XO(Intercept)  0.77909013 0.596402209   1.306 1.91e-01    
## XOeduc         0.06440744 0.028843743   2.233 2.56e-02   *
## XOexper        0.01585891 0.003503069   4.527 5.98e-06 ***
## imrData$IMR1  -0.86768171 0.393821292  -2.203 2.76e-02   *
## ---
## Signif. codes: 0 `***' 0.001 `**' 0.01 `*' 0.05 `.' 0.1 ` ' 1 
## -------------------------------------------------------------

2 MEPS 2001 Sem a Covariável Rendimento

O artigo de Marchenko and Genton (2012) considerou os dados sobre os gastos ambulatoriais do Medical Expenditure Panel Survey 2001 (MEPS2001), analisadas por Cameron e Trivedi (2010). MEPS é a fonte de dados sobre o custo e a utilização de cuidados de saúde e cobertura de seguro de saúde mais completa dos Estados Unidos, segundo a Agência de Investigação de Saúde e Qualidade (AHRQ) dos EUA. A amostra é restrita a apenas aqueles indivíduos que estão cobertos por seguros privados, com idades entre 21 e 64 anos. Os dados consistem de 3328 observações, dos quais 526 (15,8%) correspondem aos valores de despesas zero. O conjunto de dados inclui diversas variáveis explicativas, tais como idade, sexo, anos de escolaridade, entre outros.

library(ssmrob)
data(MEPS2001)
attach(MEPS2001)
#head(MEPS2001)
MEPS2001[1:10,c(1,2,4,8,18,22,20,16,17,21)]
##    educ age female totchr blhisp ins dambexp ambexp   lambexp    lnambx
## 1    11 3.3      0      2      0   0       1    760 6.6333184 6.6333184
## 2    14 2.1      0      0      1   0       1    497 6.2085900 6.2085900
## 3    12 4.0      1      1      1   0       1   1002 6.9097533 6.9097533
## 4    14 5.2      1      0      1   1       1    745 6.6133842 6.6133842
## 5    16 5.0      1      0      0   0       1   2728 7.9113240 7.9113240
## 6    12 3.7      0      0      0   0       1    636 6.4551988 6.4551988
## 7    14 3.2      1      0      0   0       1      2 0.6931472 0.6931472
## 8    12 4.6      0      0      0   1       0      0        NA 0.0000000
## 9    12 4.0      1      0      1   1       0      0        NA 0.0000000
## 10   17 6.4      0      0      0   0       1   2826 7.9466176 7.9466176
#tail(MEPS2001)

Vejam a distribuição dos dados brutos de despesas ambulatoriais e dos dados de despesas ambulatoriais logaritmados:

library(ssmrob)
#Carregando o conjunto de dados MEPS2001 - dados de despesas ambulatoriais
data(MEPS2001)
attach(MEPS2001)
par(mfrow=c(1,2))
hist(ambexp,ylim = c(0,3500),xlim=c(0,20000) ,xlab = "Despesas Ambulotariais", ylab = "Frequência",main = "Dados do MEPS 2001")
hist(lnambx,ylim = c(0,800),xlim=c(0,12), xlab = "Log das Despesas Ambulotariais", ylab = "Frequência",main = "Dados do MEPS 2001")

Antes de dar sequência com a aplicação dos modelos de seleção amostral, considere uma regressão linear múltipla relacionando os gastos ambulotariais com as diversas outras variáveis disponíveis no banco de dados e supondo erro aleatório com distribuição normal, ou seja, considere o modelo:

\[lnambx_{i}=\beta_{0}+\beta_{1}Age+\beta_{2}female+\beta_{3}Educ+\beta_{4}blhisp+\beta_{5}totchr+\beta_{6}ins+\epsilon_{i},\]

com, \(\epsilon\sim N(0,1).\)

as estimativas dos parâmetros são:

lreg<-lm(lnambx~age+female+educ+blhisp+totchr+ins)
summary(lreg)
## 
## Call:
## lm(formula = lnambx ~ age + female + educ + blhisp + totchr + 
##     ins)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -7.8228 -0.9666  0.5640  1.5731  5.8482 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  1.72876    0.28126   6.147 8.86e-10 ***
## age          0.32473    0.03835   8.468  < 2e-16 ***
## female       1.14470    0.08334  13.735  < 2e-16 ***
## educ         0.11411    0.01654   6.898 6.27e-12 ***
## blhisp      -0.73418    0.09289  -7.904 3.64e-15 ***
## totchr       1.05940    0.05537  19.133  < 2e-16 ***
## ins          0.20783    0.08691   2.391   0.0168 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.381 on 3321 degrees of freedom
## Multiple R-squared:  0.2346, Adjusted R-squared:  0.2332 
## F-statistic: 169.7 on 6 and 3321 DF,  p-value: < 2.2e-16

Podemos ver que todos os parâmetros são altamente significativos, esse ajuste foi realizado com os dados completos incluindo os valores zero. Poderíamos pensar que estes não devem fazer parte do ajuste e retirá-los, neste caso teríamos uma mudança significativa no ajuste:

lreg<-lm(lnambx~age+female+educ+blhisp+totchr+ins,data = MEPS2001[ MEPS2001$dambexp == 1, ] )
summary(lreg)
## 
## Call:
## lm(formula = lnambx ~ age + female + educ + blhisp + totchr + 
##     ins, data = MEPS2001[MEPS2001$dambexp == 1, ])
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -6.0471 -0.7959  0.0818  0.8644  4.6335 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  4.907825   0.168151  29.187  < 2e-16 ***
## age          0.217233   0.022223   9.775  < 2e-16 ***
## female       0.379376   0.048577   7.810 8.04e-15 ***
## educ         0.022239   0.009761   2.278   0.0228 *  
## blhisp      -0.238532   0.055195  -4.322 1.60e-05 ***
## totchr       0.561817   0.030508  18.416  < 2e-16 ***
## ins         -0.020827   0.050006  -0.416   0.6771    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.27 on 2795 degrees of freedom
## Multiple R-squared:  0.1918, Adjusted R-squared:  0.1901 
## F-statistic: 110.6 on 6 and 2795 DF,  p-value: < 2.2e-16

Mas o fato é que não podemos deixar de considerar as pessoas que possuem gasto zero com despesas ambulatoriais, pois do contrário, nossa amostra não seria obtida de forma aleatória, ou seja, caso não consideremos essa parte da amostragem teríamos um problema de seleção amostral. Assim, a disposição para gastar será relacionada com algumas covariáveis por meio de um modelo probit e posteriormente iremos criar uma nova covariável (razão inversa de Mills) e iremos analisar o modelo de regressão de interesse acrescido desta variável. Dessa forma, vamos utilizar o modelo de seleção amostral clássico de Heckman para analisar esses dados. Como a distribuição dos gastos é altamente viesada, a análise foi realizada utilizando a escala logarítmica.


Agora vamos ajustar o modelo:

\[\begin{eqnarray*} lnambx_{i} &=& \beta_{0}+\beta_{1}Age+\beta_{2}female_{i}+\beta_{3}educ_{i}+\beta_{4}blhisp+\beta_{5}totchr+\beta_{6}ins + u_{1} \end{eqnarray*}\]

e assumimos que o log das despesas ambulatoriais \((lnambx)\) é observado se:

\[\begin{eqnarray*} \beta_{0}+\beta_{1}Age+\beta_{2}female_{i}+\beta_{3}educ_{i}+\beta_{4}blhisp+\beta_{5}totchr+\beta_{6}ins+u_{2}>0, \end{eqnarray*}\]

onde \(u_{1}\) e \(u_{2}\) são correlacionados.

2.1 Ajuste com as funções glm e lm do R

Primeiro analisamos os dados utilizando as funções glm e lm do R.

O modelo probit utlizado foi:

\[\begin{eqnarray*} dambexp_{i} &\sim& Binomial (n, \pi_i)\\ g(\pi_i) &=& \beta_{0}+\beta_{1}Age+\beta_{2}female_{i}+\beta_{3}educ_{i}+\beta_{4}blhisp+\beta_{5}totchr+\beta_{6}ins \end{eqnarray*}\]

Os parâmetros estimados são:

library(aod)
#Modelo probit
fit1<-glm( dambexp ~ age+female+educ+blhisp+totchr+ins, family = binomial(link = "probit"),data=MEPS2001)
summary(fit1)
## 
## Call:
## glm(formula = dambexp ~ age + female + educ + blhisp + totchr + 
##     ins, family = binomial(link = "probit"), data = MEPS2001)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -3.4495   0.1284   0.3873   0.6262   1.5804  
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)    
## (Intercept) -0.71770    0.19086  -3.760 0.000170 ***
## age          0.09731    0.02703   3.601 0.000317 ***
## female       0.64421    0.06022  10.698  < 2e-16 ***
## educ         0.07017    0.01123   6.247 4.19e-10 ***
## blhisp      -0.37449    0.06156  -6.083 1.18e-09 ***
## totchr       0.79352    0.07140  11.113  < 2e-16 ***
## ins          0.18124    0.06227   2.911 0.003608 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 2904.9  on 3327  degrees of freedom
## Residual deviance: 2395.3  on 3321  degrees of freedom
## AIC: 2409.3
## 
## Number of Fisher Scoring iterations: 6

Com os parâmetros do probit estimado foi possível encontrar a razão inversa de Mills.

MEPS2001$IMR <- invMillsRatio(fit1)$IMR1#Criar uma nova coluna com a covariável Razão Inversa de Mills 
MEPS2001[1:10,c(1,2,4,8,18,22,21,20,23)]
##    educ age female totchr blhisp ins    lnambx dambexp        IMR
## 1    11 3.3      0      2      0   0 6.6333184       1 0.05966001
## 2    14 2.1      0      0      1   0 6.2085900       1 0.73870733
## 3    12 4.0      1      1      1   0 6.9097533       1 0.12209510
## 4    14 5.2      1      0      1   1 6.6133842       1 0.21276541
## 5    16 5.0      1      0      0   0 7.9113240       1 0.13082628
## 6    12 3.7      0      0      0   0 6.4551988       1 0.51722607
## 7    14 3.2      1      0      0   0 0.6931472       1 0.21318779
## 8    12 4.6      0      0      0   1 0.0000000       0 0.38796767
## 9    12 4.0      1      0      1   1 0.0000000       0 0.30092333
## 10   17 6.4      0      0      0   0 7.9466176       1 0.25274431

Assim, a covariável \(IMR\) foi utilizada no ajuste da regressão de interesse:

fit2 <- lm( lnambx ~ age+female+educ+blhisp+totchr+ins + IMR,
                data = MEPS2001[ MEPS2001$dambexp == 1, ] )
summary(fit2)
## 
## Call:
## lm(formula = lnambx ~ age + female + educ + blhisp + totchr + 
##     ins + IMR, data = MEPS2001[MEPS2001$dambexp == 1, ])
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -6.0498 -0.7840  0.0794  0.8689  4.6281 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  5.30257    0.29072  18.240  < 2e-16 ***
## age          0.20212    0.02400   8.422  < 2e-16 ***
## female       0.28916    0.07278   3.973 7.27e-05 ***
## educ         0.01199    0.01154   1.039  0.29871    
## blhisp      -0.18106    0.06509  -2.781  0.00545 ** 
## totchr       0.49833    0.04884  10.204  < 2e-16 ***
## ins         -0.04740    0.05248  -0.903  0.36647    
## IMR         -0.48017    0.28852  -1.664  0.09617 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.269 on 2794 degrees of freedom
## Multiple R-squared:  0.1926, Adjusted R-squared:  0.1906 
## F-statistic: 95.23 on 7 and 2794 DF,  p-value: < 2.2e-16
#wald.test(b = coef(fit3), Sigma = vcov(fit3), Terms = 8)

Notemos que o parâmetro que acompanha a covariável \(IMR\) foi não significativo e poderíamos assumir que não há viés de seleção amostral e desconsiderar os valores iguais a zero para a variável gasto com despesas ambulotariais. O que implica que gastar com despesas ambulatoriais não está relacionado com a decisão de gastar e podem ser analisados separadamente por meio de Mínimos Quadrados Ordinários. Esta conclusão parece não plausível. Como observado por (???), a suposição de normalidade dos erros é muito suspeita para esses dados. O que é possível de se verificar por meio da visualização do histograma do log das despesas apresentado anteriormente e devido a não significância da covariável \(IMR\).

Esse mesmo ajuste pode ser feito através do pacote sampleSelection usando o método de dois passos e máxima verossimilhança:


2.2 Ajuste com o pacote Sample Selection

No processo de duas etapas do pacote sample selection, manteve-se o resultado anterior com a não significância do parâmetro que acompanha a covariável \(IMR.\)

2.2.1 Processo de duas etapas

library("sampleSelection")
# Two-step estimation
fit3<-heckit( dambexp ~ age+female+educ+blhisp+totchr+ins,
                 lnambx ~ age+female+educ+blhisp+totchr+ins, MEPS2001 )
summary(fit3)
## --------------------------------------------
## Tobit 2 model (sample selection model)
## 2-step Heckman / heckit estimation
## 3328 observations (526 censored and 2802 observed)
## 17 free parameters (df = 3312)
## Probit selection equation:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -0.71771    0.19247  -3.729 0.000195 ***
## age          0.09732    0.02702   3.602 0.000320 ***
## female       0.64421    0.06015  10.710  < 2e-16 ***
## educ         0.07017    0.01134   6.186 6.94e-10 ***
## blhisp      -0.37449    0.06175  -6.064 1.48e-09 ***
## totchr       0.79352    0.07112  11.158  < 2e-16 ***
## ins          0.18124    0.06259   2.896 0.003809 ** 
## Outcome equation:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  5.30257    0.29414  18.028  < 2e-16 ***
## age          0.20212    0.02430   8.319  < 2e-16 ***
## female       0.28916    0.07369   3.924 8.89e-05 ***
## educ         0.01199    0.01168   1.026    0.305    
## blhisp      -0.18106    0.06585  -2.749    0.006 ** 
## totchr       0.49833    0.04947  10.073  < 2e-16 ***
## ins         -0.04740    0.05315  -0.892    0.373    
## Multiple R-Squared:0.1926,   Adjusted R-Squared:0.1906
##    Error terms:
##               Estimate Std. Error t value Pr(>|t|)  
## invMillsRatio  -0.4802     0.2907  -1.652   0.0986 .
## sigma           1.2932         NA      NA       NA  
## rho            -0.3713         NA      NA       NA  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## --------------------------------------------

Mesmo resultado utilizando máxima verossimilhança.

2.2.2 Método de Máxima Verossimilhança

# ML estimation
fit4<-selection( dambexp ~ age+female+educ+blhisp+totchr+ins,
                    lnambx ~ age+female+educ+blhisp+totchr+ins, MEPS2001)
summary(fit4)
## --------------------------------------------
## Tobit 2 model (sample selection model)
## Maximum Likelihood estimation
## Newton-Raphson maximisation, 4 iterations
## Return code 2: successive function values within tolerance limit
## Log-Likelihood: -5838.397 
## 3328 observations (526 censored and 2802 observed)
## 16 free parameters (df = 3312)
## Probit selection equation:
##             Estimate Std. error t value  Pr(> t)    
## (Intercept) -0.72444    0.19243  -3.765 0.000167 ***
## age          0.09845    0.02699   3.648 0.000264 ***
## female       0.64367    0.06014  10.703  < 2e-16 ***
## educ         0.07025    0.01134   6.195 5.85e-10 ***
## blhisp      -0.37263    0.06173  -6.036 1.58e-09 ***
## totchr       0.79467    0.07103  11.188  < 2e-16 ***
## ins          0.18212    0.06255   2.912 0.003595 ** 
## Outcome equation:
##             Estimate Std. error t value  Pr(> t)    
## (Intercept)  5.03743    0.22619  22.271  < 2e-16 ***
## age          0.21229    0.02296   9.247  < 2e-16 ***
## female       0.34973    0.05967   5.861 4.61e-09 ***
## educ         0.01887    0.01053   1.793 0.072971 .  
## blhisp      -0.21960    0.05948  -3.692 0.000222 ***
## totchr       0.54095    0.03906  13.848  < 2e-16 ***
## ins         -0.02954    0.05104  -0.579 0.562801    
##    Error terms:
##       Estimate Std. error t value Pr(> t)    
## sigma  1.27074    0.01821   69.77  <2e-16 ***
## rho   -0.12421    0.14438   -0.86    0.39    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## --------------------------------------------

Neste caso a estimativa do parâmetro da razão inversa de Mills é:

IMR<-coef(summary(fit4))["rho",1]*coef(summary(fit4))["sigma",1]
IMR
## [1] -0.1578385
#res<-fit4$estimate
#IMR<-res[15]*res[16]
#IMR

Poderíamos então assumir erroneamente que não há viés de seleção amostral, mesmo que essa suposição seja estranha dada a possivel relação das variáveis, mas foi o resultado apresentando pelos ajustes de dois passos de Heckman e máxima verossimilhança. Porém, outro pacote que ajusta modelos de seleção amostral utilizando os dois passos de Heckman corrige um pouco esse resultado, apesar de continuar assumindo distribuição normal bivariada para os erros do modelo o ajuste é mais sensível no sentido de detectar o viés de seleção amostral. Vejamos a análise com esse pacote.


2.3 Ajuste com o pacote SSMROB

#Equação de seleção que será ajustada via modelo probit
selectEq <- dambexp ~ age+female+educ+blhisp+totchr+ins
#Equação de regressão que será ajustada via modelo linear simples
outcomeEq <- lnambx ~ age+female+educ+blhisp+totchr+ins
fit5<-heckitrob(outcomeEq,selectEq,control=heckitrob.control(tcc=3.2,weights.x1="robCov"))
summary(fit5)
## ------------------------------------------------------------- 
## Robust 2-step Heckman / heckit M-estimation 
## Probit selection equation: 
##                  Estimate  Std.Error t-value  p-value    
## XS(Intercept) -0.74914476 0.19506999  -3.840 1.23e-04 ***
## XSage          0.10541500 0.02769588   3.806 1.41e-04 ***
## XSfemale       0.68740832 0.06225762  11.040 2.41e-28 ***
## XSeduc         0.07011568 0.01146521   6.116 9.62e-10 ***
## XSblhisp      -0.39774532 0.06264878  -6.349 2.17e-10 ***
## XStotchr       0.83283613 0.08027772  10.370 3.24e-25 ***
## XSins          0.18256005 0.06371471   2.865 4.17e-03  **
## Outcome equation: 
##                  Estimate  Std.Error t-value  p-value    
## XO(Intercept)  5.40154264 0.27672891  19.520 7.53e-85 ***
## XOage          0.20061658 0.02450765   8.186 2.70e-16 ***
## XOfemale       0.25501033 0.06992954   3.647 2.66e-04 ***
## XOeduc         0.01324867 0.01161609   1.141 2.54e-01    
## XOblhisp      -0.15508435 0.06506654  -2.383 1.72e-02   *
## XOtotchr       0.48115830 0.03822948  12.590 2.52e-36 ***
## XOins         -0.06706633 0.05159205  -1.300 1.94e-01    
## imrData$IMR1  -0.67676033 0.25927579  -2.610 9.05e-03  **
## ---
## Signif. codes: 0 `***' 0.001 `**' 0.01 `*' 0.05 `.' 0.1 ` ' 1 
## -------------------------------------------------------------

Se considerarmos os erros padrão, vemos que o erro padrão da estimativa robusta \((0,2593)\) é menor do que a do estimador clássico \((0,2907).\) O valor de p do teste de viés de seleção robusto é \(p=0.009\), o que leva à conclusão da presença de viés de seleção amostral mesmo o estimador clássico sugerindo a ausência de viés.


Os mesmos dados foram utilizados agora acrescentando a covariável rendimento na equação de seleção, impondo a restrição de exclusão do modelo, embora o uso da renda para esta finalidade é discutível. Todos os fatores considerados são fortes preditores da decisão de gastar. Notemos que os resultados quanto a significância do parâmetro que acompanha a covariável \(IMR\) foram os mesmos.


3 Meps 2001 Com a Covariável Rendimento

3.1 Ajuste com as funções glm e lm do R

#Modelo probit
fit1<-glm( dambexp ~ age+female+educ+blhisp+totchr+ins+income, family = binomial(link = "probit"),data=MEPS2001)
summary(fit1)
## 
## Call:
## glm(formula = dambexp ~ age + female + educ + blhisp + totchr + 
##     ins + income, family = binomial(link = "probit"), data = MEPS2001)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -3.4420   0.1278   0.3859   0.6254   1.5329  
## 
## Coefficients:
##              Estimate Std. Error z value Pr(>|z|)    
## (Intercept) -0.668644   0.192364  -3.476 0.000509 ***
## age          0.086815   0.027495   3.157 0.001591 ** 
## female       0.663505   0.060952  10.886  < 2e-16 ***
## educ         0.061884   0.011891   5.204 1.95e-07 ***
## blhisp      -0.365784   0.061731  -5.925 3.11e-09 ***
## totchr       0.795747   0.071472  11.134  < 2e-16 ***
## ins          0.169107   0.062594   2.702 0.006900 ** 
## income       0.002677   0.001313   2.038 0.041514 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 2904.9  on 3327  degrees of freedom
## Residual deviance: 2391.0  on 3320  degrees of freedom
## AIC: 2407
## 
## Number of Fisher Scoring iterations: 6
MEPS2001$IMR <- invMillsRatio(fit1)$IMR1#Criar uma nova coluna com a covariável Razão Inversa de Mills 
#Modelo Linear Simples com razão de Mill's
fit2 <- lm( lnambx ~ age+female+educ+blhisp+totchr+ins + IMR,
                data = MEPS2001[ MEPS2001$dambexp == 1, ] )
summary(fit2)
## 
## Call:
## lm(formula = lnambx ~ age + female + educ + blhisp + totchr + 
##     ins + IMR, data = MEPS2001[MEPS2001$dambexp == 1, ])
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -6.1002 -0.7869  0.0810  0.8656  4.6380 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  5.28893    0.28541  18.531  < 2e-16 ***
## age          0.20247    0.02395   8.455  < 2e-16 ***
## female       0.29213    0.07174   4.072 4.79e-05 ***
## educ         0.01239    0.01144   1.083  0.27873    
## blhisp      -0.18287    0.06465  -2.829  0.00471 ** 
## totchr       0.50063    0.04797  10.436  < 2e-16 ***
## ins         -0.04651    0.05235  -0.888  0.37440    
## IMR         -0.46371    0.28065  -1.652  0.09859 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.269 on 2794 degrees of freedom
## Multiple R-squared:  0.1926, Adjusted R-squared:  0.1906 
## F-statistic: 95.23 on 7 and 2794 DF,  p-value: < 2.2e-16
#wald.test(b = coef(fit3), Sigma = vcov(fit3), Terms = 8)

3.2 Ajuste com o pacote Sample Selection

3.2.1 Processo de duas etapas

library("sampleSelection")
# Two-step estimation
fit3<-heckit( dambexp ~ age+female+educ+blhisp+totchr+ins+income,
               lnambx ~ age+female+educ+blhisp+totchr+ins, MEPS2001 )
summary(fit3)
## --------------------------------------------
## Tobit 2 model (sample selection model)
## 2-step Heckman / heckit estimation
## 3328 observations (526 censored and 2802 observed)
## 18 free parameters (df = 3311)
## Probit selection equation:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -0.668647   0.194125  -3.444 0.000579 ***
## age          0.086815   0.027456   3.162 0.001581 ** 
## female       0.663505   0.060965  10.883  < 2e-16 ***
## educ         0.061884   0.012039   5.140 2.90e-07 ***
## blhisp      -0.365784   0.061909  -5.908 3.81e-09 ***
## totchr       0.795750   0.071217  11.174  < 2e-16 ***
## ins          0.169107   0.062930   2.687 0.007240 ** 
## income       0.002677   0.001310   2.043 0.041131 *  
## Outcome equation:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  5.28893    0.28852  18.331  < 2e-16 ***
## age          0.20247    0.02422   8.359  < 2e-16 ***
## female       0.29213    0.07258   4.025 5.82e-05 ***
## educ         0.01239    0.01157   1.071  0.28427    
## blhisp      -0.18287    0.06534  -2.798  0.00516 ** 
## totchr       0.50063    0.04855  10.311  < 2e-16 ***
## ins         -0.04651    0.05297  -0.878  0.38002    
## Multiple R-Squared:0.1926,   Adjusted R-Squared:0.1906
##    Error terms:
##               Estimate Std. Error t value Pr(>|t|)
## invMillsRatio  -0.4637     0.2826  -1.641    0.101
## sigma           1.2914         NA      NA       NA
## rho            -0.3591         NA      NA       NA
## --------------------------------------------

3.2.2 Método de Máxima Verossimilhança

# ML estimation
fit4<-selection( dambexp ~ age+female+educ+blhisp+totchr+ins+income,
                    lnambx ~ age+female+educ+blhisp+totchr+ins, MEPS2001)
summary(fit4)
## --------------------------------------------
## Tobit 2 model (sample selection model)
## Maximum Likelihood estimation
## Newton-Raphson maximisation, 4 iterations
## Return code 1: gradient close to zero
## Log-Likelihood: -5836.219 
## 3328 observations (526 censored and 2802 observed)
## 17 free parameters (df = 3311)
## Probit selection equation:
##              Estimate Std. error t value  Pr(> t)    
## (Intercept) -0.676054   0.194029  -3.484 0.000493 ***
## age          0.087936   0.027421   3.207 0.001342 ** 
## female       0.662665   0.060938  10.874  < 2e-16 ***
## educ         0.061948   0.012029   5.150 2.61e-07 ***
## blhisp      -0.363938   0.061873  -5.882 4.05e-09 ***
## totchr       0.796951   0.071131  11.204  < 2e-16 ***
## ins          0.170137   0.062871   2.706 0.006807 ** 
## income       0.002708   0.001317   2.056 0.039746 *  
## Outcome equation:
##             Estimate Std. error t value  Pr(> t)    
## (Intercept)  5.04406    0.22813  22.111  < 2e-16 ***
## age          0.21197    0.02301   9.213  < 2e-16 ***
## female       0.34814    0.06011   5.791 6.98e-09 ***
## educ         0.01872    0.01055   1.774 0.075986 .  
## blhisp      -0.21857    0.05967  -3.663 0.000249 ***
## totchr       0.53992    0.03933  13.727  < 2e-16 ***
## ins         -0.02999    0.05109  -0.587 0.557221    
##    Error terms:
##       Estimate Std. error t value Pr(> t)    
## sigma  1.27102    0.01838  69.157  <2e-16 ***
## rho   -0.13060    0.14708  -0.888   0.375    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## --------------------------------------------

Neste caso a estimativa do parâmetro da razão inversa de Mills é:

IMR<-coef(summary(fit4))["rho",1]*coef(summary(fit4))["sigma",1]
IMR
## [1] -0.1659965
#res<-fit4$estimate
#IMR<-res[16]*res[17]
#IMR

3.3 Ajuste com o pacote SSMROB

#Equação de seleção que será ajustada via modelo probit
selectEq <- dambexp ~ age+female+educ+blhisp+totchr+ins+income
#Equação de regressão que será ajustada via modelo linear simples
outcomeEq <- lnambx ~ age+female+educ+blhisp+totchr+ins
fit5<-heckitrob(outcomeEq,selectEq,control=heckitrob.control(tcc=3.2,weights.x1="robCov"))
summary(fit5)
## ------------------------------------------------------------- 
## Robust 2-step Heckman / heckit M-estimation 
## Probit selection equation: 
##                   Estimate   Std.Error t-value  p-value    
## XS(Intercept) -0.700434110 0.196402980  -3.566 3.62e-04 ***
## XSage          0.094588603 0.028149130   3.360 7.79e-04 ***
## XSfemale       0.703608275 0.062981278  11.170 5.61e-29 ***
## XSeduc         0.062307763 0.012118799   5.141 2.73e-07 ***
## XSblhisp      -0.388618039 0.062800450  -6.188 6.09e-10 ***
## XStotchr       0.834052967 0.080225712  10.400 2.58e-25 ***
## XSins          0.172551353 0.064031784   2.695 7.04e-03  **
## XSincome       0.002534592 0.001343944   1.886 5.93e-02   .
## Outcome equation: 
##                  Estimate  Std.Error t-value  p-value    
## XO(Intercept)  5.40932908 0.27290745  19.820 1.96e-87 ***
## XOage          0.20028861 0.02447160   8.185 2.73e-16 ***
## XOfemale       0.25213915 0.06994945   3.605 3.13e-04 ***
## XOeduc         0.01318542 0.01157841   1.139 2.55e-01    
## XOblhisp      -0.15341996 0.06514440  -2.355 1.85e-02   *
## XOtotchr       0.47956288 0.03805277  12.600 2.04e-36 ***
## XOins         -0.06825757 0.05173658  -1.319 1.87e-01    
## imrData$IMR1  -0.68995326 0.25543589  -2.701 6.91e-03  **
## ---
## Signif. codes: 0 `***' 0.001 `**' 0.01 `*' 0.05 `.' 0.1 ` ' 1 
## -------------------------------------------------------------

4 Womenwk - Conjunto de dados do Stata

library(haven)
dados <- read_dta("~/GitHub/Modelos de Heckman/Modelo-de-Heckman/Conjunto_dados/womenwk.dta")
attach(dados)
head(dados)
##           c1          c2          u           v county age education
## 1 -0.4362051 -0.09691816 -0.2181026 -0.37572718      1  22        10
## 2  0.3521407  0.30047631  0.1760704  0.46123438      2  36        10
## 3  1.0772466 -1.59596262  0.5386233 -0.37624397      3  28        10
## 4  1.0212833 -1.71049791  0.5106417 -0.49699912      4  37        10
## 5 -0.4429599  0.30833973 -0.2214800 -0.09251083      5  39        10
## 6 -0.4403342  0.61322883 -0.2201671  0.12598438      6  33        10
##   married children   select wagefull     wage
## 1       1        0 16.79127 12.78277       NA
## 2       1        0 32.43481 20.31285 20.31285
## 3       1        0 19.18507 23.06348       NA
## 4       1        0 21.33601 24.52770       NA
## 5       1        1 31.98987 16.14224 16.14224
## 6       1        2 37.21181 14.95799 14.95799

Considere o ajuste de um modelo de regressão linear simples considerando somente as pessoas empregadas para analisar o salário em função da educação e da idade.

#Regressão linear simples usando Mínimos Quadrados
fit1<-lm(wage~education+age)
summary(fit1)
## 
## Call:
## lm(formula = wage ~ education + age)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -16.8219  -3.6000  -0.1582   3.7215  19.2203 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  6.08488    0.88962   6.840 1.20e-11 ***
## education    0.89658    0.04981  18.001  < 2e-16 ***
## age          0.14657    0.01871   7.833 9.66e-15 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 5.452 on 1340 degrees of freedom
##   (657 observations deleted due to missingness)
## Multiple R-squared:  0.2535, Adjusted R-squared:  0.2524 
## F-statistic: 227.5 on 2 and 1340 DF,  p-value: < 2.2e-16
wage[is.na(wage)]<-0
wage2<-wage
indicadora<-ifelse(wage>0,1,0)
dados$wage2 <- wage2#Criar uma nova coluna com a covariável wage substituindo NA por zero 
dados$indicadora<-indicadora
str(dados)
## Classes 'tbl_df', 'tbl' and 'data.frame':    2000 obs. of  14 variables:
##  $ c1        : num  -0.436 0.352 1.077 1.021 -0.443 ...
##  $ c2        : num  -0.0969 0.3005 -1.596 -1.7105 0.3083 ...
##  $ u         : num  -0.218 0.176 0.539 0.511 -0.221 ...
##  $ v         : num  -0.3757 0.4612 -0.3762 -0.497 -0.0925 ...
##  $ county    : num  1 2 3 4 5 6 7 8 9 0 ...
##  $ age       : int  22 36 28 37 39 33 57 45 39 25 ...
##  $ education : int  10 10 10 10 10 10 10 16 12 10 ...
##  $ married   : int  1 1 1 1 1 1 1 1 1 0 ...
##  $ children  : int  0 0 0 0 1 2 1 0 0 3 ...
##  $ select    : num  16.8 32.4 19.2 21.3 32 ...
##  $ wagefull  : num  12.8 20.3 23.1 24.5 16.1 ...
##  $ wage      : num  NA 20.3 NA NA 16.1 ...
##  $ wage2     : num  0 20.3 0 0 16.1 ...
##  $ indicadora: num  0 1 0 0 1 1 1 1 0 1 ...

Agora o ajuste considerando todas as pessoas, inclusive as que não trabalham:

#Regressão linear simples usando Mínimos Quadrados
fit2<-lm(wage2~education+age)
summary(fit2)
## 
## Call:
## lm(formula = wage2 ~ education + age)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -29.443  -9.809   3.021   8.596  29.882 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -12.16843    1.39815  -8.703   <2e-16 ***
## education     1.06457    0.08442  12.610   <2e-16 ***
## age           0.39077    0.03103  12.593   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 11.17 on 1997 degrees of freedom
## Multiple R-squared:  0.1726, Adjusted R-squared:  0.1718 
## F-statistic: 208.3 on 2 and 1997 DF,  p-value: < 2.2e-16

Vamos supor agora que o salário por hora é uma função da escolaridade e idade, ao passo que a probabilidade de trabalhar (a probabilidade de o salário ser observado) é uma função do estado civil, o número de crianças em casa, e (implicitamente) o salário ( que é estimado através da inclusão de idade e educação, que pensamos ser o que determinam o salário).

Heckman assume que o salário é a variável dependente e que a primeira lista de variáveis (educ e idade) são os determinantes do salário. As variáveis especificadas na opção de seleção (casado, crianças, educ, e idade) são assumidos para determinar se a variável dependente (a equação de regressão) é observada. Assim, ajustamos o modelo:

\[\begin{eqnarray*} wage_{i} &=& \beta_{0} + \beta_{1}educ + \beta_{2}age + u_{1} \end{eqnarray*}\]

e assumimos que o salário\((wage)\) é observado se:

\[\begin{eqnarray*} \beta_{0}+\beta_{1}married+\beta_{2}children_{i}+\beta_{3}educ_{i}+\beta_{4}age+u_{2}>0, \end{eqnarray*}\]

onde \(u_{1}\) e \(u_{2}\) são correlacionados.

4.1 Ajuste com as funções glm e lm do R

# Ajuste com as funções glm e lm do R
#Modelo probit
fit3<-glm(indicadora ~ married+children+education+age, family = binomial(link = "probit"),data=dados)
summary(fit3)
## 
## Call:
## glm(formula = indicadora ~ married + children + education + age, 
##     family = binomial(link = "probit"), data = dados)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -2.7594  -0.9414   0.4552   0.8459   2.0427  
## 
## Coefficients:
##              Estimate Std. Error z value Pr(>|z|)    
## (Intercept) -2.467365   0.192291 -12.831  < 2e-16 ***
## married      0.430857   0.074310   5.798 6.71e-09 ***
## children     0.447325   0.028642  15.618  < 2e-16 ***
## education    0.058365   0.011018   5.297 1.18e-07 ***
## age          0.034721   0.004232   8.204 2.33e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 2532.4  on 1999  degrees of freedom
## Residual deviance: 2054.1  on 1995  degrees of freedom
## AIC: 2064.1
## 
## Number of Fisher Scoring iterations: 5
library(sampleSelection)
dados$IMR <- invMillsRatio(fit3)$IMR1#Criar uma nova coluna com a covariável Razão Inversa de Mills 
#Modelo Linear Simples com razão de Mill's
fit4 <- lm(wage2 ~ education+age + IMR,
           data = dados[dados$wage2>0, ] )
summary(fit4)
## 
## Call:
## lm(formula = wage2 ~ education + age + IMR, data = dados[dados$wage2 > 
##     0, ])
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -15.4167  -3.5143  -0.1737   3.5506  20.3762 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  0.73404    1.16621   0.629    0.529    
## education    0.98253    0.05050  19.457  < 2e-16 ***
## age          0.21187    0.02066  10.253  < 2e-16 ***
## IMR          4.00162    0.57710   6.934 6.35e-12 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 5.359 on 1339 degrees of freedom
## Multiple R-squared:  0.2793, Adjusted R-squared:  0.2777 
## F-statistic:   173 on 3 and 1339 DF,  p-value: < 2.2e-16

4.2 Ajuste com o pacote sampleSelection

4.2.1 Processo de duas etapas

#Equação de seleção que será ajustada via modelo probit
selectEq <- indicadora~married+children+education+age
#Equação de regressão que será ajustada via modelo linear simples
outcomeEq <- wage2 ~ education+age
fit5<-heckit(selectEq,outcomeEq,dados)
summary(fit5)
## --------------------------------------------
## Tobit 2 model (sample selection model)
## 2-step Heckman / heckit estimation
## 2000 observations (657 censored and 1343 observed)
## 11 free parameters (df = 1990)
## Probit selection equation:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -2.467365   0.192563 -12.813  < 2e-16 ***
## married      0.430857   0.074208   5.806 7.43e-09 ***
## children     0.447325   0.028742  15.564  < 2e-16 ***
## education    0.058365   0.010974   5.318 1.16e-07 ***
## age          0.034721   0.004229   8.210 3.94e-16 ***
## Outcome equation:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  0.73404    1.24833   0.588    0.557    
## education    0.98253    0.05388  18.235   <2e-16 ***
## age          0.21187    0.02205   9.608   <2e-16 ***
## Multiple R-Squared:0.2793,   Adjusted R-Squared:0.2777
##    Error terms:
##               Estimate Std. Error t value Pr(>|t|)    
## invMillsRatio   4.0016     0.6065   6.597 5.35e-11 ***
## sigma           5.9474         NA      NA       NA    
## rho             0.6728         NA      NA       NA    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## --------------------------------------------

4.2.2 Método de Máxima Verossimilhança

#Estimação utilizando método de Máxima Verossimilhança do pacote sample selection
fit6<-selection(indicadora ~ married+children+education+age,
                wage2 ~ education+age)
summary(fit6)
## --------------------------------------------
## Tobit 2 model (sample selection model)
## Maximum Likelihood estimation
## Newton-Raphson maximisation, 3 iterations
## Return code 2: successive function values within tolerance limit
## Log-Likelihood: -5178.304 
## 2000 observations (657 censored and 1343 observed)
## 10 free parameters (df = 1990)
## Probit selection equation:
##              Estimate Std. error t value  Pr(> t)    
## (Intercept) -2.491015   0.189340 -13.156  < 2e-16 ***
## married      0.445171   0.067395   6.605 3.97e-11 ***
## children     0.438707   0.027783  15.791  < 2e-16 ***
## education    0.055732   0.010735   5.192 2.08e-07 ***
## age          0.036510   0.004153   8.790  < 2e-16 ***
## Outcome equation:
##             Estimate Std. error t value Pr(> t)    
## (Intercept)  0.48579    1.07704   0.451   0.652    
## education    0.98995    0.05326  18.588  <2e-16 ***
## age          0.21313    0.02060  10.345  <2e-16 ***
##    Error terms:
##       Estimate Std. error t value Pr(> t)    
## sigma  6.00479    0.16572   36.23  <2e-16 ***
## rho    0.70350    0.05123   13.73  <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## --------------------------------------------

A estimativa do parâmetro que acompanha a covariável razão inversa de Mills é:

IMR<-coef(summary(fit6))["rho",1]*coef(summary(fit6))["sigma",1]
IMR
## [1] 4.224401

4.3 Ajuste com o pacote SSMROB

library(ssmrob)
#Equação de seleção que será ajustada via modelo probit
selectEq <- indicadora ~ married+children+education+age
#Equação de regressão que será ajustada via modelo linear simples
outcomeEq <- wage2 ~ education+age
fit7<-heckitrob(outcomeEq,selectEq,control=heckitrob.control(tcc=3.2,weights.x1="robCov"))
summary(fit7)
## ------------------------------------------------------------- 
## Robust 2-step Heckman / heckit M-estimation 
## Probit selection equation: 
##                  Estimate   Std.Error t-value  p-value    
## XS(Intercept) -2.46541991 0.193678111 -12.730 4.06e-37 ***
## XSmarried      0.42133992 0.074544389   5.652 1.58e-08 ***
## XSchildren     0.44264144 0.029190486  15.160 6.13e-52 ***
## XSeducation    0.05884727 0.011046541   5.327 9.97e-08 ***
## XSage          0.03479865 0.004246128   8.195 2.50e-16 ***
## Outcome equation: 
##                Estimate  Std.Error t-value  p-value    
## XO(Intercept) 0.7458634 1.24334254  0.5999 5.49e-01    
## XOeducation   0.9798627 0.05471929 17.9100 1.04e-71 ***
## XOage         0.2111380 0.02197695  9.6070 7.45e-22 ***
## imrData$IMR1  4.0074119 0.60700579  6.6020 4.06e-11 ***
## ---
## Signif. codes: 0 `***' 0.001 `**' 0.01 `*' 0.05 `.' 0.1 ` ' 1 
## -------------------------------------------------------------

Referências

Hill, R Carter, William E Griffiths, and Guay C Lim. 2008. Principles of Econometrics. Vol. 5. Wiley Hoboken, NJ.

Marchenko, Yulia V, and Marc G Genton. 2012. “A Heckman Selection-T Model.” Journal of the American Statistical Association 107 (497). Taylor & Francis Group: 304–17.

Mroz, Thomas A. 1987. “The Sensitivity of an Empirical Model of Married Women’s Hours of Work to Economic and Statistical Assumptions.” Econometrica: Journal of the Econometric Society. JSTOR, 765–99.