Primeira vez aqui? Seja bem vindo e cheque o FAQ!
x

Explorando a base de dados do artigo "Post-Selection and Post-Regularization Inference in Linear Models with Many Controls and Instruments" (2015).

0 votos
66 visitas
perguntada Mai 19 em Dados e Bases de Dados por claudiaeirado (66 pontos)  
editado Mai 19 por claudiaeirado

O objetivo é replicar um artigo de economia, parte dele ou pelo menos usar os dados de algum trabalho empírico (se a técnica do seu artigo de interesse não tiver sido discutida no curso) usando uma das técnicas discutidas no curso.

O artigo com o referencial teórico e os dados para aplicação é:

Chernozhukov, Victor, Christian Hansen, and Martin Spindler. 2015. "Post-Selection and Post-Regularization Inference in Linear Models with Many Controls and Instruments." American Economic Review, 105 (5): 486-90.
doi: 10.1257/aer.p201510

Os slides da apresentação estão disponíveis aqui.

Compartilhe

2 Respostas

0 votos
respondida Mai 19 por claudiaeirado (66 pontos)  
editado Mai 22 por claudiaeirado

1. Motivação

Uma grande quantidade de pesquisas econômicas empíricas é realizada com o objetivo de estimar efeitos causais ou estruturais e dependem do uso do conjunto certo de controles e instrumentos. A necessidade de métodos formais que realizem esta seleção de modelo e procedimentos inferenciais que permaneçam válidos, seguindo o modelo, tende a aumentar em importância à medida que conjuntos de dados se tornam cada vez mais detalhados.

O objetivo do artigo é apresentar abordagem para estimar parâmetros estruturais na presença de muitos instrumentos e controles baseados em métodos para estimação em base de dados esparsas de alta dimensão.

Aqui, apresentaremos a aplicação/replicação do modelo de regressão OLS básico e OLS IV em 2 estágios (2SLS), técnicas estas apresentadas no curso de Econometria I e compararemos com os resultados para o modelo de variáveis instrumentais com o método de seleção com regularização lasso (post-model-selection) apresentado também em Chernozhukov el al (2015) .

A rotina implementada em Python, e os resultados replicados nesse exercício deram exatamente os mesmos valores apresentados no artigo original. Os autores oferecem uma rotina em Matlab que foi rodada para comparação do OLS básico e OLS IV (2SLS) e para obtenção dos resultados do post-model-selection.

2. Referencial Teórico

Considere o modelo linear IV:

