我正在尝试在SAS中进行PCA;这是我写的原始代码:
ods output Eigenvalues=EVTABLE Eigenvectors=EVCTABLE;
PROC factor DATA=REPLACED_PRINCECOMP EIGENVECTORS;
RUN;
ods output close;
但是,当我用python sklearn pca对结果进行交叉检查时,累积的解释方差比率存在巨大差异(python在第一个特征向量中产生90%,而SAS仅产生5%)。
因此,我更改了代码,添加了METHOD=principal
:
ods output Eigenvalues=EVTABLE Eigenvectors=EVCTABLE;
PROC factor DATA=REPLACED_PRINCECOMP METHOD=principal COV EIGENVECTORS;
RUN;
ods output close;
现在,PCA结果返回到与python结果相同的范围(在第一个特征向量中解释了大约90%的方差)。
我想知道造成差异的原因是什么?是METHOD=principal
吗?但是我给人的印象是,根据documentation,默认方法是主体方法,这就是为什么我没有首先添加它的原因。
此外,后面的代码还具有一个奇怪的功能。它产生的特征值和特征向量数量比python的sklearn包PCA少。是因为我没有指定nfactor变量吗?