Skip to Content

Regressão para dados com viés de seleção de amostra

Modelo Amostra Regressao

## Essa é uma tradução. O original pode ser encontrado aqui. [https://rpubs.com/wsundstrom/t_selection](https://rpubs.com/wsundstrom/t_selection)

Regressão com viés de seleção de amostra

O viés de seleção de amostra em modelos de regressão surge quando o processo pelo qual as observações são selecionadas na amostra depende da variável dependente (Y).

Esse processo em que a escolha da amostra depende de Y cria uma correlação entre o termo de erro e os regressores.

Por exemplo, gostaria de comprar um carro. Esse processo envolve duas decisões. A primeira seria comprar ou não comprar um carro. A segunda seria o preço que estamos dispostos a pagar pelo carro (qual o preço do carro).

Um outro exemplo clássico, que exploramos aqui, é a estimativa de uma equação de salário em que o salário é uma função de habilidades observáveis (digamos, educação, exepriência, etc), quando a decisão de trabalhar por remuneração depende da própria remuneração esperada.

Para ilustrar, vamos considerar um cenário simplificado, no qual as pessoas só optam por trabalhar por pagamento se seu salário esperado exceder algum valor limite constante. Caso contrário, o trabalho não vale a pena para eles e eles recorrem a outros recursos (renda dos pais).

Em seguida, a amostra de trabalhadores na força de trabalho, para os quais observamos rendimentos, é selecionada entre aqueles na população que são pagos acima desse limite. Entre os trabalhadores com alto nível de escolaridade, a maioria ganharia acima do limite de qualquer maneira, portanto, eles estão muito bem representados na amostra. Porém, entre os trabalhadores com menor escolaridade e geralmente com salários baixos, a amostra é mais seletiva e não aleatória: apenas aqueles com rendimentos altos, devido aos seus baixos níveis de educação, ultrapassam o limite e são observados na amostra de trabalhadores pagos.

Nesse cenário, a educação estaria negativamente correlacionada com o termo de erro, o que gera um viés para baixo no coeficiente MQO da variável educação.

Assim, há muitos motivos pelos quais uma amostra pode ser não aleatória de uma forma que pode causar viés de seleção. Para os dados da pesquisa, sabemos que as taxas de resposta são baixas e o tipo de pessoa que responde a uma pesquisa pode ser diferente do tipo que não o faz de maneiras que estão correlacionadas com a variável resposta, em média.

Em outros casos (como nosso exemplo de salário), observamos apenas a variável dependente para pessoas que tomam uma determinada decisão relacionada a essa variável, como trabalhar para receber, comprar um determinado produto ou migrar.

Às vezes, é possível estimar um modelo que corrige o viés de seleção da amostra que estaria presente no MQO. Essencialmente, o que precisamos é um modelo do processo de seleção. Então, uma vez que estimamos os determinantes da seleção, podemos usar isso para corrigir o viés na regressão. Nosso foco está na mecânica de como estimar esse tipo de modelo no R.

Para começar

O conjunto de dados Mroz87 contém dados de 1975 sobre o pagamento de mulheres casadas e a participação na força de trabalho, de um conhecido artigo de 1987 de Thomas Mroz. Mroz tirou seus dados do Panel Study of Income Dynamics (PSID), uma importante pesquisa nacional. O conjunto de dados está disponível como parte do pacote sampleSelection.

Vamos estimar uma equação do log dos salários para mulheres casadas, na qual o logarítmico natural dos salários é uma função da educação, experiência, experiência ao quadrado e uma variável dummy para viver em uma cidade grande. A questão aqui é que só podemos observar o salário das mulheres que trabalham por salário. Uma proporção substancial de mulheres casadas em 1975 estava fora da força de trabalho, então uma estimativa MQO da equação salarial seria estimada usando uma amostra sujeita a uma seleção considerável de amostra, resultando potencialmente em um viés da natureza discutida acima.

