【问题标题】:How can I compute T2 Hotelling after PCA?在 PCA 之后如何计算 T2 Hotelling?
【发布时间】:2019-10-07 22:48:35
【问题描述】:

在 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

【问题讨论】:

    标签: r pca


    【解决方案1】:

    我将在另一个数据集上进行解释,因为我无法访问您正在分析的内容。您在我的数据集上应用的两种方法是相同的。不过,令人困惑的是,如果您查看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

    【讨论】:

    • 我的数据看到“平均相对差异:0.3862249”
    • 我做了一些调查,看来这不是你的错。 mdatools 库中的实现(可能)存在缩放缺陷。如果一列的平均值为负(在您的情况下为 2 列),则它不会被缩放。这就是价值观不同的原因。您可以禁用缩放或在pca 函数中提供预先计算的标准偏差向量,以获得与prcomp 中相同的结果。我针对该错误打开了一个问题:github.com/svkucheryavski/mdatools/issues/59.
    猜你喜欢
    • 1970-01-01
    • 2018-03-25
    • 2012-08-17
    • 2020-07-23
    • 2016-01-10
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 2020-11-03
    相关资源
    最近更新 更多