SUBROUTINE CPD PARAMETER(LDM=15,LDPAR=250) IMPLICIT REAL*8 (A-H,O-Z) COMMON/AMCMC/WT,PRI,PDAT,PAR(LDPAR),ITER,NPAR,LRECRD,LWRITE,LERR LOGICAL LRECRD,LWRITE,LERR DIMENSION AN(LDM,LDM),AT(LDM,LDM),A1T(LDM,LDM), 1 P(LDM,LDM),PT(LDM,LDM), 2 S(LDM,LDM),ST(LDM,LDM) C Draw P matrix DO 10 I=1,NM 10 CALL BET(NM,AT(1,I),PT(1,I)) CALL DTRNRR(NM,NM,PT,LDM,NM,NM,P,LDM) C Store section IF(.NOT.(LRECRD.AND.LWRITE))RETURN CALL VEC(NM,NM,P,LDM,PAR) WT=0.0D0 PRI=PRI0 PDAT=0.0D0 DO 20 I=1,NM PRI=PRI+BETK(NM,ST(1,I),PT(1,I)) 20 PDAT=PDAT+BETK(NM,A1T(1,I),PT(1,I)) RETURN ENTRY PD0 C Obtain Markov chain model specification CALL FOPEN('Model specification',1,.FALSE.) READ(1,*,END=210,ERR=220)NM IF((NM.LE.0).OR.(NM.GT.LDM))GO TO 230 C Obtain data CALL DATFMC(2,1,NM,AN,LDM) C Obtain prior CALL BET0(1,NM,'first order Markov chain model', 1 NM,S,LDM,PRI0,P,LDN) C Obtain sufficient statistics and log Bayes factor AA=PRI0 DO 120 I=1,NM DO 110 J=1,NM AT(J,I)=S(I,J)+AN(I,J) A1T(J,I)=AT(J,I)+1.0D0 110 ST(J,I)=ST(I,J) 120 AA=AA-BETN(NM,A1T(1,I)) WRITE(6,130)AA 130 FORMAT(/,' Log marginalized likelihood:',1PE15.7) IF(.NOT.LWRITE)RETURN NPAR=NM**2 IF(NPAR.GT.LDPAR)GO TO 240 RETURN ENTRY PD1 RETURN C Error processing section 210 CALL PEND('UNANTICIPATED END-OF-FILE READING PRIOR LINE 1') 220 CALL PEND('ERROR READING PRIOR LINE 1') 230 CALL PINTI('NUMBER OF CATEGORIES M',NM,2,LDM) 240 CALL PINTI('PARAMETER VECTOR LENGTH',NPAR,1,LDPAR) END