First of all I wish a happy new year 2017.
My problem is the following:
Given the simultaneous system of equations withe the endegenous variables
p and e, the exegenous variable A and the error terms u and v.
* p = 1.5 + 0.5e + u
* e = 2.5 + 0.5p -0.4A + v
Say that we have β1 = 1.5, β2= 0.5 in (1) and α1 = 2.5, α2 = 0.5, α3 =
-0.4
I want to estimate the parameter of e in the first equation p = 1.5 +
0.5e + u performing a Monte Carlo simulation.
First I want to show that the OLS-estimation produces a bias in the
estimation of e (see the script below).
For u,v and A I create the following variables:
series u = normal(0,1)
series v = normal(0,1)
series A = normal(0,1)
Then I take the reduced form equations from the structurel form (1)/(2)
to produce the endegenous variables p and e:
series p = (2.75 - 0.2*A + 0.5*v + u)/0.75
series e = (3.25 - 0.4*A + 0.5*u + v)/0.75
The formulas are the result oft he following general (reduced) formulas:
p = (β1 + α1* β2 + α3* β2*A + u + β2*v) / (1 – α2* β2)
e = (α1 + α2* β1 + α3*A + v + α2*u) / (1 – α2* β2)
Taking 500 times a sample of size N=50 and executing the OLS-regression
p against e in (1) I collect the 500 estimated parameters in the variables
koeff_beta1 and koeff_beta2. The frequency distribution for the
coefficients of variable "e" looks very good! The mean value is „0.76283“
and „0.26283“ is nearly the expected bias of β2= 0.5 ( with an
appropriate mathematical formula I calculated the bias and he gives me the
value of 0.266 !!!). So all seems good.
But when I perform an TSLS or IV-estimation (see below) of (1), using the
external variable A as an instrument for e (what is allowed), I get for
the estimated α2 the mean value „0.16681“ (instead of expected roughly
0.5). The test-statistic of chi-quadrat is 92024.584, that means no
normality in the frequency distribution of α2 !!!! I got this (bad)
result, when I changed the command
„ols p const e“ to
„tsls p const e ; const A“
or alternatively:
ols e const A
series e_dach = $yhat
ols p const e_dach
scalar koeff_beta2[t] = $coeff(e_dach) -------------------
gives the same result
Is something wrong with the tsls – command or am I wrong using A as an
instrument for e ?
Here is my script:
nulldata 500
series koeff_beta1 = 0
series koeff_beta2 = 0
set seed 16577899
smpl 1 50
#series A = 2
loop for (t=1; t<=500; t++) --quiet
series u = normal(0,1)
series v = normal(0,1)
series A = normal(0,1)
series p = (2.75 - 0.2*A + 0.5*v + u)/0.75
series e = (3.25 - 0.4*A + 0.5*u + v)/0.75
#tsls p const e ; const A alternative tsls
!!!!!!!!! goes wrong
ols p const e
koeff_beta1[t] = $coeff(const)
koeff_beta2[t] = $coeff(e)
endloop
smpl full
Greetings
Jürgen Malitte