r - 如何使用 depmixS4 包比较 R 中隐马尔可夫模型中的状态?
问题描述
我正在使用我从这个博客中缩减的这个最小示例,我想知道如何正确匹配状态。示例代码模拟了两种状态,状态 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
解决方案
推荐阅读
- swift - 更新到最新 iOS 15 测试版后出现灰屏,Xcode 警告 _disableAlpha
- jenkins - 詹金斯 - 从第一阶段保持流程直到管道结束
- reactjs - db.collection("users").onSnapshot 不会在 forEach 中循环,我正在尝试检索所有用户并列出他们的所有文档和集合
- sql - 从存储过程中删除参数
- flutter - 如何在 Flutter 中访问 Document Snapshot 中的数据
- javascript - 如何将字符串数组的元素连接成由空格连接到一定长度的较大字符串
- app-store-connect - 我可以通过自己的帐户发布为客户构建的应用程序吗?
- tcl - Tcl - 在被调用函数中追加或修改嵌套列表
- angular - 无法使用嵌入式 setInterval 进行观察以在测试中工作
- php - 将 PHP MMddyyyyHHmmss 中的日期格式化为 mdy