@ NLS ESTIMATION USING GAUSS NEWTON REGRESSION @ new; cls; rndseed(1234); // DGP begins n=100; x=rndu(n,1); eps=rndn(n,1); beta={2 2 2}; y=beta[1]+beta[2]*x^beta[3]+eps; // DGP ENDS // ESTIMATION //Starting values beta0={3, 3, 3}; tol=1; iter=1; do until tol<=0.0001; y0=y-beta0[1]-beta0[2]*x^beta0[3]; //First derivatives xd1 = ones(n,1); xd2 = x^beta[3]; xd3 = (beta0[2]*x^beta0[3]).*ln(x); xd=xd1~xd2~xd3; b=inv(xd'xd)*xd'y0; tol=b'b; beta0=b+beta0; iter=iter+1; endo; bnls=beta0; // VarCov Matrix vbeta=vcov(bnls); //Standard Errors; sterr=sqrt(diag(vbeta)); //RESULTS format /rds 10,3; "Press a Key to see a Summary Table"; wait; cls; "Results from GNR Estimation"; "-------------------------"; "Coefficients Std Err";; bnls~sterr; "-------------------------"; //PROCEDURES //Var Cov Matrix of the NLS estimator proc vcov(bnls); local sig2hat,xd,xd1,xd2,xd3,e,k; k=rows(bnls); e=y-bnls[1]-bnls[2]*x^bnls[3]; sig2hat=e'e/(n-k); //First derivatives xd1 = ones(n,1); xd2 = x^bnls[3]; xd3 = (bnls[2]*x^bnls[3]).*ln(x); xd=xd1~xd2~xd3; retp(sig2hat*inv(xd'xd)); endp;