PCA之后如何计算T2 Hotelling?

时间:2019-05-21 14:01:24

标签: r pca

在PCA analisys之后,我需要计算Hotelling T2和SPE(Q)。我使用mdatools库中的pca函数完成了此操作,但是我看到计算出的PC与prcomp或princomp函数计算出的PC不同。为什么?

library(mdatools)
NF4.3.pca4 <- pca(NF4.3, ncomp = 15, center = T, scale = T)
res <- NF4.3.pca4$calres

NF4.3.pca <- prcomp(NF4.3, center = T, scale. = T) #different eigenvalues

还有另一种方法可以从主成分计算T2和SPE吗?

数据:

ASSORB_CAT1;ASSORB_CAT3;ASSORB_VOLANO;AZOTO_IN
0.03662109;23.55957;-12.30469;39.3
0;25.36621;-11.09619;39.2
-0.02441406;21.92383;-11.26709;39.2
-0.02441406;23.10791;-11.07178;39.1
-0.04882813;22.81494;-10.57129;39.59975
0;24.24316;-11.23047;39.89737
0;22.63184;-11.43799;39.8
-0.04882813;24.34082;-13.61084;39.5
0;21.83838;-11.1084;39.4
0;24.3042;-12.08496;39.3
0;24.67041;-12.40234;39.3

1 个答案:

答案 0 :(得分:0)

我将在其他数据集上进行解释,因为我无权访问您所分析的内容。您对数据集应用的两种方法是相同的。不过,令人困惑的是,如果您查看stats_pca$sdev是特征值向量的均方根,而mdatools_pca$eigenvals会报告特征值本身。

library(mdatools)
data("mtcars")
stats_pca <- prcomp(mtcars, center=TRUE, scale.=TRUE)
mdatools_pca <- mdatools::pca(mtcars, center=TRUE, scale=TRUE)

all.equal(sqrt(mdatools_pca$eigenvals)[1:length(stats_pca$sdev)], stats_pca$sdev)
# TRUE

如果您想继续使用Hotelling的T2,我建议阅读:PCA and Hotelling's T^2 for confidence intervall in R