Можно ли вписать многомерный GMHMM в hmmlearn? - PullRequest
0 голосов
/ 03 сентября 2018

Я знаю, что можно втиснуть несколько последовательностей в hmmlearn, но мне кажется, что эти последовательности должны быть взяты из одинаковых распределений.

Возможно ли установить GMHMM с несколькими последовательностями наблюдений, взятыми из разных распределений в hmmlearn?

Мой вариант использования: Я хотел бы установить GMHMM с K финансовыми временными рядами из разных акций и предсказать рыночный режим, который генерировал цены K акций в указанное время. Таким образом, матричный вход имеет размерность N (количество дат) × K (количество акций). Если hmmlearn не может этого сделать, скажите, пожалуйста, возможно ли это с другим пакетом на python или R? Спасибо за помощь!

1 Ответ

0 голосов
/ 07 февраля 2019

Мой подход к вашей проблеме будет состоять в использовании многовариантного гауссиана для вероятностей выбросов.

Например: предположим, что 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)
...