23 ago 2014

Ejercicios de econometría resueltos usando STATA (capitulo 3. de Wooldridge (2009))

Índice de ejercicios resueltos
                Capítulo2. El modelo de regresión simple

Chapter 3 - Multiple Regression Analysis: Estimation

*Ejercicio C3.1 Bwght.cvs

i. El signo esperado del coeficiente b_2 es positivo, debido a que se espera que en promedio, mayores niveles de ingreso provoque mejores oportunidades de acceso a servicios de salud y atención prenotar como costearse mejores niveles de nutrición. Otros indicadores sociales están frecuentemente asociados con el ingreso, como las condiciones de la vivienda, el hacinamiento o el nivel educativo de la madre.

ii. desde mi punto de vista, La correlación entre las variables independiente (fumar e ingresos) pueden variar de signo, aunque en mí país la clase media alta tiende a fumar con mayor frecuencia (por lo menos en jóvenes). Esta relación puede ser positiva en el caso de que mayores niveles de ingresos permite una mayor capacidad de compra; en el caso contrario en que la misma sea negativa se puede expresar, en mayor nivel de ingresos este asociada con mayor educación que permita a la madre reconocer que fumar es perjudicial para la salud del bebe.

iii. Se estima la regresión simple sin incluir  la variable de ingresos

*cargando base de datos
insheet using "C:\Users\Nerys\Documents\Biblioteca\Econometria, libos ebooks\Solucion a ejercicios de econometria\Base de datos wooldridge\bwght.csv", comma clear

*Una forma de comparar ambos modelos en una sola tabla:
ssc install estout

estimates store m1, title(Model 1)
     regress  bwght  cigs

estimates store m2, title(Model 2)
     regress  bwght  cigs  faminc

estout m1 m2, cells(b(star fmt(3)) se(par fmt(2))) legend label varlabels(_cons constant) stats(r2 df_r bic)

----------------------------------------------------
                          Model 1         Model 2  
                             b/se            b/se  
----------------------------------------------------
cigs                       -0.514***       -0.463***
                           (0.09)          (0.09)  
faminc                                      0.093**
                                           (0.03)  
constant                  119.772***      116.974***
                           (0.57)          (1.05)  
----------------------------------------------------
r2                          0.023           0.030  
df_r                     1386.000        1385.000  
bic                     12285.386       12282.535  
----------------------------------------------------
* p<0.05, ** p<0.01, *** p<0.001

*Ejercicio C3.2 hprice1.cvs

insheet using "C:\Users\Nerys\Documents\Biblioteca\Econometria, libos ebooks\Solucion a ejercicios de econometria\Base de datos wooldridge\hprice1.csv ", comma clear

. regres  price  sqrft bdrms

      Source |       SS       df       MS              Number of obs =      88
-------------+------------------------------           F(  2,    85) =   72.96
       Model |  580009.152     2  290004.576           Prob > F      =  0.0000
    Residual |  337845.354    85  3974.65122           R-squared     =  0.6319
-------------+------------------------------           Adj R-squared =  0.6233
       Total |  917854.506    87  10550.0518           Root MSE      =  63.045

------------------------------------------------------------------------------
       price |      Coef.   Std. Err.      t    P>|t|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
       sqrft |   .1284362   .0138245     9.29   0.000     .1009495    .1559229
       bdrms |   15.19819   9.483517     1.60   0.113    -3.657582    34.05396
       _cons |    -19.315   31.04662    -0.62   0.536    -81.04399      42.414
------------------------------------------------------------------------------

i. Para representar los resultados como una ecuación, se puede utilizar el comando display de la forma siguiente:

. matrix b = e(b)
. display " price =  " b[1,3] " +"  b[1,1] "* sqrft" " + " b[1,2] "*bdrms + u"
          
price =  -19.314996 +.12843621* sqrft + 15.198191*bdrms + u

ii.
. display _b[bdrms]*1
15.198191

iii.
* display _b[bdrms]*(1+1)+ _b[bdrms]*(sqrft+140) ///incorrecto

iv.
. display e(r2)
.6319184

v.
. display _b[_cons] + _b[bdrms]*bdrms[1] + _b[sqrft]* sqrft[1]
354.60525

vi.
. display " Residual[1] =  " price[1]-(_b[_cons] + _b[bdrms]*bdrms[1] + _b[sqrft]* sqrft[1])

Residual[1] =  -54.605249


*Ejercicio C3.3 ceosal2.cvs

