Cross Validated is a question and answer site for people interested in statistics, machine learning, data analysis, data mining, and data visualization. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I have a data set that contains about 40 categorical variables that are taken as independent variables (and believed to be related to some unobservable human resource factors) and 4 categorical variables (like a company's turnover, competition for job etc.) that are taken to be the dependent variables. All these variables categories can be ordered although the variables have different number of categories.

I want to see how the factors actually affect the dependent variables. I know how to do factor analysis with continuous variables. How do I do it with these kinds of categorical variables with different categories?

Besides there is another categorical variable "size" representing the number of full time staffs ($\le 25$ is given 1, $26-99$ is given 2 and $>100$ is given 3) which is planned to use as a mediating or moderating variable. I want to see how the human resource factors affects the dependent variables. I mean, to make comments like “For small companies (smaller than 25 employees), human resource factor-1 impacts on profitability quite dramatically, however, there is no relationship between voice and profitability in medium and large hospitals...bla bla bla” (for example)

How do I relate the factors with the categorical dependent variables? Can I do whatever you suggest in R or in SPSS?

share|improve this question
up vote 5 down vote accepted

I feel, from your description of the task, that it can be solved by means of quantifying (turning ordinal-level into scale-level) variables the way that the predictions or associatiations are maximized. This is known as optimal scaling and is implemented in SPSS (and, of course, in R, I believe). You might choose between 3 procedures, all adopting optimal scaling:

  • Categorical PCA (CATPCA, or PRINCALS). Use this if you want PCA or Factor analysis. The procedure itself is PCA, not Factor analysis in narrow sense of the word implying communalities. If you need Factor analysis per se you may input the quantified variables obtained in CATPCA to standard Factor analysis procedure. Having identified components or factors behind your independent "resource" variables and having obtained the factor scores you could then check their effect on each dependent variable via ordinal regression (for example).
  • Categorical Canonical Correlation analysis (OVERALS). Use this to draw latent "traits" which are loaded simultaneously by both independed and dependent sets of variables. You might want to read something about canonical correlations if you are not familiar with it.
  • Categorical regression (CATREG). This is OVERALS in case one of the two sets of variables contains just one variable. Use it if you want to model effects of your independent variables on each dependent variable separately. It is like usual linear regression, only that it is nonlinear because of optimal scaling.
share|improve this answer
(+1) I believe that for SPSS key papers are from Jacqueline J. Meulman, see e.g. Nonlinear principal components analysis: Introduction and application (Psychol Methods. 2007 12(3):336-58) or PCA with nonlinear optimal scaling transformations for ordinal and nominal data (SAGE Handbook of Quantitative Methodology for the Social Sciences, 2004). For R, there is homals and a JSS paper, Gifi Methods for Optimal Scaling in R: The Package homals. – chl Jun 29 '12 at 6:54
@chl You are a walking library, as always. – ttnphns Jun 29 '12 at 7:26

A kind of PCA applied to cagetorical data is MCA (Multiple Correspondence analysis) that let you detect underlying structures in a data set.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.