在马尔可夫模型中的状态之间移动 - 如何判断R?

时间:2012-06-21 19:59:39

标签: r markov-models

我一直在努力解决这个问题,并且非常感谢任何帮助。

我正在尝试编写一个函数来计算马尔可夫模型的观测数据的转移矩阵。

我用来构建函数的初始数据看起来像这样;

 Season                 Team State
1        1    Manchester United     1
2        1              Chelsea     1
3        1      Manchester City     1
.
.
.
99       5    Charlton Athletic     4
100      5              Watford     4

有5个赛季和4个州。

我知道我将如何计算转换矩阵,但为了做到这一点,我需要计算每个赛季从状态i转移到状态j的球队数量。

我需要能做类似这样的事情的代码,

a<-function(x,i,j){
if("team x is in state i in season 1 and state j in season 2") 1 else 0
}
sum(a)

然后我可以为每个队和一对州做到这一点并重复所有5个赛季。但是,我很难理解如何用引号告诉R这个东西。很抱歉,如果有一个非常明显的答案,但我是一个垃圾程序员。

非常感谢您的阅读!

1 个答案:

答案 0 :(得分:1)

此功能告诉您团队是否从state1转换到state2从season1到season2

a <- function(team, state1, state2, data, season1, season2) {  
  team.rows = data[team == data["Team",],]   
  in.season1.in.state1 = ifelse(team.rows["Season",]==season1 && team.rows["State",state1],1,0)
  in.season2.in.state2 = ifelse(team.rows["Season",]==season2 && team.rows["State",state2],1,0)   
  return(sum(in.season1.in.stat1) * sum(in.season2.in.state2)) 
}
  • 在第一行中,我选择特定团队的所有行。
  • 如果球队在第一季中处于state1状态,则第二行是确定每个条目。
  • 如果团队在第2季中处于state2状态,则第三行是确定每个条目
  • 如果团队在相应的季节中从不处于相应状态,则return语句返回0,否则返回1(仅在没有重复的情况下才有效,在这种情况下,它可能返回大于1的值)