我一直在为这个问题而苦苦挣扎,任何帮助将不胜感激。
我正在尝试编写一个函数来根据马尔可夫模型的观测数据计算过渡矩阵。
我用来构建函数的初始数据看起来像这样;
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 个赛季中重复。但是,我很难弄清楚如何分辨引号中的东西。对不起,如果有一个非常明显的答案,但我是一个垃圾程序员。
非常感谢您的阅读!
此函数告诉您团队是否从第 1 季过渡到第 2 季的状态 2
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))
}
- 在第一行中,我选择特定团队的所有行。
- 第二行是确定每个条目的团队是否在赛季 1 中处于状态 1。
- 第三行是确定每个条目是否在赛季 2 中处于状态 2,
- 如果球队在相应赛季从未处于相应的状态,则返回 return 语句返回 0,否则返回 1(仅在没有重复的情况下有效,在这种情况下,它可能返回大于 1 的值)