%MACRO JackknifeBCa (data,var,MVout); %GLOBAL &MVout ; DATA work.jacktemp (INDEX = (replica)); SET &data. NOBS = nb ; IF _N_ = 1 THEN CALL SYMPUT ("n",nb) ; DO replica = 1 TO _N_-1 ; OUTPUT ; END ; DO replica = _N_+1 TO nb ; OUTPUT ; END ; RUN ; /* computing the statistic BY REPLICA = jackknife estimate */ %calcul (work.jacktemp, outTab = work.alpha, byGp = replica) ; /* computation of the acceleration constant */ PROC MEANS DATA = work.alpha NOPRINT VARDEF = n ; VAR &var. ; OUTPUT OUT = work.alpha (KEEP = skew_&var.) SKEWNESS = skew_&var. ; RUN ; DATA _NULL_ ; SET work.alpha ; CALL SYMPUT ("&MVout", - skew_&var. /(6 * sqrt(&n))) ; RUN ; /* the value of the acc. constant is sent to a macro-variable */ PROC SQL ; DROP TABLE work.jacktemp ; /* Equivalent to PROC DATASETS ... DELETE */ DROP TABLE work.alpha ; QUIT ; %MEND JackknifeBCa ;