是否可以在hmmlearn中拟合多元GMHMM?

时间:2018-09-02 22:00:12

标签: python hmmlearn expectation-maximization

我知道可以将多个序列拟合到hmmlearn中,但是在我看来,这些序列需要从相同的分布中提取。

是否可以用从hmmlearn中的不同分布得出的几个观测序列来拟合GMHMM?

我的用例: 我想用不同股票的K个金融时间序列拟合GMHMM,并预测在指定时间产生K股价的市场制度。 因此,矩阵输入的维数为N(日期数)×K(股票数)。 如果hmmlearn无法做到这一点,请告诉我是否可以在python或R中使用另一个包? 谢谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我对您的问题的处理方法是对排放概率使用多元高斯。

例如:假设K为2,即位置数为2。

在hmmlearn中,K将以均值矩阵的维数进行编码。

请参见,此示例Sampling from HMM具有二维输出。换句话说,X.shape =(N,K),其中N是这种情况下样本500的长度,K是输出的尺寸,即2。

请注意,作者在轴上绘制了每个尺寸,即x轴绘制了第一尺寸X [:, 0],y轴绘制了第二尺寸X [:, 1]。

要训练模型,请确保X1和X2与示例中的X形状相同,并按照here所述形成训练数据集。

总而言之,通过调整K(而不是K = 2)并将其转换为GMHMM而不是GaussianHMM,使示例适合您的情况。

# Another example
model = hmm.GaussianHMM(n_components=5, covariance_type="diag", n_iter=100)

K = 3 # Number of sites
model.n_features = K # initialise that the model has size of observations =  K 

# Create a random training sequence (only 1 sequence) with length = 100.
X1 = np.random.randn(100, K) # 100 observation for K sites
model.fit(X1)

# Sample the fitted model
X, Z = model.sample(200)