这对我来说是一个概念性问题。我有车站排放数据。一个可重现的例子如下所示:
> A <- rnorm(n = 10)
> B <- rnorm(n = 10)
> C <- rnorm(n = 10)
> D <- rnorm(n = 10)
> Year <- seq(1981, 1990,1)
> df <- cbind.data.frame(A,B,C,D,Year)
> df
A B C D
1 0.01121438 -0.8051576 -0.3310504 -0.42942510
2 -0.43391287 0.6532436 1.1708714 0.07139685
3 0.97699859 0.3594398 1.1964296 0.21978991
4 0.40884971 -0.1116279 1.3725900 -2.02855285
5 -1.27919745 -1.4417479 0.5295565 0.75712199
6 -0.62038250 0.4426559 0.8202428 -0.82079685
7 0.09655825 0.9243231 -1.5198267 1.51316114
8 -0.44051474 0.4399702 -0.7746237 -0.08734779
9 -0.38922528 -0.6368451 -0.5187176 -0.04337179
10 -0.67727348 -0.1201216 -1.6738859 0.64535227
Year
1 1981
2 1982
3 1983
4 1984
5 1985
6 1986
7 1987
8 1988
9 1989
10 1990
现在我需要对上述基于站的数据集执行 PCA。我执行它的方式如下:
> pca <- prcomp(df[-5])
> pca
Standard deviations (1, .., p=4):
[1] 1.3529447 0.8232083 0.6621643 0.4783339
Rotation (n x k) = (4 x 4):
PC1 PC2 PC3 PC4
A -0.16040396 0.52718949 -0.14776084 -0.82128469
B 0.02441463 0.84464804 0.01609344 0.53452279
C -0.78797565 -0.01163029 0.61455083 0.03586638
D 0.59394349 0.09222617 0.77474836 -0.19618981
但我的同事告诉我,这是在空间分布的站点上执行 PCA 的错误方法。根据他们的说法,以下应该是结果的正确格式pca
:
> pca
Year PC1 PC2 PC3
1 1981 -0.4192441 -1.0005214 1.1762915
2 1982 -0.1544769 0.2806917 0.5949149
3 1983 -0.3986093 1.5958552 0.2692496
4 1984 0.7621084 -0.3570052 0.7364546
5 1985 0.8328032 0.6859986 1.0685002
6 1986 -1.1903815 -0.4175560 -0.7729808
7 1987 -0.3834361 0.8492876 -0.1476914
8 1988 -1.1031614 -0.3747533 0.4373630
9 1989 -0.1118474 -1.1136896 -0.6296304
10 1990 0.3307309 0.8234295 -0.9062146
PC4
1 1.00558991
2 -0.41620086
3 0.74466221
4 1.68333910
5 1.10491385
6 0.60896178
7 0.67494475
8 0.07006129
9 -2.68101223
10 0.58142017
因此,我应该拥有与每年的站点数量相同的 PC 数量。我不确定如何通过调整数据框格式或prcomp
我不知道的东西来获得所需的结果。任何帮助表示赞赏。谢谢你。