insheet using "C:\Users\Nerys\Documents\Biblioteca\Econometria, libos ebooks\Solucion a ejercicios de econometria\Base de datos wooldridge\ceosal2.csv ", comma clear

i.
*modelo de elasticidad constante. Escribirlo  en  forma de ecuación
. gen ln_salary = ln(salary)
. gen ln_mktval = ln(mktval)
. gen ln_sale = ln(sale)
. regress ln_salary ln_sale ln_mktval
. display "ln(salary)="_b[_cons] "+"_b[ln_sale] "*ln(sale)" "+"_b[ln_mktval] " *ln(mktval)+u"
ln(salary)=4.6209175+.16212831*ln(sale)+.10670798 *ln(mktval)+u

ii.
*Profit no se puede agregar porque al ser utilidades presenta valores negativos***


estimates store mmod1, title(Model 1)
     regress ln_salary ln_sale ln_mktval

estimates store mod2, title(Model 2)
     regress ln_salary ln_sale ln_mktval profits

. estout mmod1 mod2, cells(b(star fmt(3)) se(par fmt(4))) legend label varlabels(_cons constant) stats(N r2 df_r bic)


----------------------------------------------------
                          Model 1         Model 2  
                             b/se            b/se  
----------------------------------------------------
ln_sale                     0.161***        0.162***
                         (0.0399)        (0.0397)  
ln_mktval                   0.098           0.107* 
                         (0.0637)        (0.0501)  
profits                     0.000                  
                         (0.0002)                  
constant                    4.687***        4.621***
                         (0.3797)        (0.2544)  
----------------------------------------------------
N                         177.000         177.000  
r2                          0.299           0.299  
df_r                      173.000         174.000  
bic                       281.767         276.647  
----------------------------------------------------
* p<0.05, ** p<0.01, *** p<0.001

*Usando el R de ambos modelos se diria que no, que las utilidades de la empresa aportan poca informacion. El R no cambia.

iii.
estimates store m4, title(Model 3)
     regress ln_salary ln_sale ln_mktval profits ceoten

. estout m2 m1 m4, cells(b(star fmt(3)) se(par fmt(1))) legend label varlabels(_cons constant) stats(N r2 df_r bic)

--------------------------------------------------------------------
                          Model 2         Model 1         Model 3  
                             b/se            b/se            b/se  
--------------------------------------------------------------------
ln_sale                     0.162***        0.161***        0.162***
                            (0.0)           (0.0)           (0.0)  
ln_mktval                   0.107*          0.098           0.102  
                            (0.1)           (0.1)           (0.1)  
profits                                     0.000           0.000  
                                            (0.0)           (0.0)  
ceoten                                                      0.012* 
                                                            (0.0)  
constant                    4.621***        4.687***        4.558***
                            (0.3)           (0.4)           (0.4)  
--------------------------------------------------------------------
N                         177.000         177.000         177.000  
r2                          0.299           0.299           0.318  
df_r                      174.000         173.000         172.000  
bic                       276.647         281.767         282.087  
--------------------------------------------------------------------
* p<0.05, ** p<0.01, *** p<0.001

iv.
. correlate ( ln_mktval profits)
(obs=177)

             | ln_mkt~l  profits
-------------+------------------
   ln_mktval |   1.0000
     profits |   0.7769   1.0000

*Ejercicio C3.4 attend.cvs

insheet using "C:\Users\Nerys\Documents\Biblioteca\Econometria, libos ebooks\Solucion a ejercicios de econometria\Base de datos wooldridge\attend.csv ", comma clear

i.

. summ attend prigpa act

    Variable |       Obs        Mean    Std. Dev.       Min        Max
-------------+--------------------------------------------------------
      attend |       680    26.14706    5.455037          2         32
      prigpa |       680    2.586775    .5447141       .857       3.93
         act |       680    22.51029    3.490768         13         32


ii.
. regress atndrte prigpa act

      Source |       SS       df       MS              Number of obs =     680
-------------+------------------------------           F(  2,   677) =  138.65
       Model |  57336.7612     2  28668.3806           Prob > F      =  0.0000
    Residual |  139980.564   677  206.765974           R-squared     =  0.2906
-------------+------------------------------           Adj R-squared =  0.2885
       Total |  197317.325   679   290.59989           Root MSE      =  14.379

------------------------------------------------------------------------------
     atndrte |      Coef.   Std. Err.      t    P>|t|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
      prigpa |   17.26059   1.083103    15.94   0.000     15.13395    19.38724
         act |  -1.716553    .169012   -10.16   0.000    -2.048404   -1.384702
       _cons |    75.7004   3.884108    19.49   0.000     68.07406    83.32675
