r - PCA 后如何计算 T2 Hotelling?
问题描述
在 PCA 分析之后,我需要计算 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
解决方案
我将在另一个数据集上进行解释,因为我无法访问您正在分析的内容。您在我的数据集上应用的两种方法是相同的。令人困惑的是,如果你看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 和 Hotelling 的 T^2 用于 R 中的置信区间。
推荐阅读
- cassandra - 高价值行缓存有什么影响?
- heroku - 我怎样才能看到heroku完整的日志文件?
- x86 - 操作系统加载后,CPU 能否在 RealAddress / Protected / Virtual 8086 之间“切换”?
- c# - 我可以使用 HttpWebRequest 来检索其中有很多基于 Ajax 的页面内容吗?
- d3.js - 对于此示例,如何用 D3.js 中的自定义标签替换 X 轴数值(年)?
- javascript - 如何仅检测一侧的两个物体之间的碰撞?
- android - 防止 EditText 使用它的触摸
- python - 如何在 Tensorflow 中恢复当前模型的预训练检查点?
- angular - rxjs 的 .pipe() 内部的 .map() 内部传递的回调方法的角度单元测试失败
- sql - Teradata 错误 2620 - 格式或数据包含错误字符