【问题标题】:Confidence intervals of loadings in principal components in RR中主成分载荷的置信区间
【发布时间】:2015-09-11 17:45:10
【问题描述】:

我正在使用以下代码使用 R 中的 prcomp 函数对虹膜数据集的前 4 列进行主成分分析:

> prcomp(iris[1:4])
Standard deviations:
[1] 2.0562689 0.4926162 0.2796596 0.1543862

Rotation:
                     PC1         PC2         PC3        PC4
Sepal.Length  0.36138659 -0.65658877  0.58202985  0.3154872
Sepal.Width  -0.08452251 -0.73016143 -0.59791083 -0.3197231
Petal.Length  0.85667061  0.17337266 -0.07623608 -0.4798390
Petal.Width   0.35828920  0.07548102 -0.54583143  0.7536574

如何在 R 中获得这些值的置信区间?有什么包可以做到吗?感谢您的帮助。

【问题讨论】:

    标签: r pca confidence-interval


    【解决方案1】:

    您可以对此使用引导程序。只需使用引导程序包重新采样您的数据并记录每次计算的主成分。使用得到的经验分布来获得置信区间。

    boot 包使这非常容易。

    以下是计算第一个 PCA 组件相对于 Sepal.Length 的 95% 置信区间的示例:

    library(boot)
    
    getPrcStat <- function (samdf,vname,pcnum){
      prcs <- prcomp(samdf[1:4]) # returns matrix
      return(prcs$rotation[ vname,pcnum ])   # pick out the thing we need
    }
    
    bootEst <- function(df,d){
       sampledDf <- df[ d, ]  # resample dataframe 
       return(getPrcStat(sampledDf,"Sepal.Length",1))
    }
    
    bootOut <- boot(iris,bootEst,R=10000)
    boot.ci(bootOut,type=c("basic"))
    

    输出是:

      BOOTSTRAP CONFIDENCE INTERVAL CALCULATIONS
      Based on 10000 bootstrap replicates
    
      CALL : 
      boot.ci(boot.out = bootOut, type = c("basic"))
    
      Intervals : 
      Level      Basic         
      95%   ( 0.3364,  1.1086 )  
      Calculations and Intervals on Original Scale
    

    因此,使用通常的基本引导方法,我们得到 0.3364 到 1.1086 之间的 95% 置信区间。还有很多其他更高级的统计方法也可以使用,但您需要知道自己在做什么。

    【讨论】:

    • 我的工作优先级阻止我现在编写示例。如果今天晚上(几个小时后)仍然营业,我会回来做。承诺:)
    • 谢谢。我们可以避免在此处输入数字:samdf[1:4] 吗?我认为我们可以避免 [1:4],因为发送的 data.frame 将是 iris[1:4]。此外,我们需要为每个值执行此操作。我们可以得到 2 个矩阵,一个用于下置信区间,一个用于上置信区间?
    • 当然。事实上,在这里可以很好地使用闭包来将函数与其固定函数打包在一起。稍后会看看这样做。
    • 此链接上的替换重采样是否也同样有效? stackoverflow.com/questions/31057192/…
    • 我担心这里的一个潜在问题是主成分可能会随机翻转为负值,这可能会大大扩大置信区间。如果 getPrcStat 与非自举主成分的点积为负,则它应该可能翻转主成分。
    猜你喜欢
    • 2015-06-25
    • 2012-09-13
    • 1970-01-01
    • 1970-01-01
    • 2012-05-14
    • 1970-01-01
    • 2012-03-07
    • 2018-01-16
    相关资源
    最近更新 更多