主成分对象的std值在prcomp和插入符号中不同

时间:2016-08-04 15:50:04

标签: r statistics

我在以下数据集中尝试了主成分分析。我尝试了prcomp函数和插入preProcess函数。

  library(caret)
  library(AppliedPredictiveModeling)

  set.seed(3433)
  data(AlzheimerDisease)
  adData = data.frame(diagnosis,predictors)
  inTrain = createDataPartition(adData$diagnosis, p = 3/4)[[1]]
  training = adData[ inTrain,]
  testing = adData[-inTrain,]

  # from prcomp
  names1 <-names(training)[substr(names(training),1,2)=="IL"]
  prcomp.data <- prcomp(training[,names1],center=TRUE, scale=TRUE)
  prcomp.data$sdev

  ## from caret package
  preProcess(training[, names1], method=c("center", "scale", "pca"))$std

我想知道为什么sdev值在上述过程中有所不同。 感谢

1 个答案:

答案 0 :(得分:1)

第一种方法是给出12个主成分的标准偏差(可以用prcomp.data$rotation看到)。

此外,sdev值的文档中提到了这一点:

  

主成分的标准偏差(即方形   但是,协方差/相关矩阵的特征值的根   计算实际上是用数据的奇异值完成的   矩阵)。

第二个是给出预处理输入数据的标准偏差(因此与每个标准差相关的变量名称)。

小旁注 - caret PCA会自动缩放并居中,除非另有说明。