MOMENT Statement |
variables can be one or more endogenous variables.
moment specification can have the following four types:
( number list ) specifies that the endogenous variable is raised to the power specified by each number in number list. For example,
moment y = (2 3);
adds the following two equations to be estimated:
eq._moment_1 = y**2 - pred.y**2; eq._moment_2 = y**3 - pred.y**3;
ABS( number list ) specifies that the absolute value of the endogenous variable is raised to the power specified by each number in number list. For example,
moment y = ABS(3);
adds the following equation to be estimated:
eq._moment_2 = abs(y)**3 - abs(pred.y)**3;
LAGnum ( number list ) specifies that the endogenous variable is multiplied by the num th lag of the endogenous variable, and this product is raised to the power specified by each number in number list. For example,
moment y = LAG4(3);
adds the following equation to be estimated:
eq._moment_3 = (y*lag4(y))**3 - (pred.y*lag4(pred.y))**3;
ABS_LAGnum ( number list ) specifies that the endogenous variable is multiplied by the num th lag of the endogenous variable, and the absolute value of this product is raised to the power specified by each number in number list. For example,
moment y = ABS_LAG4(3);
adds the following equation to be estimated:
eq._moment_4 = abs(y*lag4(y))**3 - abs(pred.y*lag4(pred.y))**3;
The following PROC MODEL statements use the MOMENT statement to generate 24 moments and fit these moments using SMM.
proc model data=_tmpdata list; parms a b .5 s 1; instrument _exog_ / intonly; u = rannor( 10091 ); z = rannor( 97631 ); lsigmasq = xlag(sigmasq,exp(a)); lnsigmasq = a + b * log(lsigmasq) + s * u; sigmasq = exp( lnsigmasq ); y = sqrt(sigmasq) * z; moment y = (2 4) abs(1 3) abs_lag1(1 2) abs_lag2(1 2); moment y = abs_lag3(1 2) abs_lag4(1 2) abs_lag5(1 2) abs_lag6(1 2) abs_lag7(1 2) abs_lag8(1 2) abs_lag9(1 2) abs_lag10(1 2); fit y / gmm npreobs=20 ndraw=10; bound s > 0, 1>b>0; run;