Accord.NET估计Muliple回归HMM模型

时间:2012-10-08 19:11:44

标签: c# matlab hidden-markov-models

Accord.NET项目主页(http://code.google.com/p/accord/)包含基于单变量观测序列创建,训练和评估隐马尔可夫模型的示例。我想做同样的事情,但是有许多变量的序列。我正在设想一个带有因变量和多个自变量的多元回归结构。我希望能够估计HMM,其中输出包括每个状态的估计截距和系数,以及转移概率矩阵。一个例子是股票收益的时变beta。例如ret(IBM)= intercept + b1 * ret(Index)+ b2 * ret(SectorETF)+错误,但是拦截,b1和b2是状态相关的。

Marcelo Perlin在他的MS_Regress package for Matlab中提供了这个功能。但是,我希望在C#中使用此功能。因此,任何帮助都将在(1)使用Accord.NET库估计多元回归HMM模型,(2)将Marcelo Perlin的包转换为C#,或(3)关于如何实现我的目标的其他想法中受到高度赞赏。 / p>

谢谢!

1 个答案:

答案 0 :(得分:3)

Accord.NET Framework也支持多维功能。您可以使用泛型指定要在状态中使用的任何概率分布,还有example available in the documentation

如果你有二维观测向量,并选择假设高维发射密度的多维模型,你可以使用:

// Assume a Normal distribution for two-dimensional samples.
var density = new MultivariateNormalDistribution(dimension: 2);

// Create a continuous hidden Markov Model with two states organized in a forward
// topology and an underlying multivariate Normal distribution as emission density.      
var model = new HiddenMarkovModel<MultivariateNormalDistribution>(new Forward(2), density);

然后您可以使用通常的Baum-Welch,Viterbi或Maximum Likelihood学习者的通用版本来学习该模型。

但是,遗憾的是,框架仍然不支持的是您提到的确切回归形式。但它看起来很有趣。也许它可以在未来的某个地方添加到框架中。如果您愿意,请将其作为建议与项目问题跟踪器中的一些参考文献和论文一起留下。这似乎是一个非常有用的补充。