On Wed, 5 Aug 2009, Allin Cottrell wrote:
> If the original model was estimated via OLS, the restricted one
> could be estimated via NLS.
An alternative which does away with NLS and the associated potential
convergence problems is a Wald-type test, that is, a simple application
of the delta method (see section 5.9 of the manual). Example:
<script>
function nlWald(matrix coeff, matrix vcv, string funcstring)
lc = coeff
string s = funcstring~"(&lc)"
matrix bread = @s
df = cols(bread)
matrix J = fdjac(lc, @s)
matrix ham = invpd(qform(J, vcv))
scalar WT = qform(bread, ham)
printf "Nonlinear Wald Test: %12.6f (%d df, p-value = %g)\n", \
WT, df, pvalue(x, df, WT)
return scalar WT
end function
# ----------------------------------------------
# constraint function
function somestupidfunction(matrix *coeff)
scalar b1 = coeff[1]
scalar b2 = coeff[2]
matrix ret = (sqrt(b1)-b2*50) ~ (b1*b2 - 7)
return matrix ret
end function
# ----------------------------------------------
# main script
open data3-1.gdt
ols price const sqft
nlWald($coeff, $vcv, "somestupidfunction")
</script>
Basically, all you have to do is write a constraint function returning a
_row_ vector, which must be 0 under H0 and nonzero under H1. Then, you
feed it into the nlWald function and you're all set.
The example above tests the (silly) joint hypothesis
\sqrt{\beta_1} = 50 \beta_2
and
\beta_1 \beta_2 = 7
Riccardo (Jack) Lucchetti
Dipartimento di Economia
Università Politecnica delle Marche
r.lucchetti(a)univpm.it
http://www.econ.univpm.it/lucchetti