为什么我使用 R (prcomp) 和 Rcmdr 包获得不同的 PCA 结果?
Why do I obtain different results of PCA using R (princomp) and Rcmdr pacakges?
我有一个包含 27 个变量(列)和 125 个样本(行)的数据。我正在尝试使用此脚本进行一些 PCA 分析:
library("FactoMineR")
library("factoextra")
library(ggplot2)
mydata<- read.csv("Overall.csv", TRUE, ",")
mydata[is.na(mydata)]=0
attach(mydata)
X=cbind (Adj..1_12, Adj..1_13, Adj..1_2, Adj..10_11, Adj..11_12, Adj..12_13, Adj..2_11, Adj..2_12, Adj..2_13,
Adj..2_3, Adj..3_11, Adj..3_12, Adj..3_4, Adj..4_11, Adj..4_5, Adj..5_10, Adj..5_11, Adj..5_6,
Adj..6_10, Adj..6_11, Adj..6_7, Adj..6_9, Adj..7_10, Adj..7_8, Adj..7_9, Adj..8_9, Adj..9_10)
summary(X)
cor(X)
res.pca <- princomp(X, scores=TRUE, cor=TRUE)
summary(res.pca)
fviz_pca_var(res.pca, col.var="contrib",
gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"),
repel = TRUE, # Avoid text overlapping
axes = c(1, 2) # choose PCs to plot
)
但是我得到的结果与Rcmdr 和SPSS 提供的结果不同!!!通过使用 SPSS 和 Rcmdr 包进行的 PCA 分析,第一 (PC1) 和第二 (PC2) 主成分分别解释了高达 81.94% 和 4.9%。而使用上面给出的脚本提供了一个 PCA 图,它解释了高达 46.7% 和 5.8% 的数据!!会不会是因为样本数量较多(125行)??
但是与 SPSS 提供的数据类似,同一脚本正确估计了其他数据(行数较少)的 PCA。哪里错了??
非常感谢
此致,
奥马尔
Results provided by Rcmdr and SPSS
Results provided by princomp() and prcomp()
终于找到错误了。实际上,我从数据中删除了异常值,因此缺少数据单元格,这些单元格在 SPSS 和 Rcmdr(R)中被平均值替换,而我使用的脚本(上面提供)将这些丢失的 cells/value 替换为零,这导致在完全不同的 PCA 估计中。
我有一个包含 27 个变量(列)和 125 个样本(行)的数据。我正在尝试使用此脚本进行一些 PCA 分析:
library("FactoMineR")
library("factoextra")
library(ggplot2)
mydata<- read.csv("Overall.csv", TRUE, ",")
mydata[is.na(mydata)]=0
attach(mydata)
X=cbind (Adj..1_12, Adj..1_13, Adj..1_2, Adj..10_11, Adj..11_12, Adj..12_13, Adj..2_11, Adj..2_12, Adj..2_13,
Adj..2_3, Adj..3_11, Adj..3_12, Adj..3_4, Adj..4_11, Adj..4_5, Adj..5_10, Adj..5_11, Adj..5_6,
Adj..6_10, Adj..6_11, Adj..6_7, Adj..6_9, Adj..7_10, Adj..7_8, Adj..7_9, Adj..8_9, Adj..9_10)
summary(X)
cor(X)
res.pca <- princomp(X, scores=TRUE, cor=TRUE)
summary(res.pca)
fviz_pca_var(res.pca, col.var="contrib",
gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"),
repel = TRUE, # Avoid text overlapping
axes = c(1, 2) # choose PCs to plot
)
但是我得到的结果与Rcmdr 和SPSS 提供的结果不同!!!通过使用 SPSS 和 Rcmdr 包进行的 PCA 分析,第一 (PC1) 和第二 (PC2) 主成分分别解释了高达 81.94% 和 4.9%。而使用上面给出的脚本提供了一个 PCA 图,它解释了高达 46.7% 和 5.8% 的数据!!会不会是因为样本数量较多(125行)??
但是与 SPSS 提供的数据类似,同一脚本正确估计了其他数据(行数较少)的 PCA。哪里错了??
非常感谢
此致,
奥马尔
Results provided by Rcmdr and SPSS
Results provided by princomp() and prcomp()
终于找到错误了。实际上,我从数据中删除了异常值,因此缺少数据单元格,这些单元格在 SPSS 和 Rcmdr(R)中被平均值替换,而我使用的脚本(上面提供)将这些丢失的 cells/value 替换为零,这导致在完全不同的 PCA 估计中。