我在尝试对数据运行主成分分析时遇到了一个尴尬的问题。我尝试使用prcomp
(基础)和rda
(素食主义者),但分析是将列视为样本单位而不是行,这会导致分析出现各种问题。
以下代码简化了我的数据。实际数据集由近2000列和约350行组成。但是,当我运行脚本时,问题是相同的:
rn <- rnorm(8000)
dt <- matrix(rn, nrow=80, ncol=1000)
result <- rda(dt, scale=T)
summary(result)
起初我认为这将是一个常见的错误,但我找不到任何类似的问题或解决方案。
有没有办法明确指定要用作样本单位的维度?
答案 0 :(得分:4)
虽然您可以使用SVD方法对包含更多变量 p 的数据集执行PCA,而不是观察 n ,但最多 n 主要组件,如果数据居中,则 n -1。
如果你深入研究你所安装的PCA的结果,你会发现它考虑了所有变量并且它们仍然是变量:
> r2 <- rda(dt, scale=T)
> dim(scores(r2, display = 'species'))
[1] 1000 2
'species'
是素食主义者引用变量加载的方式;有1000个变量。
与prcomp()
比较,后者也使用了SVD:
> r1 <- prcomp(dt, scale = TRUE)
> dim(scores(r1, display = 'species'))
[1] 1000 80
再次有1000个变量,80个主成分(这里80的原因,前面的2只是choices
的默认值,即提取分数的轴。)
答案 1 :(得分:0)
我认为prcomp()默认情况下认为您的度量单位为列,变量为行。