Я пытаюсь проверить в реализации HMM, сравнивая результаты с функцией из пакета HSMM в R.
Функция hsmm () работает нормально, когда она решается в смоделированных наблюдениях, как показано в описании пакета.
Проблема в том, что когда я пытаюсь использовать реальные наблюдения, модель не проходит через EM-алгоритм.
Чтобы убедиться, что векторы наблюдений совпадают, я объединил их при переключении между obs3 [, 1] и obs3 [, 2], это все еще только моделируемые наблюдения, которые повторяются в алгоритме EM.
Где я ошибся?
# Simulating observations:
# (see hsmm.sim for details)
pipar <- rep(1/3, 3)
tpmpar <- matrix(c(0, 0.5, 0.5,
0.7, 0, 0.3,
0.8, 0.2, 0), 3, byrow = TRUE)
rdpar <- list(p = c(1, 1, 1))
odpar <- list(mean = c(-1.5, 0, 1.5), var = c(0.5, 0.6, 0.8), df = c(1,2,5))
sim <- hsmm.sim(n = 2000, od = "t", rd = "geom",
pi.par = pipar, tpm.par = tpmpar,
rd.par = rdpar, od.par = odpar, seed = 3539)
obs <- sim$obs
obs2 <- LnR.SP[1:2000,2]
obs3 <- cbind(obs, obs2)
# Executing the EM algorithm:
fit <- hsmm(obs3[,1], od = "t", rd = "geom",
pi.par = pipar, tpm.par = tpmpar,
od.par = odpar, rd.par = rdpar, epsilon = 10e-10)
# The log-likelihood:
fit$logl
# Ehe estimated parameters:
fit$para