My participants evaluated 8 different situations via questionnaire items and I now want to conduct a principal component analysis (PCA) on the questionnaire items to extract the underlying factors. My problem is, that I only had 10 participants, which is far too few for a PCA. My idea would be to create a data set where I would treat each evaluation of a subject of a situation as a new "participant", i.e. I would treat the dependent evaluations of the different situations as independent as if every time a new subject would have answered the questionnaire. This results in 80 subjects, which are in reality 10 subjects evaluating 8 different situations.

I could not find anything yet if this is a problem for the PCA, but my gut feeling says that only independent values should go into the PCA.

  • 1
    $\begingroup$ PCA does not have an assumption of independence. It's just a data transformation tool, and it can work with any data it is applied to. In my research, I routinely apply PCA to datasets where individual data points are not independent; in fact, they are very much dependent (e.g. smoothed time series: neighbouring points have very high correlation). However, what implications this will have for your interpretation I cannot say; I guess it depends on what you want to do with your "underlying factors". $\endgroup$
    – amoeba
    Mar 10 '15 at 15:29

I haven't worked through the details yet, but here is a paper that might help:


You need to somehow 'weight' the contributions from different participants.

The basic idea, with steps, is as follows (assuming each questionnaire has the same number of questions and each participant answers the same number of questions - see the paper for a genearlization). I'm following the "MFA as simple PCA" section:

Step0: Form 10 datasets (one for each participant) for each participant's set of answers. So each will have 8 rows (one for each questionnaire) and K columns (one for each answer).

Step1: For each dataset, normalize the columns such that the column mean is 0 and the sum of squares of the columns = 1.

Step2: Run a PCA on each normalized dataset, obtaining the SVD for each. Note down the first (largest) singular value per dataset, s. The inverse of this value will be used as a weight.

Step3: Concatenate the 10 datasets into one matrix, but multiplying each dataset by the inverse of it's first singular value (i.e. 1/s for each participant's dataset); call this 8 by 8*K matrix X.

Step4: run a SVD on X to get: X = PDQ^T (where Q^T is the transpose of Q).

Step5: PD gives the factor scores, and the loadings for the kth participant's dataset are given by (1/s)*Qk where Qk is the kth partition of Q.

Step6: Maybe it's easier to read the paper than to read my quick summary of one part of it!

I hope that helps anyway.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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