Как сравнить состояния в скрытых марковских моделях в R с помощью пакета depmixS4? - PullRequest
0 голосов
/ 26 апреля 2019

Я работаю с этим минимальным примером, который я сократил с этого блога , и мне интересно, как правильно сопоставить состояния. Пример кода имитирует два состояния: состояние 1 - это положительная доходность с низкой волатильностью, а состояние 2 - отрицательная доходность с высокой волатильностью. Если вы запустите код несколько раз, вы увидите, что иногда HMM точен на 100%, а иногда - на 0%. Я думаю, что это просто вопрос классификации, какой режим волатильности является состоянием 1, а какой - состоянием 2. Как получить согласованный результат?

  library('depmixS4')
  bull_mean <- 0.2
  bull_var <- 0.05
  bear_mean <- -0.1
  bear_var <- 0.1

  # Create the various bull and bear markets returns
  bull <- rnorm(100, bull_mean, bull_var )
  bear <- rnorm(100, bear_mean, bear_var )

  # Create the list of true regime states and full returns list
  true_regimes <- c(rep(1, 100), rep(2, 100))
  returns <- c(bull, bear)

  # Create and fit the Hidden Markov Model
  hmm <- depmix(returns ~ 1, family = gaussian(), nstates = 2, data=data.frame(returns=returns))
  hmmfit <- fit(hmm, verbose = FALSE)
  post_probs <- posterior(hmmfit)
  output <- data.frame(pred = post_probs$state, true_regimes = true_regimes)
  table(output)
  accuracy = sum(post_probs$state == true_regimes) / nrow(post_probs)
  accuracy

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...