【问题标题】:PCA in Matlab - Are the Principal Compoents re-arranged?Matlab中的PCA - 主成分是排列的吗?
【发布时间】:2013-03-24 01:28:10
【问题描述】:

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

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

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

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

所以我的问题是:

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

【问题讨论】:

  • 这不是一个量化金融问题。我将它发送到 Stack Overflow。

标签: pca matlab


【解决方案1】:

来自 Matlab 的 princomp 文档:

COEFF = princomp(X) 执行主成分分析 (PCA) n×p 数据矩阵 X,并返回主成分 系数,也称为载荷。 X 的行对应于 观察,变量列。 COEFF 是一个 p-by-p 矩阵,每个 包含一个主成分的系数的列。 该 列按分量方差递减的顺序排列。

【讨论】:

  • 感谢@michaelv2,有什么办法可以防止这种重新排列,或者至少在重新排列的方式上清楚地标记它们?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-03
  • 2015-12-09
  • 1970-01-01
  • 2012-10-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多