PROC IML; RESET NONAME; START BP(Y, LOWFEN, UPPFEN, LEFTDATA, TRIMEAN) GLOBAL (NY,NTOT,WOBS,BOBS); NTOT=NROW(Y); WOBS=NCOL(Y); BOBS=NCOL(NY); YT=J(NTOT, WOBS, 0); DOQ1= J(1, NCOL(NY),0); IDOQ1=DOQ1; DECIMAL=DOQ1; Q1DIFF=DOQ1; Q1DEC=DOQ1; Q1=J(1, NCOL(NY),0); DOQ3=DOQ1; IDOQ3=DOQ1; DECIMAL3=DOQ1; Q3DIFF=DOQ1; Q3DEC=DOQ1; Q3=Q1; RMAD=Q1; MADN=Q1; LOWFEN=Q1; UPPFEN=Q1; LEFT=Q1; NEWN=Q1; HA=Q1; TRIMEAN=J(1,NCOL(NY),0); SS=Q1; SM=Q1; SEM=Q1; F=1; M=0; DO J=1 TO NCOL(NY); SAMP=NY[J]; L=M+SAMP; TEMP1= Y[F:L]; NV1=TEMP1; TEMP1[RANK(NV1),]=NV1; YT = TEMP1; DOQ1[,J]=(SAMP+1)/4; IDOQ1[,J]=INT(DOQ1[,J]); DECIMAL[,J]=DOQ1[,J]-IDOQ1[,J]; Q1DIFF[,J]=YT[IDOQ1[,J]+1,1]- YT[IDOQ1[,J],1]; Q1DEC[,J]=DECIMAL[,J]*Q1DIFF[,J]; Q1[,J]= YT[IDOQ1[,J],1] + Q1DEC[,J]; DOQ3[,J]=(SAMP+1)*3/4; IDOQ3[,J]=INT(DOQ3[,J]); DECIMAL3[,J]=DOQ3[,J]-IDOQ3[,J]; Q3DIFF[,J]=YT[IDOQ3[,J]+1,1]- YT[IDOQ3[,J],1]; Q3DEC[,J]=DECIMAL3[,J]*Q3DIFF[,J]; Q3[,J]= YT[IDOQ3[,J],1] + Q3DEC[,J]; RMAD[,J]=MAD(TEMP1,"MAD"); MADN[,J]=MAD(TEMP1,"NMAD"); LOWFEN[,J]=Q1[,J]-(1.44*MADN[,J]); UPPFEN[,J]=Q3[,J]+(1.44*MADN[,J]); LEFT=TEMP1[LOC(LOWFEN[,J]<TEMP1 & TEMP1<UPPFEN[,J])]; LEFTDATA=LEFT; NEWN=NROW (LEFTDATA); HA=NEWN; TRIMEAN[,J]=SUM(LEFTDATA)/HA; M=L; F=F+SAMP; *PRINT 'LEFT DATA' LEFT; *PRINT "SORT DATA" YT; END; *PRINT "ORI DATA" Y; *PRINT "DEPTH OF Q3" DOQ3; *PRINT IDOQ3; *PRINT DECIMAL3; *PRINT Q3DIFF; *PRINT "DEC Q3" Q3DEC; *PRINT "Q3=" Q3; *PRINT "RMAD" RMAD; *PRINT MADN; *PRINT "QUARTILE=" Q; *PRINT "Q1=" Q1; *PRINT "LOWER FENCE" LOWFEN; *PRINT "BOXPLOT TRIMMEAN = " TRIMEAN; FINISH; ***MENJANA SAMPEL BUTSTRAP UNTUK PENGIRAAN RALAT PIAWAI PENGANGGAR MOM **; START BOOTDAT(Y, TRIMEAN, YB) GLOBAL(NY, NTOT, WOBS, BOBS, SEED); F = 1; M = 0; DO J = 1 TO BOBS; L = M+NY[J]; TEMP = Y[F:L,]; BVAL = TEMP; DO P = 1 TO NROW(TEMP); RVAL = UNIFORM(SEED); BVAL[P,] = TEMP[CEIL(NROW(TEMP)#RVAL),]; END; **DO P**; IF J = 1 THEN YB = BVAL; ELSE YB = YB//BVAL; M = L; F = F + NY[J]; END; **DO J**; ***** CENTRALIZATION OF BOOTSTRAP DATA *****************; F = 1; M = 0; DO I = 1 TO BOBS; L = M + NY[I]; MVAL = TRIMEAN[,I]; DO K = F TO L BY 1; YB[K,] = YB[K,] - MVAL; END; **DO K**; M = L; F = F + NY[I]; END; ** DO I**; FINISH; START BOOTSTAT(YB, TRIMEANB) GLOBAL(NY, NTOT, WOBS, BOBS, SEED); CALL BP(YB, LOWFENB, UPPFENB, LEFTDATAB, TRIMEANB); FINISH; ************* CALCULATION OF STANDARD ERROR********************; START SEBOXPLOT; CALL BP(Y, LOWFEN, UPPFEN, LEFTDATA, TRIMEAN); F = 1; M = 0; DO BOOTLOOP = 1 TO NUMSIM; CALL BOOTDAT(Y, TRIMEAN, YB); CALL BOOTSTAT(YB, TRIMEANB); IF BOOTLOOP = 1 THEN TMEANB = TRIMEANB; ELSE TMEANB = TMEANB//TRIMEANB; *PRINT 'BOOTSTRAP DATA' YB; END; **DO BOOTLOOP**; VAR=J(1, BOBS, 0); SE=J(1,BOBS,0); DO I=1 TO BOBS; VAR[,I]=(SSQ(TMEANB[,I])-(SUM(TMEANB[,I])**2/NUMSIM))/(NUMSIM-1); SE[,I]=SQRT(VAR[,I]); END; PRINT "BOOTSTRAP STANDARD ERROR=" SE; FINISH; */ **BILANGAN SAMPEL BUTSTRAP**; NUMSIM = 50; **SEED UTK BUTSTRAP**; SEED = 40389; ********cubaan menggunakan data yg dijana*******; NY = {11 11 11}; Y = {5,8,7,3,9,4,3,29,5,6,7, 3,2,6,4,14,4,7,6,9,3,4, 9,9,8,7,10,11,27,12,15,17,16}; *PRINT 'ORI DATA' Y; RUN SEBOXPLOT; /* CALL AG (A, TRIMEAN, SEM, HA, INVVAR, SUMP, WEIGHT, XPLUS, WEIGMEAN,TJ); CALL TRANS(A, B, C, ZJ, ZZJ, TEST, P); */ *CALL BP(A, LOWFEN, UPPFEN, LEFT); QUIT; Hi all, basically this is my coding. how do i get the bootstrap standard error.
... View more