Como temos observações no conjunto de dados sobre não participantes (não trabalhando por remuneração), podemos implementar modelos que corrijam o processo de seleção. Observe também que criamos uma nova variável que é uma dummy para a mulher com filhos menores de 18 anos. Na verdade, vamos usar isso como um instrumento para a participação na força de trabalho.

Procedimentos de seleção de amostra: duas etapas e máxima verossimilhança

Vou construir três regressões para estimar a equação log dos salários e comparar os resultados. O primeiro é o modelo MQO, usando a amostra de participantes da força de trabalho, para os quais podemos observar o salário. Depois, vamos nos voltar para dois métodos para estimar a equação de salário com seleção. O primeiro é o chamado modelo de correção em duas etapas heckit ou Heckman, que deve seu nome ao economista vencedor do Prêmio Nobel, James Heckman.

A ideia de Heckman era tratar o problema de seleção como se fosse um problema de variável omitida. Uma equação probit de primeiro estágio estima o processo de seleção (quem está na força de trabalho?), E os resultados dessa equação são usados para construir uma variável que captura o efeito da seleção na equação salarial. Esta variável de correção é chamada de the inverse Mills ratio.

# Two-step estimation with LFP selection equation
heck1 = heckit( lfp ~ age + I( age^2 ) + kids + huswage + educ,
          log(wage) ~ educ + exper + I( exper^2 ) + city, data=Mroz87 )

A configuração segue o espírito do modelo linear padrão, mas, neste caso, observe que temos duas equações, separadas por uma vírgula.

  • A primeira equação no comando é o processo de seleção, que é estimado como um probit: lfp ~ idade + I (idade ^ 2) + família + filhos + marido + educ. A variável dependente é sempre a variável binária para ser selecionada para a amostra - neste caso, é lfp, que é uma variável dummy igual a um se a mulher participa da força de trabalho (e, portanto, está sendo paga e observada para o equação salarial). Depois, há uma vírgula, seguida por:
  • A segunda equação, que é a regressão salarial de interesse: log (salário) ~ exper + I (exper ^ 2) + educ + cidade.

A equação de seleção deve incluir como regressores variáveis que provavelmente afetarão o processo de seleção. Em nosso exemplo, queremos variáveis que poderiam afetar de forma plausível se uma mulher casada estaria ou não na força de trabalho.

Em princípio, a equação de seleção e a equação de salário poderiam ter exatamente o mesmo conjunto de regressores. Mas isso geralmente não é uma boa ideia. Para obter uma boa estimativa do modelo de seleção, é muito desejável ter pelo menos uma variável na equação de seleção que atue como um instrumento: ou seja, uma variável que se espera que afete o processo de seleção, mas não o processo salarial, exceto através da seleção. Neste exemplo, a variável filhos pode desempenhar tal papel, se pudermos supor que as mulheres com filhos podem ser mais propensas a serem mães que ficam em casa, mas para mães que trabalham, ter filhos não afetaria sua taxa de pagamento por hora.

Um método estatístico alternativo para obter o mesmo resultado que o modelo de Heckman é estimar o modelo de seleção usando a máxima verossimilhança (ML) para ambas as equações simultaneamente. Observe que a sintaxe do comando é virtualmente idêntica ao heckit:

# ML estimation of selection model
ml1 = selection( lfp ~ age + I( age^2 ) + kids + huswage + educ,
                    log(wage) ~ educ + exper + I( exper^2 ) + city, data=Mroz87 ) 
                    
