0

我正在尝试对一些波动率数据进行 PCA,假设我可以提出如下模型:

volatility = bata0 + beta1*x + beta2* x^2

其中 x 是一些观察值,例如金钱等。所以在 Matlab 中,我所做的就是说Y=[ones x x^2]然后做pca(Y) ,由于某种原因,我的系数矩阵中的第一行总是类似于 0 0 1,即除了最后一列之外的其他任何地方都为 0,并且 atent 的输出总是显示无论我如何更改模型,第一行的最高值也是如此。

显然,这不可能是每个模型中的最后一项都可以通过等式中的最后一项很好地解释的情况。如果我删除 Y 中的常数项(即 Y= [xx^2] 则系数矩阵的第一行变得更正常(即,到处都是非零值)。

所以我的问题是:

  1. 我做 PCA 的方式对吗?
  2. PCA 是否自动重新排列主成分,因此系数矩阵中除最后一列除 1 外全为零的第一行可能不一定代表方程中的最后一项,并且
  3. 如果错了,正确的做法是什么?
4

1 回答 1

0

From Matlab's documentation for princomp:

COEFF = princomp(X) performs principal components analysis (PCA) on the n-by-p data matrix X, and returns the principal component coefficients, also known as loadings. Rows of X correspond to observations, columns to variables. COEFF is a p-by-p matrix, each column containing coefficients for one principal component. The columns are in order of decreasing component variance.

于 2013-03-24T13:00:28.503 回答