在R中作弊吸收马尔可夫链

时间:2014-01-08 17:32:18

标签: r matrix markov-chains

我正在构建一个阵容模拟器,它使用吸收马尔可夫链来模拟某个阵容得分的跑步次数。对阵容中的9名球员中的每一位球员都有不同的转换矩阵,并且使用以下功能模拟一场比赛:

simulate.half.inning9 <- function(P1,P2,P3,P4,P5,P6,P7,P8,P9,R,start=1){
    s <- start; path <- NULL; runs <- 0; zz=1;inn=1
    while(inn<10){
    s <- start; path <- NULL; 
    while(s<25){
    if(zz==1){
    P=P1
    }
    if(zz==2){
    P=P2
    }
    if(zz==3){
    P=P3
    }
    if(zz==4){
    P=P4
    }
    if(zz==5){
    P=P5
    }
    if(zz==6){
    P=P6
    }
    if(zz==7){
    P=P7
    }
    if(zz==8){
    P=P8
    }
    if(zz==9){
    P=P9
    }
    s.new <- sample(1:25,1,prob=P[s,])
    path <- c(path,s.new)
    runs <- runs+R[s,s.new]
    s <- s.new
    zz=ifelse(zz==9,1,zz+1)
}
inn=inn+1
runs
}
runs
}

Mat 1-9是单独的25x25转换矩阵。是的,我知道我应该使用一个清单!然后,我使用下一个函数来模拟1000个赛季的游戏,使用此功能尝试让它适应&#34; true&#34;数。

RUNS <- replicate(162000,simulate.half.inning9(mat1,mat2,mat3,
    mat4,mat5,mat6,mat7,mat8,mat9,R))

R是一个矩阵,它基本上告诉函数从一个状态到另一个状态可以获得多少次运行。

所以我的问题是,有没有办法欺骗这个系统以获得&#34; true&#34;不运行1000次的每个阵容模拟的数字?这样做的目的是看看哪个阵容产生了最多&#34;真正的&#34;运行。

因为有9个!设置阵容的方法,每次运行362880个不同的阵容1000次是不可行的。

谢谢!

0 个答案:

没有答案