------------------------------------------------------------------------------

*para escribir el modelo en forma de ecuación

. display " atndrte="_b[_cons] "+"_b[prigpa] "*prigpa" "+ " _b[act] " *act +u"
 atndrte=75.700405+17.260591*prigpa+ -1.7165529 *act +u

iii.
*este coeficiente da sorpresa, se esperaria un signo positive.
. display _b[act]
-1.7165529

iv.
. display _b[_cons]+_b[prigpa]*3.65+_b[act]*20
104.3705

*revisar si hay algunos resultados en la muestra
list prigpa act if prigpa==3.65 | act==20

*no hay prigpa==3.65 pero si hay observaciones con act==20

. display (_b[_cons]+_b[prigpa]*3.1+_b[act]*21)
93.160625

. display (_b[_cons]+_b[prigpa]*2.1+_b[act]*26)
67.31727

. display (_b[_cons]+_b[prigpa]*3.1+_b[act]*21)- (_b[_cons]+_b[prigpa]*2.1+_b[act]*26)
25.843356


*Ejercicio C3.5 wage2.cvs

insheet using "C:\Users\Nerys\Documents\Biblioteca\Econometria, libos ebooks\Solucion a ejercicios de econometria\Base de datos wooldridge\wage2.csv ", comma clear

. regress educ exper tenure
. predict r1, resid

*Comparar modelo
estimates store m5, title(Model 1)
     regress lwage r1

estimates store m6, title(Model 2)
     regress lwage educ exper tenure

. estout m6 m5, cells(b(star fmt(6)) se(par fmt(5))) legend label varlabels(_cons constant) stats(N r2 df_r bic)

----------------------------------------------------
                          Model 2         Model 1  
                             b/se            b/se  
----------------------------------------------------
Residuals                0.074864***               
                        (0.00664)                  
educ                                     0.074864***
                                        (0.00651)  
exper                                    0.015328***
                                        (0.00337)  
tenure                                   0.013375***
                                        (0.00259)  
constant                 6.779004***     5.496696***
                        (0.01293)       (0.11053)  
----------------------------------------------------
N                      935.000000      935.000000  
r2                       0.119923        0.155112  
df_r                   933.000000      931.000000  
bic                    929.512962      905.041179  
----------------------------------------------------
* p<0.05, ** p<0.01, *** p<0.001

*Ejercicio C3.6 wage2.cvs
insheet using "C:\Users\Nerys\Documents\Biblioteca\Econometria, libos ebooks\Solucion a ejercicios de econometria\Base de datos wooldridge\wage2.csv ", comma clear

i.
. regress iq educ
. local sigma1=_b[educ]  ///se guarda el coeficiente deseado, de lo contrario se borra
. display  `sigma1'
3.5338292

ii.
. regress lwage educ
. local beta1=_b[educ]   ///se guarda el coeficiente deseado, de lo contrario se borra
. display  `beta1'
.05983921

iii.
. regress lwage educ iq
. display _b[educ] " y " _b[iq]
.0391199 y .00586313

iv.
. display `beta1' " = " _b[educ]+(`sigma1'*_b[iq])
.05983921 = .05983921

*Ejercicio C3.7 meap93.cvs
insheet using "C:\Users\Nerys\Documents\Biblioteca\Econometria, libos ebooks\Solucion a ejercicios de econometria\Base de datos wooldridge\meap93.csv ", comma clear

i.
. regress math10 lexpend lnchprg
     * math10: porcentaje de asistencia
     * lnchprg: porcentaje de beneficiados programas de ayuda


. regress math10 lexpend lnchprg

      Source |       SS       df       MS              Number of obs =     408
-------------+------------------------------           F(  2,   405) =   44.43
       Model |  8063.82349     2  4031.91175           Prob > F      =  0.0000
    Residual |   36753.357   405  90.7490296           R-squared     =  0.1799
-------------+------------------------------           Adj R-squared =  0.1759
       Total |  44817.1805   407  110.115923           Root MSE      =  9.5262

------------------------------------------------------------------------------
      math10 |      Coef.   Std. Err.      t    P>|t|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
     lexpend |   6.229683   2.972634     2.10   0.037     .3859641     12.0734
     lnchprg |  -.3045853   .0353574    -8.61   0.000    -.3740923   -.2350784
       _cons |  -20.36069   25.07287    -0.81   0.417    -69.64992    28.92853
