我目前有5个特征变量,其中有3个具有强正线性相关(相关系数大于0.9),一个是强负相关(-0.93),还有一个是弱相关(0.32)。据此,我想用只用两个特征变量来研究,其中一个来自强相关的,另一个是弱相关的量。
但希望通过PCA来增加说服力,而PCA的结果显示,也需要用前两主成份才能有较好描述能力。
现在我想通过计算5个特征变量与PCA各主成份的相关系数,来说明我只用上述所述的两个原特征变量是可行且和合理的。
代码如下:
In [274]: X4 = np.array([vst,pist,pfst,dpst,dtst]).T
...: pca = PCA(n_components=len(X4[0,:]))
...: newX4 = pca.fit_transform(X4)
...: print(pca.explained_variance_ratio_)
输出结果:[7.47001066e-01 2.00961585e-01 4.05419934e-02 1.14953559e-02 1.12435526e-32]
问题是:已经标准化的vst与第一主成份的关联系数,能这样计算吗?(英文有很多类似问题,但感觉回答都有些不太清楚,比如:
https://stats.stackexchange.com/questions/253718/correlation-between-an-original-variable-and-a-principal-component。不知道我这种直接的计算方法有什么问题?)
In [275]: np.corrcoef(vst,newX4[:,0])
Out[275]:
array([[ 1. , -0.97814345],
[-0.97814345, 1. ]])
vst与第二主成份的关联系数为
In [276]: np.corrcoef(vst,newX4[:,1])
Out[276]:
array([[1. , 0.01328437],
[0.01328437, 1. ]])
而pfst(与vst弱相关)与第1,2主成份关联系数如下:
In [277]: np.corrcoef(pfst,newX4[:,0])
Out[277]:
array([[ 1. , -0.25328476],
[-0.25328476, 1. ]])
In [278]: np.corrcoef(pfst,newX4[:,1])
Out[278]:
array([[ 1. , -0.96720554],
[-0.96720554, 1. ]])
补充问题:如果如上关联系数计算没有问题,那么可否通过这些关联系数,说明我选择vst,pfst来进一步研究是合理的?
谢谢!
--
FROM 218.68.227.*