## Technote (troubleshooting)

## Problem(Abstract)

I wish to conduct a factor analysis for a multiple choice test. The test contains 20 items with each item having four distractors with one correct answer. Do I have to convert the responses to 1 for correct and 0 for incorrect to conduct the factor analysis?

## Resolving the problem

For tests of this type, where each item has a correct response whose value varies across items, the set of multiple choice responses do need to be scored as 1 or 0 (for correct and incorrect), with the new item score variables used in the factor analysis. Actually, any 2 numbers would work, but 0 and 1 make computation of total scores easier and make it easier to use item scores as predictors in regression, for example.. Also, fairly concise syntax can be used to score the items as 0 or 1, as in:

do repeat response = item1 to item20

/key = 3 2 4 1 2 3 3 4 2 1 2 4 2 4 3 1 4 3 2 1

/score = scor1 to scor20.

compute score = (response=key).

end repeat.

execute.

In the commands above, if the multiple choice response (1,2,3, or 4) for 20 items are in existing variables item1 to item20; the correct responses for the 20 items are in the "/key=" list, and the {0,1} item scores are placed in the new variables scor1 to scor20. For each item for each case, if the expression (response=key) is true, then a 1 is stored in the corresponding score variable; if false, 0 is stored. Note that if item1 to item20 were not contiguous in the data set, so that irrelevant variables were interspersed among them, you would need to list out the 20 item variable names, rather than using "item1 to item20" in the DO REPEAT RESPONSE line.

For completeness, the CATPCA procedure in the Categories module will do principal components analysis of categorical variables,but the items would still need to be scored for the results to be meaningful. Categories requires the scores to be positive values, however. If you were scoring the items for CATPCA, you could score the items as {1,2} for incorrect and correct response with the compute command:

compute score = (response=key) + 1.

in the DO REPEAT sequence.

## Historical Number

93448