PROGRAM DPVAX07 C*****GENERATE TEST DATA FILE FOR RETROSPECTIVE ANALYSIS BY RPVAX07 C.....FIRST 4 FIELDS OF FILE, WHICH WILL BE READ BY RPVAX07, ARE C (1) LOG CENSUS POINT ESTIMATE (NOT INTEGERIZED) C CODED AS -99 FOR NO CENSUS THAT TIME STEP C (2) LOG SPACE ERROR STD DEV OF POINT ESTIMATE C CODED AS -99 FOR NO CENSUS THAT TIME STEP C (3) MODE OF NORMAL PRIOR ON POPULATION SIZE IN C THAT TIME STEP (ORIGINAL SPACE) C (4) STD DEV OF NORMAL PRIOR ON POPULATION SIZE IN C THAT TIME STEP (ORIGINAL SPACE), IGNORING THE TRUNCATION AT 0 C LAST FIELDS, WHICH MAY BE USED FOR DIAGNOSTICS, BUT ARE NOT READ C BY RPVAX07 ARE C (5) TRUE POPULATION SIZE C (6) ORIGINAL SPACE CENSUS POINT ESTIMATE C (7) ORIGINAL SPACE CENSUS ERROR STANDARD DEVIATION C.....NOTATION C.....DESIGN C NC NUMBER OF CENSUSES C.....DYNAMICS C ER MEAN EXPONENTIAL GROWTH RATE C SR STD DEV OF NORMAL DISTRIBUTION OF EXPONENTIAL GROWTH RATE C.....STATE C EN POPULATION SIZE (USED FOR ROUNDING TO INTEGER) C AN LOG POPULATION SIZE C.....OBSERVATIONS C X CENSUS POINT ESTIMATE LOGNORMAL DISTRIBUTED AND UNBIASED C ABOUT AN IN THE LOG SPACE (ONLY FOR DIAGNOSTIC) C AX LOG OF CENSUS POINT ESTIMATE UNBIASED IN THE LOG SPACE C AXS LOG SPACE ERROR STD OF THE (LOG) POINT ESTIMATE C XS ORIGINAL SPACE ERROR STD (ONLY FOR DIAGNOSTIC) C.....PRIOR (WRITTEN TO DAT FILE, BUT NOT USED TO SIMULATE CENSUS) C ENB MEAN OF NORMAL PRIOR DISTRIBUTION OF POPULATION SIZE, C IGNORING THE TRUNCATION AT 0 C ENS STD OF NORMAL PRIOR DISTRIBUTION OF POPULATION SIZE, C IGNORING THE TRUNCATION AT 0 C..... C.....PROCESS MODEL (STATE EQUATION) C AN(T+1)~N([AN(T)+ER],[SR*SR]) C IN OTHER WORDS C AN(T+1)=AN(T)+ER+DLT WHERE DLT~N(0,SR**2) C.....OBSERVATION MODEL C AX(T)~N(AN(T),(AXS(T)**2)) C IN OTHER WORDS C AX=AN+EPS WHERE EPS~N(0,AXS**2) C CONVERTING TO MOMENTS IN THE ORIGINAL SPACE OF THE LOGNORMAL C WHERE X= EXP(AX) C E(X)=EXP(AN+(AXS**2)/2) C XS**2=EXP(2*AN+AXS**2)*(EXP(AXS**2)-1) C.....NOTE ON TOTAL VARIANCE OF APPARENT GROWTH IN LOG SPACE, C BASED ONLY CENSUSES WITHOUT TAKING OBSERVATION ERROR INTO ACCOUNT: C DEFINE CENSUS BASED VARIANCE AS C VAR(AX(T+1)-AX(T)) C AX(T+1)-AX(T)=AN(T+1)+EPS(T+1)-AN(T)-EPS(T) C =AN(T)+ER+DLT(T+1)+EPS(T+1)-AN(T)-EPS(T) C =ER+DLT(T+1)+EPS(T+1)-EPS(T) C VAR(AX(T+1)-AX(T)) = SR**2 + 2* AXS**2 C IN OTHER WORDS IGNORING OBSERVATION ERROR CONTAMINATES THE C ESTIMATE OF SR**2 WITH AN ADDITIVE TWICE AXS**2 C***** C VERSION OF APR 27, 2011 C***** DIMENSION ISD(11) C.....SPECIFICATIONS C N1 INITIAL POPULATION SIZE C NC DESIGN (TIME HORIZON) C ER MEAN EXPONENTIAL GROWTH RATE C SR STD DEV OF NORMAL DISTRIBUTION OF EXPONENTIAL GROWTH RATE C ENB MEAN OF NORMAL PRIOR DISTRIBUTION OF POPULATION SIZE C (PLAYS NO ROLE IN SIMULATION, BUT IS WRITTEN TO OUTPUT FILE) C ENS STD OF NORMAL PRIOR DISTRIBUTION OF POPULATION SIZE C (PLAYS NO ROLE IN SIMULATION, BUT IS WRITTEN TO OUTPUT FILE) C AXSL LOW LIMIT OF UNIFORM SAMPLED EACH TIME STEP FOR THE C LOG SPACE OBSERVATION ERROR STD OF THE (LOG) POINT ESTIMATE C AXSH HIGH LIMIT OF UNIFORM SAMPLED EACH TIME STEP FOR THE C LOG SPACE OBSERVATION ERROR STD OF THE (LOG) POINT ESTIMATE C ISEED SEED FOR RANDOM NUMBER GENERATOR C..... N1=100 NC=25 ER=0.02 SR=0.015 ENB=100.0 ENS=60.0 AXSL=0.005 AXSH=0.01 ISEED=97 C.....SET DEVICES AND OUTPUT FILE LUNS=6 LUNF=7 OPEN (LUNF,FILE='DPVAX07.DAT') C.....INITIALIZE RANDOM NUMBER GENERATOR ISD(1)=ISEED CALL NRINT(ISD) C.....INITIALIZE CUMULATORS FOR REALIZED MOMENTS OF R RBAR=0.0 RVAR=0.0 C.....INITIALIZE POPULATION N=N1 C.....CENSUS FOR INITIAL POPULATION EN=FLOAT(N) AN=ALOG(EN) C... .OBSERVATION ERROR STD FOR THIS CENSUS CALL UNFRM(U,ISD) AXS=AXSL+U*(AXSH-AXSL) C.....SIMULATE CENSUS CALL NRMUL(AX,AN,AXS,ISD) C.....CALCULATE ORIGINAL SPACE CENSUS X (ONLY FOR DIAGNOSTIC) X=EXP(AX) C.....CALCULATE ORIGINAL SPACE ERROR STD USING TRUE AN AND TRUE AXS C (ONLY FOR DIAGNOSTIC) C..... XS2=EXP(2.0*AN+AXS**2)*(EXP(AXS**2)-1.0) XS=SQRT(XS2) C.....WRITE RECORD WRITE (LUNS,9010) AX,AXS,ENB,ENS,N,X,XS WRITE (LUNF,9010) AX,AXS,ENB,ENS,N,X,XS 9010 FORMAT (1X,4E11.5,1X,I5,2E11.5) C.....LOOP THROUGH TIME STEPS FOR REMAINDER OF TRAJECTORY DO 1030 I=2,NC C.....ADVANCE POPULATION IN FLOATING POINT ANOLD=AN ANR=AN+ER CALL NRMUL(AN,ANR,SR,ISD) C.....ROUND BACK TO INTEGER EN=EXP(AN) N=IFIX(EN+0.5) EN=FLOAT(N) AN=ALOG(EN) C.....REALIZED MOMENTS OF THE INTEGERIZED POPULATION DYNAMICS (FOR CHECK) R=AN-ANOLD RBAR=RBAR+R RVAR=RVAR+R*R C.....TRAP EXTINCTION IF (N) 1010,1010,1020 1010 WRITE (LUNS,9020) WRITE (LUNF,9020) 9020 FORMAT (1X,'EXTINCTION ENCOUNTERED, ABORT') GO TO 9999 C.....OBSERVATION ERROR STD FOR THIS TIME STEP 1020 CALL UNFRM(U,ISD) AXS=AXSL+U*(AXSH-AXSL) C.....SIMULATE CENSUS CALL NRMUL(AX,AN,AXS,ISD) C.....CALCULATE ORIGINAL SPACE CENSUS X (ONLY FOR DIAGNOSTIC) X=EXP(AX) C.....CALCULATE ORIGINAL SPACE ERROR STD USING TRUE AN AND TRUE AXS C (ONLY FOR DIAGNOSTIC) C..... XS2=EXP(2.0*AN+AXS**2)*(EXP(AXS**2)-1.0) XS=SQRT(XS2) C.....WRITE RECORD WRITE (LUNS,9010) AX,AXS,ENB,ENS,N,X,XS WRITE (LUNF,9010) AX,AXS,ENB,ENS,N,X,XS C.....TIME STEP COMPLETE 1030 CONTINUE C.....NORMALIZE REALIZED MOMENTS OF DYNAMICS IN THE SAMPLE FNM=FLOAT(NC-1) RBAR=RBAR/FNM RVAR=RVAR/FNM-RBAR*RBAR RSTD=SQRT(RVAR) WRITE (LUNS,9030) RBAR,RSTD WRITE (LUNF,9030) RBAR,RSTD 9030 FORMAT (1X,'REALIZED MOMENTS OF INTEGERIZED DYNAMICS'/ *1X,'MEAN R ',F10.6/ *1X,'STD R ',F10.6) C.....PROGRAM COMPLETE 9999 STOP END