Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
主成分对象的标准值在prcomp和插入符号中不同_R_Statistics - Fatal编程技术网

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

主成分对象的标准值在prcomp和插入符号中不同,r,statistics,R,Statistics,我在下面的数据集中尝试主成分分析。我尝试了prcomp函数和插入符号预处理函数 library(caret) library(AppliedPredictiveModeling) set.seed(3433) data(AlzheimerDisease) adData = data.frame(diagnosis,predictors) inTrain = createDataPartition(adData$diagnosis, p = 3/4)[[1]] tra

我在下面的数据集中尝试主成分分析。我尝试了prcomp函数和插入符号预处理函数

  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
库(插入符号)
库(AppliedPredictiveModeling)
种子集(3433)
数据(阿尔茨海默病)
adData=数据帧(诊断、预测)
inTrain=createDataPartition(adData$diagnosis,p=3/4)[[1]]
培训=添加数据[inTrain,]
测试=添加数据[-inTrain,]
#来自prcomp

名称1第一种方法是给出12个主成分的标准偏差(您可以通过
prcomp.data$rotation
看到)

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

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

第二个是提供预处理输入数据的标准偏差(因此与每个标准偏差相关联的变量名)


一个小的旁注--
插入符号
PCA自动缩放并居中,除非另有规定。

感谢您的回复。我只从数据集中选择了substr(名称(训练),1,2)=“IL”的变量,这两种方式都是如此。然后,当我提取sdev/std时,我想知道值应该是相同的。@Hack-R,是否可以从
插入符号
的预处理中提取PCs的标准偏差(或特征值)?在函数中提供PCA选项似乎有点奇怪,但这样就不能访问转换后的数据或特征值。“我是不是遗漏了什么?”哈利:是的,我知道。这些值不应相同。前者是主成分的标准偏差,后者是处理数据的标准偏差。
preProcess
的正常使用是作为
train
的内联转换选项,例如
train(物种~,dat,method=“knn”,preProcess=c(“pca”),trControl=trainControl(method=“cv”)
而不是独立的pca分析,这不是
插入符号
包的重点
princomp
prcomp
是该用例的首选。话虽如此,我知道可以通过对
预处理对象使用
预测
得到旋转矩阵,即
结果