我在以下数据集中尝试了主成分分析。我尝试了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值在上述过程中有所不同。 感谢
答案 0 :(得分:1)
第一种方法是给出12个主成分的标准偏差(可以用prcomp.data$rotation
看到)。
此外,sdev
值的文档中提到了这一点:
主成分的标准偏差(即方形 但是,协方差/相关矩阵的特征值的根 计算实际上是用数据的奇异值完成的 矩阵)。
第二个是给出预处理输入数据的标准偏差(因此与每个标准差相关的变量名称)。
小旁注 - caret
PCA会自动缩放并居中,除非另有说明。