------------------------------------------------------------------------------

ii.
. display _b[_cons]
25.388662

*No tendria sentido hacer ambas variables cero. Lnchprg si porque habran escuela donde no exista el programa, pero en el caso de expend no tiene lógica considerar que exista alguna escuela donde no se gaste nada.

iii.
*Modelo de actual
estimates store m3, title(Model 2)
     regress math10 lexpend

*modelo del inciso 1
estimates store m4, title(Model 1)
     regress math10 lexpend lnchprg

.estout m4 m3, cells(b(star fmt(1)) se(par fmt(2))) legend label varlabels(_cons constant) stats(N r2 df_r)

----------------------------------------------------
                          Model 1         Model 2  
                             b/se            b/se  
----------------------------------------------------
lexpend                      11.2***          6.2* 
                           (3.17)          (2.97)  
lnchprg                                      -0.3***
                                           (0.04)  
constant                    -69.3**         -20.4  
                          (26.53)         (25.07)  
----------------------------------------------------
N                           408.0           408.0  
r2                            0.0             0.2  
df_r                        406.0           405.0  
----------------------------------------------------
* p<0.05, ** p<0.01, *** p<0.001

iv.
. correlate lexpend lnchprg
(obs=408)

             |  lexpend  lnchprg
-------------+------------------
     lexpend |   1.0000
     lnchprg |  -0.1927   1.0000

v.
*la correlacion entre las variables dependietes (-0.1927) y su efecto parcial de la variable omitida (lnchprg) sobre la independiente math10, determinan la relación del sesgo, aunque no la magnitud, se puede saber que al ser ambos negativo el primer coeficiente tenia un sesgo positivo.

*Ejercicio C3.8 discrim.cvs
insheet using "C:\Users\Nerys\Documents\Biblioteca\Econometria, libos ebooks\Solucion a ejercicios de econometria\Base de datos wooldridge\discrim.csv ", comma clear

i.
. summ prpblck income

    Variable |       Obs        Mean    Std. Dev.       Min        Max
-------------+--------------------------------------------------------
     prpblck |       409    .1134864    .1824165          0    .981658
      income |       409    47053.78    13179.29      15919     136529

* prpblck : proporciones, en terminus decimals

ii.
regress psoda prpblck income

      Source |       SS       df       MS              Number of obs =     401
-------------+------------------------------           F(  2,   398) =   13.66
       Model |  .202552138     2  .101276069           Prob > F      =  0.0000
    Residual |  2.95146501   398  .007415741           R-squared     =  0.0642
-------------+------------------------------           Adj R-squared =  0.0595
       Total |  3.15401715   400  .007885043           Root MSE      =  .08611

------------------------------------------------------------------------------
       psoda |      Coef.   Std. Err.      t    P>|t|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
     prpblck |   .1149881   .0260006     4.42   0.000     .0638724    .1661039
      income |   1.60e-06   3.62e-07     4.43   0.000     8.91e-07    2.31e-06
       _cons |   .9563196    .018992    50.35   0.000     .9189824    .9936568
------------------------------------------------------------------------------

* prpblck= .1149881, indica un aumento del 11.5% en el precio de la bebida

iii.
estimates store m10, title(Model 1)
     regress psoda prpblck income

estimates store m9, title(Model 2)
     regress psoda prpblck

estout m9 m10, cells(b(star) se(par)) legend label varlabels(_cons constant) stats(N r2 df_r)

----------------------------------------------------
                          Model 2         Model 1  
                             b/se            b/se  
----------------------------------------------------
prpblck                  .1149881***      .064926**
                           (0.03)          (0.02)  
income                   1.60e-06***               
                           (0.00)                  
constant                 .9563196***     1.037399***
                           (0.02)          (0.01)  
----------------------------------------------------
N                           401.0           401.0  
r2                         0.0642          0.0181 
df_r                        398.0           399.0  
----------------------------------------------------
* p<0.05, ** p<0.01, *** p<0.001

iv.
. gen lpsoda=ln(psoda)
. gen lincome=ln(income)

estimates store m13, title(Model 1)
     regress psoda prpblck lincome


      Source |       SS       df       MS              Number of obs =     401
-------------+------------------------------           F(  2,   398) =   14.13
       Model |   .20904587     2  .104522935           Prob > F      =  0.0000
    Residual |  2.94497128   398  .007399425           R-squared     =  0.0663
