OPTIONS CRT; name pdlpanel 'PDL with the PANEL Procedure (FAR constraint imposed)' ; ? ? PDL done manually with the PANEL procedure. ? Complex example with FAR constraint. ? TSP 4.2B (September 1994) ? Updated 6/2003, to use FREQ(PANEL). ? Author: Clint Cummins ? ? Simulate data for testrun. ? SET N = 100; SET T = 10; SET NT = N*T; SMPL 1,NT; FREQ(PANEL,T=T); TREND(PER=T) YEAR; RANDOM(SEED=42490) X E; SELECT YEAR>3; Y = 3 + 8*X + 9*X(-1) + 8*X(-2) + 5*X(-3) + E; ? ? Standard OLS with PDL for comparison with TOTAL from PANEL. ? OLSQ Y C X(3,4,FAR); PANEL Y @PDL1 @PDL2; ?FRML EQ1 Y = A0 + B0*X + B1*X(-1) + B2*X(-2) + B3*X(-3) ; AMAT 4,3,NZVAR,2,A; PRINT A; SET I = 1; DOT 0-3; FRML EB. B. = @PDL1*A.1 + @PDL2*A.2; ? FRML EB0 B0 = C1*A01 + C2*A02; ? ... ETC. ... ? FRML EB3 B3 = C1*A31 + C2*A32; SET J = 1; DOT 1-2; SET IJ = I + (J-1)*4; SET A.. = A(IJ); ? SETS A02 = A(1,2), ETC. SET J = J+1; ENDDOT; SET I = I+1; ENDDOT; ANALYZ(NAMES=@RNMST,COEF=@COEFT,VCOV=@VCOVT) EB0-EB3; ? TOTAL/OLS ANALYZ(NAMES=@RNMSW,COEF=@COEFW,VCOV=@VCOVW) EB0-EB3; ? WITHIN ? ? ========================================================================== PROC AMAT P,N,NZVAR,JZERO,A; ? ? THIS MAKES THE LAGRANGIAN INTERPOLATION POLYNOMIALS USING COOPER'S FORMULA. ? CODED DIRECTLY FROM TSP SUBROUTINE AMAT. ? P = NUMBER OF LAGS ? N = DEGREE OF POLYNOMIAL ? NZVAR = N - (NUMBER OF ZERO RESTRICTIONS) ? JZERO = 1 BOTH NEAR AND FAR RESTRICTIONS ? 2 FAR ONLY ? 3 NEAR ONLY ? 4 NO RESTRICTIONS ? LOCAL TAUJ,TAU0,TAUN,SPACNG,J,J1,DENOM,I,TAU,PHINUM,TJ; SET NZVAR = N - 2*(JZERO=1) - 1*(JZERO=2 .OR. JZERO.EQ.3); MFORM(NROW=P,NCOL=NZVAR) A=0; MFORM(NROW=N,NCOL=1) TAUJ=0; IF (N.GT.1); THEN; DO; SET TAU0 = 0; IF (JZERO.EQ.1 .OR. JZERO.EQ.3); THEN; SET TAU0 = -1; SET TAUN = P-1; IF (JZERO.LE.2); THEN; SET TAUN = P; SET SPACNG = (TAUN-TAU0)/(N-1); SET TAUJ(1) = TAU0; DO J=2,N; SET J1 = J-1; SET TAUJ(J) = TAUJ(J1) + SPACNG; ENDDO; ENDDO; DO J=1,NZVAR; SET JJ=J; IF (JZERO.EQ.1 .OR. JZERO.EQ.3); THEN; SET JJ = J+1; SET DENOM=1; DO I=1,N; IF (I.NE.JJ); THEN; SET DENOM = DENOM*(TAUJ(JJ)-TAUJ(I)); ENDDO; DO TAU=1,P; SET PHINUM=1; DO I=1,N; IF (I.NE.JJ); THEN; SET PHINUM = PHINUM*(TAU-1-TAUJ(I)); ENDDO; SET TJ = TAU + (J-1)*P; ? FOR A(TAU,J) SUBSCRIPT SET A(TJ) = PHINUM/DENOM; ENDDO; ENDDO; ENDPROC AMAT; ? ========================================================================== END;