SPSS: "Weight cases" by multiple factors, by taking the product of weights?

My understanding is that a sample can be adjusted based on a known population using the "Weight Cases" function in SPSS. What is the proper procedure for weighting by multiple factors? Let's say I have WEIGHT_SEX and WEIGHT_ETHNICITY. Can I compute a WEIGHT_COMPOSITE by taking their product? Are there any downsides to doing this that I should be aware of?

• What is weight in your case? Is it frequency weight (the weight value shows how much times the row of data is counted)? SPSS command WEIGHT is this frequency weighting. Jul 25, 2013 at 7:47
• You can use the Spinnaker weighting tool for multivariate weighting. See spinnakerresearch.nl
– user59533
Oct 29, 2014 at 0:59

Base SPSS isn't very deft at handling sampling weights. See this website for some details on weighting (including caveats on SPSS): http://www.ats.ucla.edu/stat/spss/faq/weights.htm

Weight cases in SPSS treats each line as representative of a certain number of observed samples. (e.g. if you assign a weight of 100 to a particular line (case), then that line will be treated as 100 replicated observations of the information in that line.) This means that your sampling inferences will be based on a sample size that is too large -- and hence the calculations that follow will have too great a precision. As an example:

You might have 100 observations that you think are representative of 10,000 people in the population. The sampling properties of your statistics are driven by the 100 observations in your sample. Using weight cases would make SPSS think that your sample actually consisted of 10,000 cases, and thus statistical inference (in terms of standard errors, confidence intervals, hypothesis tests) would be wildly over-optimistic.

The proper procedure would be to first create a new categorical variable which will be the intersection of sex & ethnicity (i.e., it will have categories white-male, white-female, africanamerican-male, africanamerican-female, etc.).

Then one has to identify the weights for each of the categories (i.e., sub populations/strata) identified by the new variable.

This may or may not be the same as the products of the weight variables (most likely not).

@James Stanley makes an important point. The issue is not necessarily of SPSS, rather how the weighting is used. A way to deal with that issue is to "re-base the weight variable to the sample size". That is to assign weights such that the weighted total sample size is equal to (very close to) the unweighted sample size. This can be achieved by computing the weight for the category to be the population proportion for the category divided by the sample proportion for the category. That is, suppose there are $n_i$ observations from $k$ sub-populations, adding to a total sample size of $n$. Suppose you know that the population proportion for that category is $p_i$. Then, the weight for that category is $w_i = p_i /(n_i/n)$. This will give the total weighted sample size to be $$\sum_{i=1}^kn_i \, w_i =\sum_{i=1}^kn_i \frac{p_i}{n_i/n} = n\sum_{i=1}^kp_i = n.$$

In computation the total weighted sample size under this approach will only be approximately equal to because of rounding issues.

Survey sample weighting is a complicated matter. There are different types of weights and how they should be handled. For example, SPSS may not be able to handle replicate weights.

If you need a multidimensional correction for representativeness, you might want to use the SPSSINC RAKE extension command. It computes weights matching specified marginals in up to 10 dimensions. You can get it from the SPSS Community website at www.ibm.com/developerworks/spssdevcentral. It requires the Python Essentials, which are also available via that site and the Advanced Statistics module. The latter is needed because RAKE uses GENLOG to fit a loglinear model as part of the process.

If you have a complex samples design, though, you should use the procedures in the Complex Samples option.