-------------+------------------------------           Adj R-squared =  0.0616
       Total |  3.15401715   400  .007885043           Root MSE      =  .08602

------------------------------------------------------------------------------
       psoda |      Coef.   Std. Err.      t    P>|t|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
     prpblck |   .1258267   .0269747     4.66   0.000      .072796    .1788575
     lincome |   .0788228   .0173892     4.53   0.000     .0446367    .1130089
       _cons |   .1855322   .1879993     0.99   0.324    -.1840636    .5551279
------------------------------------------------------------------------------

. display 2*_b[prpblck]  //a corregir
.25165341

v.
estimates store m12, title(Model 2)
     regress psoda prpblck lincome prppov

. estout m13 m12, cells(b(star fmt(3)) se(par fmt(2))) legend label varlabels(_cons constant) stats(N r2 df_r)

----------------------------------------------------
                          Model 1         Model 2  
                             b/se            b/se  
----------------------------------------------------
prpblck                     0.075*          0.126***
                           (0.03)          (0.03)  
lincome                     0.142***        0.079***
                           (0.03)          (0.02)  
prppov                      0.396**                
                           (0.14)                  
constant                   -0.512           0.186  
                           (0.31)          (0.19)  
----------------------------------------------------
N                         401.000         401.000  
r2                          0.085           0.066  
df_r                      397.000         398.000  
----------------------------------------------------
* p<0.05, ** p<0.01, *** p<0.001

*el efecto se reduce considerablemente

vi.
. correlate  lincome prppov
(obs=409)

             |  lincome   prppov
-------------+------------------
     lincome |   1.0000
      prppov |  -0.8385   1.0000

vii.
*una correlación perfecta podría inducir multicolinialidad pero no necesariamente una fuerte correlación entre las variables incita a eliminar una de las dos.

*Ejercicio C3.9 charity.cvs
insheet using "C:\Users\Nerys\Documents\Biblioteca\Econometria, libos ebooks\Solucion a ejercicios de econometria\Base de datos wooldridge\charity.csv ", comma clear

i.
estimates store m16, title(Model Completo)
     regress  gift mailsyear giftlast propresp

estimates store m18, title(Model Simple)
     regress gift mailsyear

estout m16 m18, cells(b(star fmt(4)) se(par fmt(4))) legend label varlabels(_cons constant) stats(r2 df_r bic)

----------------------------------------------------
                     Model Simple    Model Comp~o       
                             b/se            b/se  
----------------------------------------------------
mailsyear                  2.6495***       2.1663***
                         (0.3431)        (0.3319)  
giftlast                                   0.0059***
                                         (0.0014)  
propresp                                  15.3586***
                                         (0.8745)  
constant                   2.0141**       -4.5515***
                         (0.7395)        (0.8030)  
----------------------------------------------------
r2                         0.0138          0.0834  
df_r                    4266.0000       4264.0000  
bic                    35219.9559      34924.4491  
----------------------------------------------------
* p<0.05, ** p<0.01, *** p<0.001

ii.
*trivial

iii.
*trivial

iv.

estimates store m20, title(Model compuesto2)
     regress  gift mailsyear giftlast propresp avggift

estout m16 m18 m20, cells(b(star fmt(4)) se(par fmt(4))) legend label varlabels(_cons constant) stats(r2 df_r bic)

--------------------------------------------------------------------
                     Model Simple    Model Comp~o    Model comp~2  
                             b/se            b/se            b/se  
--------------------------------------------------------------------
mailsyear                  2.6495***       2.1663***       1.2012***
                         (0.3431)        (0.3319)        (0.3124)  
giftlast                                   0.0059***      -0.2609***
                                         (0.0014)        (0.0108)  
propresp                                  15.3586***      16.2046***
                                         (0.8745)        (0.8175)  
avggift                                                    0.5269***
                                                         (0.0211)  
constant                   2.0141**       -4.5515***      -7.3278***
                         (0.7395)        (0.8030)        (0.7582)  
--------------------------------------------------------------------
r2                         0.0138          0.0834          0.2005  
df_r                    4266.0000       4264.0000       4263.0000  
bic                    35219.9559      34924.4491      34349.0672  
--------------------------------------------------------------------
* p<0.05, ** p<0.01, *** p<0.001

Versión Borrador

Creando variables por grupos en dplyr (group_by + mutate)

  Simulemos una base de hogares, donde se identifica el hogar, el sexo (1 mujer) y provincia y edad para cada miembro.   # Definir la lista ...