(1) \(y_{i} = \alpha_{0} d_{i} + x^{'}_{i} \beta_{0} + \epsilon_{i} ,\)
(2) \(d_{i} = x_{i}^{'} \gamma_{0} + z_{i}^{'} \delta_{0} + u_{i},\) com \(E[( z_{i}^{'} , x_{i}^{'})^{'} \epsilon_{i} ] = E[( z_{i}^{'} , x_{i}^{'})^{'} u_{i} ] = 0,\)

onde \(d_{i}\) é uma variável escalar endógena, e \(\alpha\) é o coeficiente de interesse, \(x_{i}\) é um vetor \(p^{x}_{n}\) de variáveis de controle exógenas e \(z_{i}\) é um vetor \(p^{z}_{n}\) de instrumentos e n é o tamanho da amostra.
Temos que \(x_{i}\) e \(z_{i}\) são correlacionados e \(z_{i}=\Pi x_{i} + \zeta_{i}\) são instrumentos válidos após o controle para \(x_{i}\) , \(\Pi\) é uma matriz \(p^{z}_{n} \times p^{x}_{n}\) e \(\zeta_{i}\) é um vetor \(p^{z}_{n}\) não-observáveis com \(E[x_{i} \zeta_{i}^{'} ]=0\) .

(3) \(y_{i} = x^{'}_{i} \theta_{0} + \rho^{y}_{i} ,\)
(4) \(d_{i} = x_{i}^{'} \vartheta_{0} + \rho^{d}_{i},\) com \(E[x_{i}^{'} \rho^{y}_{i} ] = E[x_{i}^{'} \rho^{d}_{i} ] = 0\).

Em um modelo IV com muitos instrumentos e controles, temos a seguinte condição:

(5) \(M(\alpha_{0};\eta_{0})=0\), \(\psi_{i}(\alpha;\eta)=0\),

onde \(\psi_{i}(\alpha;\eta)= ( \tilde{\rho}^{y}_{i} - \tilde{\rho}^{d}_{i} \alpha) \tilde{\nu_{i}} \), para \(\eta=(\theta^{'}, \vartheta^{'},\gamma^{'},\delta^{'})\),
\(\tilde{\rho}^{y}_{i}=y_{i} - x^{'}_{i} \theta\),
\(\tilde{\rho}^{d}_{i} = d_{i} - x^{'}_{i} \vartheta\) e
\(\tilde{\nu}_{i}= x_{i}^{'} \gamma + z_{i}^{'} \delta - x^{'}_{i} \vartheta\).
Quando \( \eta=\eta_{0}\), temos:
\(\tilde{\rho}^{y}_{i}= \rho^{y}_{i}=y_{i} - x^{'}_{i} \theta_{0}\),
\(\tilde{\rho}^{d}_{i} = \rho^{d}_{i} = d_{i} - x^{'}_{i} \vartheta_{0}\) e
\(\tilde{\nu}_{i}= \nu_{i} = x_{i}^{'} \gamma_{0} + z_{i}^{'} \delta_{0} - x^{'}_{i} \vartheta_{0} = \zeta^{'}_{i} \delta_{0}\).

3. Algoritmo

No artigo de Chernozhukov et al (2015), os autores propõem o algoritmo o qual consiste no processo de regularização de regressões lasso para escolha dos instrumentos e controles e posterior aplicação de método padrão de regressão IV, como a seguir:

(i) Faça a regressão Lasso ou Pós-Lasso de \(d_{i}\) em \(x_{i}\) , \({z}_i\) para obter \(\hat{\gamma}\) e \(\hat{\delta}\).
(ii) Faça a regressão Lasso ou Pós-Lasso de \(y_{i}\) em \(x_{i}\) para obter \(\hat{\theta}\).
(iii) Faça a regressão Lasso ou Pós-Lasso de \(\hat{d_{i}} = x_{i}^{'} \hat{\gamma} + z_{i}^{'} \hat{\delta},\) em \(x_{i}\) para obter \(\hat{\vartheta}\).
(iv) Seja \(\hat{\rho}^{y}_{i}=y_{i} - x^{'}_{i} \hat{\theta}\), \(\hat{\rho}^{d}_{i} = d_{i} - x^{'}_{i} \hat{\vartheta}\) e \(\hat{\nu}_{i}= x_{i}^{'} \hat{\gamma} + z_{i}^{'} \hat{\delta} - x^{'}_{i} \hat{\vartheta}\).

Obtenha o estimador \(\hat{\alpha}\) usando a regressão IV padrão de \(\hat{\rho}^{y}_{i}\) em \(\hat{\rho}^{d}_{i}\) com \(\hat{\nu}_{i}\) como o instrumento. Realize inferência em \(\alpha_{0}\) usando \(\hat{\alpha}\) junto com a estatística \(R^{2}\), o teste t para os coeficientes e convencional heterocedas- ticidade para erros-padrões robustos.

4. Base de Dados
A base de dados está disponível aqui e possui 2.217 registros e 15 variáveis que incluem as características dos veículos e produtos relacionados obtidas de edições anuais de Automotive News Market Data Book, de 1971 a 1990 . Essa base de dados originalmente foi apresentada em \(\text{Berry et al} (1995)^{**}\). Possui as variáveis: modelid, id, produtct, air, mpd, mpg, trend, cdindex, cdid, firmid, space, price, share, outshr, hpwt. São dados do modelo do automóvel, produtos, dummy de presença de ar condicionado, milhas por dólar (incremento de dezenas de milhas que o carro anda com $1 de gasolina), milhas por galão de gasolina, firma, tamanho do veículo, preço (em milhares), fatia de mercado do produto \(i\) no mercado \(t\), fatia de mercado do produto 0, potência (horsepower) por peso. São apresentadas as quatro primeiras e quatro últimas linhas da tabela importada:

    share    outshr      hpwt   ...  Z_riv_mpd  Z_riv_space         y
0  0.001051   0.88011  0.52900  ...     167.33       125.56 -6.730019
1  0.000670   0.88011  0.49432  ...     167.33       125.56 -7.180405
2  0.000341   0.88011  0.46761  ...     167.33       125.56 -7.857299
3  0.000522   0.88011  0.42654  ...     167.33       125.56 -7.429675
4  0.000442   0.88011  0.45249  ...     167.33       125.56 -7.595543
.
.
.
2212  0.000488    0.9078  0.38592  ...     351.76       160.54  -7.527460
2213  0.000092    0.9078  0.43597  ...     351.76       160.54  -9.202440
2214  0.000067    0.9078  0.35829  ...     355.65       163.59  -9.508134
2215  0.000039    0.9078  0.81491  ...     352.89       162.18 -10.062940
2216  0.000025    0.9078  0.69380  ...     352.89       162.18 -10.503912

São apresentadas algumas estatísticas descritivas (N, média, desvio-padrão, mínimo, q1, mediana, q3 e máximo):

                 y       share       outshr          hpwt 
count  2.217000e+03  2.217000e+03  2217.000000  2217.000000
mean   1.115812e-14  9.732482e-04     0.892779     0.394375
std    1.381639e+00  1.144919e-03     0.013642     0.096643
min   -6.499082e+00  7.010000e-07     0.871400     0.170450
25%   -9.331226e-01  1.862500e-04     0.879860     0.336590
50%    1.943196e-01  5.698400e-04     0.891800     0.375050
75%    1.008323e+00  1.285500e-03     0.907800     0.427510
max    3.028713e+00  9.472800e-03     0.918870     0.947580
                   air          mpd          mpd       space 
count  2217.000000  2217.000000  2217.000000  2217.000000
mean      0.241768     2.084869     2.084869     1.310159
std       0.428251     0.698056     0.698056     0.237637
min       0.000000     0.846070     0.846070     0.756000
25%       0.000000     1.557000     1.557000     1.131300
50%       0.000000     2.010400     2.010400     1.269800
75%       0.000000     2.482800     2.482800     1.452700
max       1.000000     6.436800     6.436800     1.888000
             price      product          mpg        trend        space
count  2217.000000  2217.000000  2217.000000  2217.000000  2217.000000
mean     11.761419    58.042400     2.099643    10.540370     1.310159
std       8.643770    35.557664     0.581070     5.740816     0.237637
min       3.393300     1.000000     0.913000     0.000000     0.756000
25%       6.713800    28.000000     1.700000     6.000000     1.131300
50%       8.728700    56.000000     2.000000    11.000000     1.269800
75%      13.074000    84.000000     2.500000    16.000000     1.452700
max      68.597000   150.000000     5.300000    19.000000     1.888000

5. O modelo IV - Instrumentos e Controles

Considere o modelo:

(5) \( log ( s_{it} ) - log ( s_{0t}) = \alpha_{0} p_{it} + x^{'}_{it} \beta_{0} + \epsilon_{it}\)
(6) \(p_{it} = z^{'}_{it} \delta_{0} + x^{'}_{it} \gamma_{0} + u_{it}.\)

Queremos estimar os coeficientes do modelo de demanda por automóveis, representado por \(y= log (s_{it}) - log (s_{0t})\) . A variável endógena é o preço e \( s_{it} \) é o market share. Em seus resultados, usaram as variáveis de controle em \( x_{it} \) :

  1. uma constante,
  2. uma dummy de presença de ar condicionado (air) ,
  3. potência (HP) dividido pelo peso (hpwt),
  4. milhas por dolar(mpd),
  5. tamanho do veículo (space).

Eles argumentaram que as demais variáveis são instrumentos válidos para o preço e escolheram 10 instrumentos \(z_{it}\). Os cinco primeiros instrumentos são formados pela exclusão do produto \(i\) e, em seguida, somando cada característica em \(x\) através de todos os produtos restantes produzidos pela firma do produto \(i\). Os outros cinco instrumentos são semelhantes, construídos excluindo todos os produtos da firma do produto i e, em seguida, somando cada característica em x em todos os produtos restantes.

O gráfico de correlação entre as variáveis de controle e a variável resposta:

A imagem será apresentada aqui.

A matriz de dispersão entre as variáveis de controle e a variável resposta:

A imagem será apresentada aqui.

A matriz de dispersão entre as variáveis de controle, instrumentos e a variável resposta:

A imagem será apresentada aqui.

6. Resultados Econométricos

I) Modelo OLS Básico

No modelo básico OLS (sem instrumentos), temos a regressão da variável resposta y em relação às variáveis air, hpwt, mpd, space e price juntamente com uma constante, todas tratadas como exógenas e independentes. Segue o resultado:

                            OLS Regression Results                            
==============================================================================
Dep. Variable:                      y   R-squared:                       0.387
Model:                            OLS   Adj. R-squared:                  0.386
Method:                 Least Squares   F-statistic:                     279.2
Date:                Tue, 18 May 2021   Prob (F-statistic):          6.48e-232
Time:                        22:32:46   Log-Likelihood:                -3319.4
No. Observations:                2217   AIC:                             6651.
Df Residuals:                    2211   BIC:                             6685.
Df Model:                           5                                         
Covariance Type:            nonrobust                                         
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
const        -10.0717      0.253    -39.822      0.000     -10.568      -9.576
hpwt          -0.1242      0.277     -0.448      0.654      -0.668       0.420
air           -0.0343      0.073     -0.471      0.637      -0.177       0.108
mpd            0.2650      0.043      6.145      0.000       0.180       0.350
space          2.3421      0.125     18.707      0.000       2.097       2.588
price         -0.0886      0.004    -22.015      0.000      -0.097      -0.081
==============================================================================
Omnibus:                      158.014   Durbin-Watson:                   1.478
Prob(Omnibus):                  0.000   Jarque-Bera (JB):              205.626
Skew:                          -0.632   Prob(JB):                     2.23e-45
Kurtosis:                       3.792   Cond. No.                         203.
==============================================================================

Observa-se que nesse primeiro modelo temos \(\alpha_{0} = -0.089\) com erro-padrão de 0.004. As variáveis significantes pelo teste t são a constante, mpd, space e price. As variáveis hpwt e air são não-significantes. O coeficiente de determinação \(R^{2}=0.387\).

** Berry, Steven, James Levinsohn, and Ariel Pakes. "Automobile Prices in Market Equilibrium." Econometrica 63, no. 4 (1995): 841-90. Accessed May 19, 2021. doi:10.2307/2171802.

0 votos
respondida Mai 19 por claudiaeirado (66 pontos)  
editado Mai 21 por claudiaeirado

(Continuação)

II) Modelo OLS com Variáveis instrumentais em 2 estágios

No modelo OLS IV foi aplicada o OLS em 2 estágios. No primeiro estágio 1SLS, a regressão OLS da variável endógena é price (variável resposta) em relação às 4 variáveis de controle (air, hpwt, mpd, space) e os 10 instrumentos construídos como descrito acima, gerando \(\widehat{price}\) estimado. Segue o resultado:

     1SLS Regression Results                                
=======================================================================================
Dep. Variable:                  price   R-squared (uncentered):                   0.869
Model:                            OLS   Adj. R-squared (uncentered):              0.868
Method:                 Least Squares   F-statistic:                              1041.
Date:                Tue, 18 May 2021   Prob (F-statistic):                        0.00
Time:                        22:51:56   Log-Likelihood:                         -6838.0
No. Observations:                2217   AIC:                                  1.370e+04
Df Residuals:                    2203   BIC:                                  1.378e+04
Df Model:                          14                                                  
Covariance Type:            nonrobust                                                  
==================================================================================
                     coef    std err          t      P>|t|      [0.025      0.975]
----------------------------------------------------------------------------------
hpwt              27.8603      1.381     20.179      0.000      25.153      30.568
air                8.1065      0.338     23.969      0.000       7.443       8.770
mpd               -3.2532      0.292    -11.155      0.000      -3.825      -2.681
space              2.3155      0.650      3.565      0.000       1.042       3.589
Z_constant        -0.3729      0.147     -2.531      0.011      -0.662      -0.084
Z_hpwt            -0.3028      0.113     -2.686      0.007      -0.524      -0.082
Z_air              0.5404      0.047     11.463      0.000       0.448       0.633
Z_mpd             -0.0067      0.020     -0.338      0.735      -0.045       0.032
Z_space            0.1929      0.088      2.182      0.029       0.020       0.366
Z_riv_constant     0.1318      0.050      2.623      0.009       0.033       0.230
Z_riv_hpwt        -0.2309      0.054     -4.302      0.000      -0.336      -0.126
Z_riv_air         -0.0179      0.019     -0.926      0.354      -0.056       0.020
Z_riv_mpd          0.0259      0.006      4.655      0.000       0.015       0.037
Z_riv_space       -0.0385      0.043     -0.903      0.367      -0.122       0.045
==============================================================================
Omnibus:                      952.966   Durbin-Watson:                   0.975
Prob(Omnibus):                  0.000   Jarque-Bera (JB):             6630.304
Skew:                           1.885   Prob(JB):                         0.00
Kurtosis:                      10.588   Cond. No.                     3.60e+03
==============================================================================

No segundo estágio 2SLS, a regressão OLS é da variável y - demanda (variável resposta) em relação às 4 variáveis de controle adicionadas de \(\widehat{price}\) estimado em 1SLS e a constante. Segue o resultado:

2SLS Regression Results                            
==============================================================================
Dep. Variable:                      y   R-squared:                       0.301
Model:                            OLS   Adj. R-squared:                  0.300
Method:                 Least Squares   F-statistic:                     190.6
Date:                Tue, 18 May 2021   Prob (F-statistic):          3.97e-169
Time:                        23:02:13   Log-Likelihood:                -3464.7
No. Observations:                2217   AIC:                             6941.
Df Residuals:                    2211   BIC:                             6976.
Df Model:                           5                                         
Covariance Type:            nonrobust                                         
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
const         -9.7369      0.274    -35.482      0.000     -10.275      -9.199
hpwt           1.3384      0.421      3.181      0.001       0.513       2.163
air            0.5599      0.141      3.964      0.000       0.283       0.837
mpd            0.1388      0.051      2.701      0.007       0.038       0.240
space          2.2167      0.135     16.446      0.000       1.952       2.481
price_hat     -0.1419      0.011    -12.386      0.000      -0.164      -0.119
==============================================================================
Omnibus:                      114.581   Durbin-Watson:                   1.378
Prob(Omnibus):                  0.000   Jarque-Bera (JB):              135.079
Skew:                          -0.548   Prob(JB):                     4.66e-30
Kurtosis:                       3.510   Cond. No.                         243.
==============================================================================

Observa-se que nesse segundo modelo com variáveis instrumentais, aplicando o OLS em 2 estágios, temos \( \alpha_{0} = -0.142\) com erro-padrão de 0.012. Todas as variáveis são significantes pelo teste t: a constante, mpd, space, hpwt, air e price. O coeficiente de determinação \(R^{2}=0.301\). Segue o gráfico do ajuste:

A imagem será apresentada aqui.

Nesse exercício a proposta era replicar uma técnica ministrada no curso de Econometria I, no caso o OLS e OLS com IV em 2 estágios (2SLS).

Os autores do artigo aplicam a técnica discutida na seções 2 e 3. Para efeito de comparação, o modelo utilizando utilizando o algoritmo LASSO (post-model-selection) com os mesmos 5 controles e 10 instrumentos, após a seleção usando apenas as variáveis originais, o \(\hat{\alpha}=-0.185\) com erro-padrão estimado de 0.014.

Para o modelo utilizando potenciais 24 variáveis de controle e 48 instrumentos (gerados por combinação lineares, quadráticas e cúbicas) , após a seleção, o modelo obteve o coeficiente estimado para o preço foi \(\hat{\alpha}_{pm}=-0.221\) com erro-padrão estimado de 0.015.

Particularmente, o resultado do modelo com 24 variáveis de controle e 48 instrumentos indica que pode haver não-linearidade não detectada nas variáveis originais.

Esse resultado mostra que a demanda é muito mais elástica do que nos resultados anteriores e sugere que a escolha dos instrumentos pode melhorar a análise de causalidade, além de que a técnica post-model-selection é uma ferramenta poderosa no aprimoramento de escolha de instrumentos e controles.

7. Código desenvolvido para o exercício

Originalmente, a base de dados foi disponibilizada pelos autores do artigo em Matlab. Foi realizada a exportação da base de dados original e instrumentos para extensão csv. O código foi desenvolvido em Python 3.7. As bibliotecas utilizadas foram numpy, pandas, seaborn, matplotlib e statsmodels. Segue o script:

import numpy as np # linear algebra
import pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)
import seaborn as sns
import matplotlib.pyplot as plt
import statsmodels.api as sm

# Lendo o arquivo
automoveis = pd.read_csv('dados_artigo.csv',sep=',')
automoveis.info()
automoveis.head()
automoveis.columns


X = automoveis[['hpwt ', 'air', 'mpd', 'space ', 'price']]

y=np.log(automoveis['share  ']) - np.log(automoveis['outshr  '])
automoveis['y'] = y
y=automoveis[['y']]

Z=automoveis[['hpwt ', 'air', 'mpd', 'space ', 'price','Z_constant','Z_hpwt', 'Z_air', 'Z_mpd','Z_space', 'Z_riv_constant', 'Z_riv_hpwt', 'Z_riv_air', 'Z_riv_mpd','Z_riv_space']]
Matrix=automoveis[['hpwt ', 'air', 'mpd', 'space ', 'price','y']]
Zp=automoveis[['hpwt ', 'air', 'mpd', 'space' ,'Z_constant', 'Z_hpwt', 'Z_air', 'Z_mpd','Z_space']]

########### Verificando a correlação 
f,ax = plt.subplots(figsize=(8, 8))
sns.heatmap(Matrix.corr(), annot=True, linewidths=.5, fmt= '.1f',ax=ax, cmap="YlGnBu")
bottom, top = ax.get_ylim()
ax.set_ylim(bottom + 0.5, top - 0.5)
plt.show()

########### Sumarizando os dados e verificando a matriz de dispersão
W1=automoveis[['y', 'share  ', 'outshr  ', 'hpwt ']]
W2=automoveis[['air','mpd','mpd', 'space ']]
W3=automoveis[[ 'price', 'product', 'mpg', 'trend', 'space']]
desc1=W1.describe()
desc2=W2.describe()
desc3=W3.describe()
desc1
desc2
desc3 
descritivo=automoveis.describe()
descritivo
pd.plotting.scatter_matrix(Matrix, figsize=(10,10))
plt.show()
pd.plotting.scatter_matrix(Zp, figsize=(10,10))
plt.show()

###############################################################
#############Calculando o OLS sem Instrumentos ################
###############################################################


# Adicionando uma constante à matriz X
X_sm = sm.add_constant(X)
# OLS com o método fit para treinar o modelo
model_OLS = sm.OLS(y, X_sm)
results = model_OLS.fit()
# Output do modelo
results.summary()
# Previsões para o mesmo conjunto passado
y_hat=results.predict(X_sm)


########### Construindo o gráfico para o OLS sem Instrumentos
plt.figure(figsize=(6,6))
plt.scatter(y_hat, y, color='#FEBFB3', s = 0.2)
plt.plot([-3, 2], [-14, 2], color='#007bff44', linestyle='-', linewidth=3)
plt.suptitle('Dados - Previsão x Observados ', fontsize=18)
plt.xlabel('Previsão - Regressão OLS', fontsize = 16)
plt.ylabel('Observado', fontsize=16)
plt.show()

##############################################################################
########### Usando as variáveis instrumentais em 2 estágios 2SLS #############
##############################################################################


Z=automoveis[['hpwt ', 'air', 'mpd', 'space ','Z_constant', 'Z_hpwt', 'Z_air', 'Z_mpd','Z_space', 'Z_riv_constant', 'Z_riv_hpwt', 'Z_riv_air', 'Z_riv_mpd','Z_riv_space']]
P=automoveis[['price']]
Xp=automoveis[['hpwt ', 'air', 'mpd', 'space' ]]

########### 1º Estágio
model1S = sm.OLS(P, Z)
result1S=model1S.fit()
print(result1S.summary())
########### Obtendo o preço estimado por meio dos instrumentos Z e variáveis de controle Xp
Xp['price_hat'] = result1S.predict()

########### 2º Estágio
X_psm = sm.add_constant(Xp)
model2S = sm.OLS(y, X_psm)
result2S=model2S.fit()
print(result2S.summary())
########### Obtendo a demanda estimada por meio das variáveis de controle Xp + preço estimado
y_hat2S=result2S.predict()

########### Construindo o gráfico
plt.scatter(y_hat2S, y, color='#FEBFB3', s = 0.2)
plt.plot([-10, 2], [-14, 2], color='#007bff44', linestyle='-', linewidth=3)
plt.suptitle('Dados - Previsão x Observados ', fontsize=18)
plt.xlabel('Previsão - Regressão 2SLS', fontsize = 16)
plt.ylabel('Observado', fontsize=16)
plt.show()
...