library(stargazer)
## 
## Please cite as:
##  Hlavac, Marek (2018). stargazer: Well-Formatted Regression and Summary Statistics Tables.
##  R package version 5.2.2. https://CRAN.R-project.org/package=stargazer
library(sampleSelection)
## Warning: package 'sampleSelection' was built under R version 4.0.2
## Carregando pacotes exigidos: maxLik
## Warning: package 'maxLik' was built under R version 4.0.2
## Carregando pacotes exigidos: miscTools
## Warning: package 'miscTools' was built under R version 4.0.2
## 
## Please cite the 'maxLik' package as:
## Henningsen, Arne and Toomet, Ott (2011). maxLik: A package for maximum likelihood estimation in R. Computational Statistics 26(3), 443-458. DOI 10.1007/s00180-010-0217-1.
## 
## If you have questions, suggestions, or comments regarding the 'maxLik' package, please use a forum or 'tracker' at maxLik's R-Forge site:
## https://r-forge.r-project.org/projects/maxlik/
#===================================================
#   1. Data Mroz data on married women's wages
#===================================================
### Data from Mroz (1987). Using PSID 1975 data. From package sampleSelection.
# Mroz, T. A. (1987) The sensitivity of an empirical model of married women's 
# hours of work to economic and statistical assumptions. Econometrica 55, 765–799.

data(Mroz87)

# dummy variable for kids
Mroz87$kids = ( Mroz87$kids5 + Mroz87$kids618 > 0 )

#===================================================
#   2. Sample selection methods
#===================================================
### These are based on estimating an earnings equation for married women

# OLS: log wage regression on LF participants only
ols1 = lm(log(wage) ~ educ + exper + I( exper^2 ) + city, data=subset(Mroz87, lfp==1))

# Two-step estimation with LFP selection equation
heck1 = heckit( lfp ~ age + I( age^2 ) + kids + huswage + educ, log(wage) ~ educ + exper + I( exper^2 ) + city, data=Mroz87 )

# ML estimation of selection model
ml1 = selection( lfp ~ age + I( age^2 ) + kids + huswage + educ, log(wage) ~ educ + exper + I( exper^2 ) + city, data=Mroz87 ) 

# Note: following is the same as above heckit model heck1
# heck2 = selection( lfp ~ age + I( age^2 ) + kids + huswage + educ,
#                   wage ~ educ + exper + I( exper^2 ) + city, data=Mroz87, method="2step" ) 

# stargazer table
stargazer(ols1, heck1, ml1,    
          title="Married women's wage regressions", type="text", 
          df=FALSE, digits=4)
## 
## Married women's wage regressions
## ==============================================================
##                                Dependent variable:            
##                     ------------------------------------------
##                                     log(wage)                 
##                        OLS         Heckman        selection   
##                                   selection                   
##                        (1)           (2)             (3)      
## --------------------------------------------------------------
## educ                0.1057***     0.1152***       0.1112***   
##                      (0.0143)     (0.0204)        (0.0171)    
##                                                               
## exper               0.0411***     0.0427***       0.0420***   
##                      (0.0132)     (0.0134)        (0.0132)    
##                                                               
## I(exper2)           -0.0008**     -0.0008**       -0.0008**   
##                      (0.0004)     (0.0004)        (0.0004)    
##                                                               
## city                  0.0542       0.0447          0.0487     
##                      (0.0681)     (0.0692)        (0.0684)    
##                                                               
## Constant            -0.5308***    -0.7524*        -0.6586**   
##                      (0.1990)     (0.3926)        (0.2962)    
##                                                               
## --------------------------------------------------------------
## Observations           428           753             753      
## R2                    0.1581       0.1589                     
## Adjusted R2           0.1501       0.1490                     
## Log Likelihood                                    -916.2869   
## rho                                0.2234      0.1303 (0.2229)
## Inverse Mills Ratio            0.1501 (0.2293)                
## Residual Std. Error   0.6667                                  
## F Statistic         19.8561***                                
## ==============================================================
## Note:                              *p<0.1; **p<0.05; ***p<0.01
# To see the first-stage (selection equation) probit estimates:
stargazer(heck1, ml1,    
          title="Married women's LFP regressions", type="text", 
          df=FALSE, digits=4, 
          selection.equation=TRUE)
