# Sampling with Replacement and Regression Macro

The most complicated part of the `OMS`

bootstrapping example has nothing to
do with the `OMS`

command. A macro
routine is used to generate the samples and run the `REGRESSION`

commands. Only the basic functionality
of the macro is discussed here. For detailed information on macros,
see DEFINE-!ENDDEFINE.

```
DEFINE regression_bootstrap (samples=!TOKENS(1)
/depvar=!TOKENS(1)
/indvars=!CMDEND)
COMPUTE dummyvar=1.
AGGREGATE
/OUTFILE=* MODE=ADDVARIABLES
/BREAK=dummyvar
/filesize=N.
!DO !other=1 !TO !samples
SET SEED RANDOM.
WEIGHT OFF.
FILTER OFF.
DO IF $casenum=1.
- COMPUTE #samplesize=filesize.
- COMPUTE #filesize=filesize.
END IF.
DO IF (#samplesize>0 and #filesize>0).
- COMPUTE sampleWeight=rv.binom(#samplesize, 1/#filesize).
- COMPUTE #samplesize=#samplesize-sampleWeight.
- COMPUTE #filesize=#filesize-1.
ELSE.
- COMPUTE sampleWeight=0.
END IF.
WEIGHT BY sampleWeight.
FILTER BY sampleWeight.
REGRESSION
/STATISTICS COEFF
/DEPENDENT !depvar
/METHOD=ENTER !indvars.
!DOEND
!ENDDEFINE.
GET FILE='/examples/data/Employee data.sav'.
regression_bootstrap
samples=100
depvar=salary
indvars=salbegin jobtime.
```

- A macro named
*regression_bootstrap*is defined. It is designed to work with arguments similar to IBM® SPSS® Statistics subcommands and keywords. - Based on the user-specified number of samples, dependent
variable, and independent variable, the macro will draw repeated random
samples with replacement and run the
`REGRESSION`

command on each sample. - The samples are generated by randomly selecting cases
with replacement and assigning weight values based on how many times
each case is selected. If a case has a value of 1 for
*sampleWeight*, it will be treated like one case. If it has a value of 2, it will be treated like two cases, and so on. If a case has a value of 0 for*sampleWeight*, it will not be included in the analysis. - The
`REGRESSION`

command is then run on each weighted sample. - The macro is invoked by using the macro name like
a command. In this example, we generate 100 samples from the
*employee data.sav*file. You can substitute any file, number of samples, and/or analysis variables.