PROC IMPORT OUT=work.one DATAFILE= "C:\DATA\SAS\table12.3.csv" DBMS=CSV REPLACE; /* */ GETNAMES=YES; DATAROW=2; run; data two; set one; int=1; lq = log(q); ll = log(l); lk = log(k); l2=.5*ll*ll; k2=.5*lk*lk; llkk=ll*lk; x4=-.5*log(k/l)*log(k/l); proc print; run; proc reg; model lq=ll lk l2 k2 llkk; model lq=ll lk x4; run; proc model; parms b1-b4; lq = b1 + b2*lk + b3*ll + b4*x4; fit lq; test exp(b1)=0; test b2/(b2+b3)=0; run; proc model; parms g d v r; lq = log(g) - (v/r)*log(d*(1/k**(r))+(1-d)*(1/l**(r))); fit lq /method=gauss converge=.0000001; run; proc iml; use two; read all var{lq} into ly; read all var{int lk ll x4} into x; read all var{k} into k; read all var{l} into l; read all var{lq} into y; b=inv(x`*x)*x`*ly; sig2=(ly-x*b)`*(ly-x*b)/(nrow(x)-ncol(x)); cov=sig2*inv(x`*x); g=exp(b[1]); v=b[2]+b[3]; d=b[2]/v; r=b[4]*v/(b[2]*b[3]); print g d v r; c=j(4,4,0); c[1,1]=exp(b[1]); c[3,2]=1; c[3,3]=1; c[2,2]=b[3]/v**2; c[2,3]=-b[2]/v**2; c[4,2]=-b[4]/(b[2]*b[2]); c[4,3]=-b[4]/(b[3]*b[3]); c[4,4]=v/(b[2]*b[3]); print c; cov2=c*cov*c`; print cov2; se=sqrt(vecdiag(cov2)); theta=g//v//d//r; print theta se; start nlls(theta) global(y,k,l); g=theta[1]; v=theta[2]; d=theta[3]; r=theta[4]; f = log(g) - (v/r)*log((d/(k##r)) + (1-d)/(l##r)); ff = (y-f)`*(y-f); return(ff); finish nlls; call nlpnms(rc,xres,"nlls",theta); run;