0

When reading up on biplots in a principal component context, I found that in SAS setting c = 0 gives you a GH biplot that represents the vectors correctly.[1] The same applies in STATA.[2]

From what I understand, this means that in a GH biplot, the cosine of the angle between two vectors approximate the correlation between those variables. However, when I use the biplot() function in R, the scale argument seems to be defined in the opposite way, with scale = 1 leading to a GH biplot, and not scale = 0.

Am I missing something, or is it the case that the biplot() function uses the opposite notation than SAS and STATA does? And in that case, why?

Because look at the following two PC biplots made in R on a subset of the iris data set (namely, iris[, 3:4]). Due to only two variables being used, the cosine of the angle between the two vectors should be exactly the correlation between the GH biplot. Note that in the case with scale = 0 the angle is 90 degrees and thus the cosine of the angle is 0, which clearly isn't correct.

A biplot where scale has been set to 0.

A biplot where scale has been set to 1.

Phil
  • 627
  • 4
  • 16
  • Could you add the entire function call that generates the plots. – Sextus Empiricus Feb 04 '22 at 11:17
  • Got it, `biplot(prcomp(iris[,3:4]), scale =0)` and `biplot(prcomp(iris[,3:4]), scale =1)`. – Sextus Empiricus Feb 04 '22 at 11:28
  • The behaviour of scale=0 (no scaling) seems intuitive to me. The effect is just a rotation of the data but no change of the axis. The axes are perpendicular because they are only rotated and not scaled. Is a BH biplot with or without scaling? – Sextus Empiricus Feb 04 '22 at 11:30
  • All biplots have some type of scaling, from my understanding, since they plot both the principal component scores and the principal component loadings in the same figure and at least one of them are scaled. It has to do with the singular value decomposition used, but I am not intimately familiar with the details. – Phil Feb 04 '22 at 11:34
  • You could see the biplot as some [projection onto a lower dimensional plane](https://stats.stackexchange.com/a/311010/164061). This can be done without scaling. – Sextus Empiricus Feb 04 '22 at 11:40

1 Answers1

0

The behaviour of scale=0 (no scaling) seems intuitive to me. The effect is just a rotation of the data but no change of the axis. The axes are perpendicular because they are only rotated and not scaled. Is a BH biplot with or without scaling?

The image below illustrates how the biplot without scaling is just a rotation of the 2D data. The upper plot is the plot with the PC as axes, the lower plot is with the petal width and length as axes.

The difference with scale = 1 is that you stretch the PC2 such that the cloud of data points is not such a flat shape on the y-axis.

example

Is the 'thing with the angles' maybe about the correlation between between the petal.width and petal.length and the PC components?

Sextus Empiricus
  • 43,080
  • 1
  • 72
  • 161