PCA使用行作为变量而不是列

时间:2017-11-20 21:47:01

标签: r pca vegan

我在尝试对数据运行主成分分析时遇到了一个尴尬的问题。我尝试使用prcomp(基础)和rda(素食主义者),但分析是将列视为样本单位而不是行,这会导致分析出现各种问题。

以下代码简化了我的数据。实际数据集由近2000列和约350行组成。但是,当我运行脚本时,问题是相同的:

rn <- rnorm(8000)
dt <- matrix(rn, nrow=80, ncol=1000)

result <- rda(dt, scale=T)
summary(result)

起初我认为这将是一个常见的错误,但我找不到任何类似的问题或解决方案。

有没有办法明确指定要用作样本单位的维度?

2 个答案:

答案 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()默认情况下认为您的度量单位为列,变量为行。