Hello,

I'm trying to understand how GMM works and noticed that GMM produces the same estimates as OLS when there's no instrument as it should. For instance,

clear

set obs 10000


generate y1 = runiform()
generate y2 = runiform()
generate y3 = runiform()

generate x1 = runiform()
generate x2 = runiform()
generate x3 = runiform()

generate z1 = runiform()
generate z2 = runiform()
generate z3 = runiform()


reg y1 x1 z1
gmm (y1-{b1}*x1 - {b2}*z1 - {a}), inst (x1 z1)

The two models above produce the exact same results.

However when I estimate a system of equations using SUR and GMM, the two models produce similar, but different results.

* different
sureg (y1 x1) (y2 x2)
gmm (y1-{beta1}*x1- {a1}) (y2-{beta2}*x2 - {a2}), inst (x1 x2) winitial(unadjusted, independent) quickderivatives

The results are also different when I use instruments and run 3sls and GMM,
reg3 (y1 x1) (y2 x2), exog(z1 z2) endog(x1 x2) 3sls
gmm (y1-{beta1}*x1- {a1}) (y2-{beta2}*x2 - {a2}), inst (z1 z2) winitial(unadjusted, independent) quickderivatives

Although from this post (https://www.statalist.org/forums/for...-fit-the-model), it seems I should get the exact same estimates.

Can anyone see what's wrong? I'd appreciate any advice!

Best,
Ara