R优化隐马尔可夫模型中的状态数

R优化隐马尔可夫模型中的状态数,r,R,我试图找到一种方法来优化R中隐马尔可夫模型(HMM)中的状态数。 在R中的HMM上有许多R包,但我在估计隐藏状态的最佳数量时遇到了困难。 感谢您的帮助。要调整隐藏状态的数量,您需要隐藏状态的可能数量向量nhs和性能度量perf()(某种可以评估模型好坏的错误度量)。然后为每个隐藏状态构建一个模型,并选择一个性能最佳的模型 下面是一个如何执行此操作的伪代码示例 nhs <- c(1, 2, 3, 5, 8, 11, 15) error <- rep(NA, length(nhs)) f

我试图找到一种方法来优化R中隐马尔可夫模型(HMM)中的状态数。 在R中的HMM上有许多R包,但我在估计隐藏状态的最佳数量时遇到了困难。
感谢您的帮助。

要调整隐藏状态的数量,您需要隐藏状态的可能数量向量
nhs
和性能度量
perf()
(某种可以评估模型好坏的错误度量)。然后为每个隐藏状态构建一个模型,并选择一个性能最佳的模型

下面是一个如何执行此操作的伪代码示例

nhs <- c(1, 2, 3, 5, 8, 11, 15)
error <- rep(NA, length(nhs))
for(i in 1:length(nhs)){
    fit <- train.HMM(data, nhs[i])
    error[i] <- perf(fit)
}
nhs[which.min(error)] # Optimal number of hidden states

nhs通过确定复发状态的复发分析图可能是一种近似确定初始隐藏状态数量的信息方法

根据数据集的大小和良好表现,BIC可能是一个合理的(并且计算更轻)替代性能度量……非常感谢您推荐BIC。这很有帮助。
...
for(i in 1:length(nhs)){
    pred <- vector("list", k)
    for(fold in 1:k){
        fit <- train.HMM(data[not.in.fold.k], nhs[i])
        pred[[fold]] <- predict(fit, data[in.fold.k])
    }
    error[i] <- perf(pred)
}
...