我有一个时间序列的历史数据(利率),在这里我设法提取了eigenValues和eigenVectors。
我正在尝试在利率与另一个金融数据系列之间生成/推断某种关系。给定我有eigenVectors,我该如何提取该移动的特定日期(或某个点)的权重?
例如,下面的代码从名为data_的数据集中提取前三个pca向量。
eigVal, eigVec = np.linalg.eig((data_.diff(-1)*100).cov())
if np.sign(eigVec[:,0][5]) == -1: #swtich such that eigVec are positiv for PCA1
eigVec = -1 * eigVec
plt.plot(eigVec[:,0])
plt.plot(eigVec[:,1])
plt.plot(eigVec[:,2])
plt.legend(['PCA1', 'PCA2', 'PCA3'])
我如何推断下面的阵列示例,为复制阵列移动分配给PCA1,PCA2和PCA3的权重是多少?
此数组是我想要得到的。
array([ 0. , 0. , -0.3 , 1.9 , 1.7 , 1.3 , 1.4 , 1.3 , 1.3 ,
1.36, 1.3 ])
这是eigenVector 2
array([-0.16562563, -0.26507723, -0.34871106, -0.47812195, -0.44021972,
-0.25093085, -0.16544612, 0.00289244, 0.17209837, 0.28198136,
0.3985353 ])
这是eigenVector 1
array([0.01448251, 0.03349128, 0.0559946 , 0.1639687 , 0.24343858,
0.32155586, 0.36727468, 0.38627769, 0.41226496, 0.41694435,
0.42199623])
使用下面的代码,其中y_ =您要命中的数组eigVec [:,0] =是您使用linalg.eig()从中提取的第一个PCA向量。...