2

Suppose I have retained 3 principal components, and I want to rotate their loadings by hand (yeah, that's rare, but it is commonly used in Q Methodology).

Does it matter in which order I rotate the component pairs?

Say, I first rotate component 1 vs 2 by 45°, then take the resulting loadings and component 1 vs 3 by -90°.

Will the final result be different if I proceed the other way around (first 1 vs 3, then 1 vs 2)?

maxheld
  • 702
  • 1
  • 6
  • 18
  • 1
    Think of it graphically. Loadings are simply the coordinates of variables on the PC-axes on the scatterplot called [loading plot](http://stats.stackexchange.com/a/119758/3277). Rotation is changing the axes orientations without doing anything with the cloud of points. You may rotate each axis individually and independently. Or in pairs (rotate planes) or all at once (rotate space). If the original axes are orthogonal, rotation of plane PC_X-PC_Y does not change coordinates (loadings) onto the rest of the axes because it is those rest about which you are rotating as if about some spindel. – ttnphns Jul 18 '15 at 06:17
  • Would you mind copy/pasting that as an answer? One small follow-up: could you explain how to rotate an axis individually? I am so far only rotating pairs (planes), and I have hard time understanding visually or otherwise how I might rotate *only* one axis. – maxheld Jul 18 '15 at 08:50
  • 1
    What @ttnphns wrote is correct, but I am not sure of his answer to your question (yes or no). I think the answer is no. Rotations don't commute. Take a matchbox and try rotating it twice; its resulting position will depend on the order of rotations. – amoeba Jul 18 '15 at 11:09
  • 1
    uh, yeah @amoeba that makes sense. I am just now playing around with a matchbox. So basically, to **reproduce** a by-hand rotation (that's my concern here), you would have to document **the order** in which you rotated the component pairs (aka planes), correct? – maxheld Jul 18 '15 at 11:16
  • 1
    Yes, that's right. – amoeba Jul 18 '15 at 11:19
  • Since it turns out that **the order matters**, I am wondering [how to best organise an iterative by-hand rotation](http://stats.stackexchange.com/questions/162058/how-to-organise-an-iterative-manual-rotation-of-n-component-pairs) in a related question. – maxheld Jul 18 '15 at 13:33
  • Likewise, because **order matters**, I'm wondering [how to compute the *simplest* sequence of angle rotations to get from some `loa.orig` to some `loa.rot`](http://stackoverflow.com/questions/31491228/how-do-i-find-the-angles-between-an-original-and-a-rotated-pca-loadings-matrix), *if you don't know what happened* in between. – maxheld Jul 18 '15 at 13:35

1 Answers1

2

Let's try and illustrate this empirically.

# here's some matrix of loadings
loa <- cbind(c(0.6101496, 0.7114088, 0.3356003, 0.7318809, 0.5980133, 0.4102817, 0.7059148, 0.6080662, 0.5089014, 0.587025, 0.6166816, 0.6728603, 0.7482675, 0.5409658, 0.6415472, 0.3655053, 0.6313868), c(-0.205317, 0.3273207, 0.7551585, -0.1981179, -0.423377, -0.07281187, -0.04180098, 0.5003459, -0.504371, 0.1942334, -0.3285095, 0.5221494, 0.1850734, -0.2993066, -0.08715662, -0.02191772, -0.2002428), c(-0.4692407, 0.1581682, -0.04574932, -0.1189175, 0.2449018, -0.5283772, 0.02826476, 0.1703277, 0.2305158, 0.2135566, -0.2783354, -0.05187637, -0.104919, 0.5054129, -0.2403471, 0.5380329, -0.07999642))

# Let's always rotate 1-2 by 90°, and 1-3 by 45°

library(psych)

# A: first 1-2, then 1-3
a <- factor.rotate(f = loa, angle = 90, col1 = 1, col2 = 2)
a <- factor.rotate(f = a, angle = 45, col1 = 1, col2 = 3)

# B: first 1-3, then 1-2
b <- factor.rotate(f = loa, angle = 45, col1 = 1, col2 = 3)
b <- factor.rotate(f = b, angle = 90, col1 = 1, col2 = 2)

any(a == b) # are any of them the same?

yields:

[1] FALSE  # nope
amoeba
  • 93,463
  • 28
  • 275
  • 317
maxheld
  • 702
  • 1
  • 6
  • 18