%MACRO bagging (table, test, nbBoucles=100, Log=non) ; %IF &log = non %THEN %DO ; OPTION NOMPRINT NOMLOGIC NOSYMBOLGEN NONOTES ; %END ; %DO i = 1 %TO &nbBoucles ; PROC SURVEYSELECT DATA = &table OUT = work._samp METHOD = URS SAMPRATE = 1 SEED = &i NOPRINT ; RUN ; %modele (table = work._samp, out = work._coeffs) ; %IF &i = 1 %THEN %DO ; DATA work._histo ; SET work._coeffs ; RUN ; %END ; %ELSE %DO ; PROC APPEND BASE = work._histo DATA = work._coeffs ; RUN ; %END ; %END ; /* computing bootstrap coefficients of the model */ PROC MEANS DATA = work._histo NOPRINT NWAY ; CLASS _model_ _type_ ; VAR _numeric_ ; OUTPUT OUT = work._bagging (DROP = _FREQ_) MEAN = ; RUN ; /* computing bootstrap prediction for each individual */ DM "ODSRESULTS CLEAR ; PGM OFF ;" WPGM ; PROC SCORE DATA = &test SCORE = work._bagging OUT = work._test TYPE = PARMS ; VAR age puiss anc_veh ; RUN ; PROC SQL ; CREATE TABLE work._test AS SELECT *, (_score_ > 0) AS _into_ FROM work._test ; SELECT AVG((_into_ = good_bad)) LABEL = "Correctly classified" FORMAT = PERCENT8.2, AVG((_into_ NE good_bad)) LABEL = "Misclassified" FORMAT = PERCENT8.2 FROM work._test ; DROP TABLE work._histo ; DROP TABLE work._coeffs ; DROP TABLE work._samp ; QUIT ; %IF &log = non %THEN %DO ; OPTION NOTES ; %END ; %MEND bagging ;