* ***AUTEUR : Isabelle CADORET-DAVID*** * CALENDAR 1920 ALLOCATE 1941:1 OPEN DATA kleing.wks DATA(FORMAT=wks,ORG=obs) TABLE SET wagebill = privwage + govtwage SET capital = klagged+invst SET trend = year-1920 DISP '****************************************************************' DISP '****************************************************************' DISP 'estimation avec la méthode DMC' DISP '****************************************************************' DISP '****************************************************************' INST constant trend govtwage taxes govtexp $ capital{1} prod{1} profit{1} LINREG(INST) cons / resc # constant profit{0 1} wagebill COM betacons=%beta LINREG(INST) invst / resi # constant profit{0 1} capital{1} COM betainvst=%beta LINREG(INST) privwage / resw # constant prod{0 1} trend COM betawage=%beta DISP '****************************************************************' DISP '****************************************************************' DISP 'Test des contraintes de suridentification' DISP '****************************************************************' DISP '****************************************************************' LINREG(INST,NOPRINT) cons / rescons # constant profit{0 1} wagebill LINREG(NOPRINT) rescons # CONSTANT trend govtwage taxes govtexp capital{1} prod{1} profit{1} DISP 'LM equation de consommation' LM=%TRSQ CDF CHISQ LM 3 LINREG(INST,NOPRINT) invst / resinvs # constant profit{0 1} capital{1} LINREG(NOPRINT) resinvs # CONSTANT trend govtwage taxes govtexp capital{1} prod{1} profit{1} DISP 'LM equation d"investissement' LM=%TRSQ CDF CHISQ LM 4 LINREG(INST,NOPRINT) privwage / reswage # constant prod{0 1} trend LINREG(NOPRINT) reswage # CONSTANT trend govtwage taxes govtexp capital{1} prod{1} profit{1} DISP 'LM equation de salaire' LM=%TRSQ CDF CHISQ LM 4 DISP '****************************************************************' DISP '****************************************************************' DISP 'Test d"exogénéité' DISP '****************************************************************' DISP '****************************************************************' INST constant trend govtwage taxes govtexp capital{1} profit{1} LINREG(INST,noprint) privwage # constant prod{0 1} trend COMPUTE [symmetric] xxinef=%seesq*%xx COMPUTE [vector] betainef=%beta INSTRUMENT(add) prod{1} LINREG(INST,noprint) privwage # constant prod{0 1} trend COMPUTE [symmetric] xxdmc =%seesq*%xx COMPUTE [vector] betadmc =%beta COMPUTE vbeta = betadmc - betainef COMPUTE ivar = inv(xxinef-xxdmc) COMPUTE wald = %qform(ivar,vbeta) CDF CHISQ wald 1 DISP '****************************************************************' DISP '****************************************************************' DISP 'analyse de la stabilité' DISP 'calcul des multiplicateurs de court terme et de long terme' DISP 'représentation des multiplicateurs dynamiques' DISP '****************************************************************' DISP '****************************************************************' DEC RECTANGULAR[real] MATY(6,6) DEC RECTANGULAR[real] MATX(6,5) DEC RECTANGULAR[real] MATY1(6,6) DEC RECTANGULAR[real] MATP(6,5) DEC RECTANGULAR[real] MATD(6,6) DEC RECTANGULAR[real] IMATD(6,6) DEC RECTANGULAR[real] MATL(6,5) COMPUTE MATY = ||1, 0, -betacons(4), 0, -betacons(2), 0 | $ 0, 1, 0, 0, -betainvst(2), 0 | $ 0, 0, 1, -betawage(2), 0, 0 | $ -1, -1, 0, 1, 0, 0 | $ 0, 0, 1, -1, 1, 0| $ 0, -1, 0, 0, 0, 1 || *DISP MATY COMPUTE MATX = ||betacons(1), betacons(4), 0, 0, 0 | $ betainvst(1), 0, 0, 0, 0 | $ betawage(1), 0, 0, 0, betawage(4) | $ 0, 0, 1, 0, 0 | $ 0, 0, 0, -1, 0 | $ 0, 0, 0, 0, 0 || *DISP MATX COMPUTE MATY1 = ||0, 0, 0, 0, betacons(3), 0 | $ 0, 0, 0, 0, betainvst(3), betainvst(4) | $ 0, 0, 0, betawage(3), 0, 0 | $ 0, 0, 0, 0, 0, 0 | $ 0, 0, 0, 0, 0, 0 | $ 0, 0, 0, 0, 0, 1 || *DISP MATY1 DISP 'analyse de la stabilité' COMPUTE MATD = INV(MATY)*MATY1 EIGEN(cvalues=CEIGVAL) MATD EIGVAL EIGVEC DISP 'VALEURS PROPRES REELLES ET COMPLEXES' WRITE EIGVAL WRITE CEIGVAL DISP 'multiplicateur de court terme' COMPUTE MATP = INV(MATY)*MATX DISP ' variables CONS INVST PRIVEWAGE PROD PROFIT CAPITAL de : ' DISP ' govtwage' tr(%xcol(MATP,2)) DISP ' govtexp ' tr(%xcol(MATP,3)) DISP ' taxes ' tr(%xcol(MATP,4)) DISP 'multiplicateur de long terme' COMPUTE IMATD = %identity(6) - MATD COMPUTE MATL = INV(IMATD)*MATP DISP MATL DISP ' variables CONS INVST PRIVEWAGE PROD PROFIT CAPITAL de : ' DISP ' govtwage' tr(%xcol(MATL,2)) DISP ' govtexp ' tr(%xcol(MATL,3)) DISP ' taxes ' tr(%xcol(MATL,4)) DISP 'représentation des multiplicateurs dynamique' DEC RECTANGULAR[real] MATD1(6,6) DEC RECTANGULAR[real] MATDD(6,5) COMPUTE MATD1 = %identity(6) DO i=1,30 COMPUTE MATD1 = (MATD1*MATD) COMPUTE MATDD = MATD1*MATP SET prodexp i i = MATDD(4,3) ; *accroissement de govtexp de une unité* SET prodtaxes i i = MATDD(4,4); *accroissement de taxes de une unité* SET prodbud i i = MATDD(4,3)+MATDD(4,4) END DO i GRAPH(HEADER='Effet d"un accroissement de une unité de govtexp',KEY=BELOW,nodates) 3 # prodexp 1 30 # prodtaxes 1 30 # prodbud 1 30 DISP '****************************************************************' DISP '****************************************************************' DISP 'Calcul de l"équilibre pour une valeur des exogènes correspondant' DISP ' à leur valeur en 1941 ' DISP '****************************************************************' DISP '****************************************************************' ***calcul de la valeur initiale des variables endogènes** COMPUTE consi = cons(1941:1) COMPUTE invsti = invst(1941:1) COMPUTE privwagei = privwage(1941:1) COMPUTE prodi = prod(1941:1) COMPUTE profiti = profit(1941:1) COMPUTE capitali = capital(1941:1) ***calcul de l'équilibre*** COMPUTE consequi = matl(1,1)+ matl(1,2)*govtwage(1941:1)+ matl(1,3)*govtexp(1941:1)+ matl(1,4)*taxes(1941:1)+ matl(1,5)*trend(1941:1) COMPUTE invstequi = matl(2,1) + matl(2,2)*govtwage(1941:1)+ matl(2,3)*govtexp(1941:1)+ matl(2,4)*taxes(1941:1)+ matl(2,5)*trend(1941:1) COMPUTE privwagequi = matl(3,1) + matl(3,2)*govtwage(1941:1)+ matl(3,3)*govtexp(1941:1)+ matl(3,4)*taxes(1941:1)+ matl(3,5)*trend(1941:1) COMPUTE prodequi = matl(4,1) + matl(4,2)*govtwage(1941:1)+ matl(4,3)*govtexp(1941:1)+ matl(4,4)*taxes(1941:1)+ matl(4,5)*trend(1941:1) COMPUTE profitequi = matl(5,1) + matl(5,2)*govtwage(1941:1)+ matl(5,3)*govtexp(1941:1)+ matl(5,4)*taxes(1941:1)+ matl(5,5)*trend(1941:1) COMPUTE capitalequi = matl(6,1) + matl(6,2)*govtwage(1941:1)+ matl(6,3)*govtexp(1941:1)+ matl(6,4)*taxes(1941:1)+ matl(6,5)*trend(1941:1) DISP 'niveau initial de cons' consi 'niveau d"équilibre' consequi DISP 'niveau initial de invst' invsti 'niveau d"équilibre' invstequi DISP 'niveau initial de privwage' privwagei 'niveau d"équilibre' privwagequi DISP 'niveau initial de prod' prodi 'niveau d"équilibre' prodequi DISP 'niveau initial de profit' profiti 'niveau d"équilibre' profitequi DISP 'niveau initial de capital' capitali 'niveau d"équilibre' capitalequi COMPUTE econs = consi - consequi COMPUTE einvst = invsti - invstequi COMPUTE eprivwage = privwagei - privwagequi COMPUTE eprod = prodi - prodequi COMPUTE eprofit = profiti - profitequi COMPUTE ecapital = capitali - capitalequi DEC RECTANGULAR[real] MATD1(6,6) COMPUTE MATD1 = %identity(6) SET econst 1 1 = econs SET ecapitalt 1 1 = ecapital DO i=2,20 COMPUTE MATD1 = (MATD1*MATD) SET econst i i = MATD1(1,1)*econs + MATD1(1,2)*einvst+ MATD1(1,3)*eprivwage+ MATD1(1,4)*eprod + $ MATD1(1,5)*eprofit + MATD1(1,6)*ecapital SET ecapitalt i i = MATD1(6,1)*econs + MATD1(6,2)*einvst+ MATD1(6,3)*eprivwage+ MATD1(6,4)*eprod + $ MATD1(6,5)*eprofit + MATD1(6,6)*ecapital END DO i ***ajustement vers l'équilibre*** GRAPH(HEADER='Ecart des variables par rapport à leur valeur d"équilibre',KEY=BELOW,nodates) 2 # econst 1 20 # ecapitalt 1 20 DISP '****************************************************************' DISP '****************************************************************' DISP 'intervalle de confiance des valeurs d"équilibre (bootstrap) ' DISP '****************************************************************' DISP '****************************************************************' SMPL SET consa = cons - resc SET invsta = invst - resi SET privwagea = privwage - resw COMPUTE [INTEGER] ndraws = 300 SET consequib 1 ndraws = 0.0 SET invstequib 1 ndraws = 0.0 SET privwagequib 1 ndraws = 0.0 SET prodequib 1 ndraws = 0.0 SET profitequib 1 ndraws = 0.0 SET capitalequib 1 ndraws = 0.0 DEC RECTANGULAR[real] MATY(6,6) DEC RECTANGULAR[real] MATX(6,5) DEC RECTANGULAR[real] MATY1(6,6) DEC RECTANGULAR[real] MATP(6,5) DEC RECTANGULAR[real] MATD(6,6) DEC RECTANGULAR[real] IMATD(6,6) DEC RECTANGULAR[real] MATL(6,5) DO draws = 1,ndraws BOOT ENTRIES SET resamplecons = resc(entries(t)) SET resampleinvst = resi(entries(t)) SET resamplewage = resw(entries(t)) SET cons1 = consa + resamplecons SET invst1 = invsta + resampleinvst SET privwage1 = privwagea + resamplewage INST constant trend govtwage taxes govtexp $ capital{1} prod{1} profit{1} LINREG(INST,noprint) cons1 # constant profit{0 1} wagebill COM betacons=%beta LINREG(INST,noprint) invst1 # constant profit{0 1} capital{1} COM betainvst=%beta LINREG(INST,noprint) privwage1 # constant prod{0 1} trend COM betawage=%beta COMPUTE MATY = ||1, 0, -betacons(4), 0, -betacons(2), 0 | $ 0, 1, 0, 0, -betainvst(2), 0 | $ 0, 0, 1, -betawage(2), 0, 0 | $ -1, -1, 0, 1, 0, 0 | $ 0, 0, 1, -1, 1, 0| $ 0, -1, 0, 0, 0, 1 || *DISP MATY COMPUTE MATX = ||betacons(1), betacons(4), 0, 0, 0 | $ betainvst(1), 0, 0, 0, 0 | $ betawage(1), 0, 0, 0, betawage(4) | $ 0, 0, 1, 0, 0 | $ 0, 0, 0, -1, 0 | $ 0, 0, 0, 0, 0 || *DISP MATX COMPUTE MATY1 = ||0 , 0, 0, 0, betacons(3), 0 | $ 0, 0, 0, 0, betainvst(3), betainvst(4) | $ 0, 0, 0, betawage(3), 0, 0 | $ 0, 0, 0, 0, 0, 0 | $ 0, 0, 0, 0, 0, 0 | $ 0, 0, 0, 0, 0, 1 || *DISP MATY1 *DISP MATY1 COMPUTE MATD = INV(MATY)*MATY1 COMPUTE IMATD = %identity(6) - MATD COMPUTE MATL = INV(IMATD)*MATP ***calcul de l'équilibre*** COMPUTE consequib(draws) = matl(1,1)+ matl(1,2)*govtwage(1941:1)+ matl(1,3)*govtexp(1941:1)+ matl(1,4)*taxes(1941:1)+ matl(1,5)*trend(1941:1) COMPUTE invstequib(draws) = matl(2,1) + matl(2,2)*govtwage(1941:1)+ matl(2,3)*govtexp(1941:1)+ matl(2,4)*taxes(1941:1)+ matl(2,5)*trend(1941:1) COMPUTE privwagequib(draws) = matl(3,1) + matl(3,2)*govtwage(1941:1)+ matl(3,3)*govtexp(1941:1)+ matl(3,4)*taxes(1941:1)+ matl(3,5)*trend(1941:1) COMPUTE prodequib(draws) = matl(4,1) + matl(4,2)*govtwage(1941:1)+ matl(4,3)*govtexp(1941:1)+ matl(4,4)*taxes(1941:1)+ matl(4,5)*trend(1941:1) COMPUTE profitequib(draws) = matl(5,1) + matl(5,2)*govtwage(1941:1)+ matl(5,3)*govtexp(1941:1)+ matl(5,4)*taxes(1941:1)+ matl(5,5)*trend(1941:1) COMPUTE capitalequib(draws) = matl(6,1) + matl(6,2)*govtwage(1941:1)+ matl(6,3)*govtexp(1941:1)+ matl(6,4)*taxes(1941:1)+ matl(6,5)*trend(1941:1) END DO draws STATISTICS(FRACTILES) consequib 1 ndraws STATISTICS(FRACTILES) invstequib 1 ndraws STATISTICS(FRACTILES) privwagequib 1 ndraws STATISTICS(FRACTILES) prodequib 1 ndraws STATISTICS(FRACTILES) profitequib 1 ndraws STATISTICS(FRACTILES) capitalequib 1 ndraws DISP '****************************************************************' DISP '****************************************************************' DISP 'estimation avec la méthode GMM' DISP '****************************************************************' DISP '****************************************************************' LINREG(INST,noprint) cons / rescons # constant profit{0 1} wagebill MCOV / rescons # CONSTANT trend govtwage taxes govtexp capital{1} prod{1} profit{1} COMPUTE %cmom = inv(%cmom) LINREG(INST,WMATRIX=%cmom,robusterrors) cons # constant profit{0 1} wagebill LINREG(INST,noprint) invst / resinvst # constant profit{0 1} capital{1} MCOV / resinvst # CONSTANT trend govtwage taxes govtexp capital{1} prod{1} profit{1} COMPUTE %cmom = inv(%cmom) LINREG(INST,WMATRIX=%cmom,robusterrors) invst # constant profit{0 1} capital{1} LINREG(INST,NOPRINT) privwage / reswage # constant prod{0 1} trend MCOV / reswage # CONSTANT trend govtwage taxes govtexp capital{1} prod{1} profit{1} COMPUTE %cmom = inv(%cmom) LINREG(INST,WMATRIX=%cmom,robusterrors) privwage # constant prod{0 1} trend