## 
## Married women's LFP regressions
## ===================================================
##                           Dependent variable:      
##                     -------------------------------
##                                   lfp              
##                         Heckman        selection   
##                        selection                   
##                           (1)             (2)      
## ---------------------------------------------------
## age                    0.2044***       0.1992***   
##                        (0.0664)        (0.0671)    
##                                                    
## I(age2)               -0.0026***      -0.0026***   
##                        (0.0008)        (0.0008)    
##                                                    
## kids                  -0.4270***      -0.4238***   
##                        (0.1310)        (0.1313)    
##                                                    
## huswage               -0.0420***      -0.0429***   
##                        (0.0121)        (0.0122)    
##                                                    
## educ                   0.1313***       0.1325***   
##                        (0.0228)        (0.0229)    
##                                                    
## Constant              -4.6068***      -4.5124***   
##                        (1.4073)        (1.4163)    
##                                                    
## ---------------------------------------------------
## Observations              753             753      
## R2                      0.1589                     
## Adjusted R2             0.1490                     
## Log Likelihood                         -916.2869   
## rho                     0.2234      0.1303 (0.2229)
## Inverse Mills Ratio 0.1501 (0.2293)                
## ===================================================
## Note:                   *p<0.1; **p<0.05; ***p<0.01
# Or to see both equations together in less attractive tables:
summary(heck1)
## --------------------------------------------
## Tobit 2 model (sample selection model)
## 2-step Heckman / heckit estimation
## 753 observations (325 censored and 428 observed)
## 14 free parameters (df = 740)
## Probit selection equation:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -4.6067983  1.4072534  -3.274 0.001111 ** 
## age          0.2043835  0.0663822   3.079 0.002155 ** 
## I(age^2)    -0.0026174  0.0007791  -3.359 0.000821 ***
## kidsTRUE    -0.4270345  0.1309974  -3.260 0.001166 ** 
## huswage     -0.0419745  0.0121387  -3.458 0.000576 ***
## educ         0.1313128  0.0227687   5.767 1.18e-08 ***
## Outcome equation:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -0.7524012  0.3926416  -1.916  0.05572 .  
## educ         0.1152050  0.0204064   5.646 2.35e-08 ***
## exper        0.0427268  0.0133502   3.200  0.00143 ** 
## I(exper^2)  -0.0008469  0.0003984  -2.126  0.03383 *  
## city         0.0446548  0.0692400   0.645  0.51917    
## Multiple R-Squared:0.1589,   Adjusted R-Squared:0.149
##    Error terms:
##               Estimate Std. Error t value Pr(>|t|)
## invMillsRatio   0.1501     0.2293   0.655    0.513
## sigma           0.6720         NA      NA       NA
## rho             0.2234         NA      NA       NA
## --------------------------------------------
summary(ml1)
## --------------------------------------------
## Tobit 2 model (sample selection model)
## Maximum Likelihood estimation
## Newton-Raphson maximisation, 4 iterations
## Return code 1: gradient close to zero
## Log-Likelihood: -916.2869 
## 753 observations (325 censored and 428 observed)
## 13 free parameters (df = 740)
## Probit selection equation:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -4.5123815  1.4162713  -3.186 0.001503 ** 
## age          0.1992498  0.0670579   2.971 0.003061 ** 
## I(age^2)    -0.0025569  0.0007875  -3.247 0.001220 ** 
## kidsTRUE    -0.4238143  0.1312568  -3.229 0.001298 ** 
## huswage     -0.0428919  0.0121978  -3.516 0.000464 ***
## educ         0.1325479  0.0229000   5.788 1.05e-08 ***
## Outcome equation:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -0.6585505  0.2962345  -2.223  0.02651 *  
## educ         0.1111762  0.0170956   6.503 1.45e-10 ***
## exper        0.0420022  0.0132165   3.178  0.00154 ** 
## I(exper^2)  -0.0008252  0.0003943  -2.093  0.03669 *  
## city         0.0486690  0.0683836   0.712  0.47687    
##    Error terms:
##       Estimate Std. Error t value Pr(>|t|)    
## sigma  0.66590    0.02533  26.288   <2e-16 ***
## rho    0.13033    0.22289   0.585    0.559    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## --------------------------------------------