我知道可以将多个序列拟合到 hmmlearn 中,但在我看来,这些序列需要从相同的分布中提取。
是否可以使用从 hmmlearn 中的不同分布中提取的多个观察序列来拟合 GMHMM?
我的用例:我想用来自不同股票的 K 个金融时间序列拟合 GMHMM,并预测在指定时间产生 K 个股票价格的市场机制。所以矩阵输入的维度是 N(日期数)× K(股票数)。如果 hmmlearn 不能这样做,请告诉我是否可以使用 python 或 R 中的另一个包?谢谢你的帮助!
我知道可以将多个序列拟合到 hmmlearn 中,但在我看来,这些序列需要从相同的分布中提取。
是否可以使用从 hmmlearn 中的不同分布中提取的多个观察序列来拟合 GMHMM?
我的用例:我想用来自不同股票的 K 个金融时间序列拟合 GMHMM,并预测在指定时间产生 K 个股票价格的市场机制。所以矩阵输入的维度是 N(日期数)× K(股票数)。如果 hmmlearn 不能这样做,请告诉我是否可以使用 python 或 R 中的另一个包?谢谢你的帮助!
我对您的问题的处理方法是使用多变量高斯计算发射概率。
例如:假设K为2,即位置数为2。
在 hmmlearn 中,K 将被编码为均值矩阵的维度。
看,这个从 HMM 采样的例子有一个二维输出。换句话说,X.shape = (N, K),其中 N 是本例中样本 500 的长度,K 是输出的维度,即 2。
请注意,作者在轴上绘制了每个维度,即 x 轴绘制第一个维度 X[:, 0],y 轴绘制第二个维度 X[:, 1]。
要训练您的模型,请确保 X1 和 X2 与示例中的采样 X 具有相同的形状,并按照此处所述形成训练数据集。
总之,通过调整 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)