2017-09-26 21 views
0

나는 미래의 시점에서 상태 벡터 요소를 풀기 위해 각 단계에서 이산 마르코프 체인의 초기 상태 벡터를 늘리려고하고 있습니다. 꽤 귀찮은 것 같습니다.Markov Chain 원하는 벡터 요소를 풀 수있는 초기 상태 벡터 조정

간단한 예를 들어, 기업이 (항목 수준, 수준 올리기, 회사 종료) 3 가지 전환 상태를 가진 초보 수준 직원으로 구성된 초기 상태 벡터를 갖고 있다고 가정합니다. 1000 엔트리 레벨의 직원 초기 상태 벡터는 다음과 같이 정의된다 :

승진, 또는 회사를 떠나는 지, 엔트리 레벨을 나머지의 전환 행렬이 주어진다
initialstate <- t(as.matrix(c(1000,0,0))) 

두 번 반복 한 후

transitionmatrix <- matrix(c(0.5,0,0,0.2,1,0,0.3,0,1),nrow = 3,ncol = 3) 

:

step1state <- initialstate%*%transitionmatrix 

(남아 500 엔트리 레벨의 직원)

step2state <- step1state%*%transitionmatrix 

(남아 250 엔트리 레벨의 직원)

step2state 후, 나는 250 명 엔트리 레벨의 직원이 남아있다, 그러나 나는 1300 명 엔트리 레벨의 직원이 1 단계 2,000 엔트리 레벨의 직원 후 2 단계 후이 작업을 수행한다고 가정 나는 상태 벡터를 증가시킴으로써 추가 직원을 고용한다. 이제는 initialstate 행렬을 1 단계에서 새 채용을 고려하여 증가시키고 2 단계에서 엔트리 레벨 직원 수를 관찰 한 다음 step1state을 증가시켜 2 단계 목표를 달성하는 번거로운 프로세스가됩니다. 예를 들어

, 이전 마르코프 체인을 실행 한 후, 다시 그것을 실행하고 1 단계에서 800 명 신규 채용을 추가

step1state <- initialstate%*%transitionmatrix + t(as.matrix(c(800,0,0))) 
step2state <- step1state%*%transitionmatrix 

1 단계 원하는대로 1,300 엔트리 레벨의 직원을 고용하고 있지만, 2 단계는 이제 1350이 필요합니다 초급 직원은 고용했다 (초기 실행시 1,750 명에서 감소). 다음을 만족하는 각 기간 내 채용 목표 :

step1state <- initialstate%*%transitionmatrix + t(as.matrix(c(800,0,0))) 
step2state <- step1state%*%transitionmatrix + t(as.matrix(c(1350,0,0))) 

어떤 단계에서 내 엔트리 레벨의 직원 대상 변경, 내가 엔트리 레벨의 직원의 수에 따라 이후에 있기 때문에 모든 단계에 대한 마르코프 체인을 다시 실행해야하는 경우 이전 기간의 종업원 수 (전환 확률은 그렇지 않음). R의 MarkovChain 패키지는 각 단계마다 특정 값에 대한 상태 벡터를 풀 수있는 것 같지 않았으므로 기본 마르코프 체인을 실행하고 반복적으로 각 초기 상태 벡터에 새 직원을 추가하여 원하는 대상을 얻습니다. 각 단계.

더 좋은 방법이 있나요? 마르코프 체인은 제가 성취하고자하는 목표에 적합한 모델입니까?

답변

0

저는 "달성하려는 대상에 대해 Markov Chain을 모델의 올바른 선택입니까?"라고 말하려합니다. 실제로 달성하려는 목표를 실제로 이해하지 못하기 때문에 그것은 "Markov Chain"이 의미하는 바를 완전히 분명히합니다. 초기 상태 벡터로부터 일련의 "Markov"천이를 반복하려고합니다.1,000 신입 사원의 출발 벡터 상태의 n 반복 후의 상태가 될 것이다

library(expm) 
initialstate %*% (transitionmatrix %^% n) 

expm -package는 한번에 마르코프의 n 반복의 결과를 산출 할 수있는 행렬 지수 연산자 %^% 구현 전이 행렬.

그래서 25 번 반복 한 후이있을 것이다 :

> initialstate %*% (transitionmatrix %^% 25) 
      [,1] [,2] [,3] 
[1,] 2.980232e-05 400 600 

.... 400 승진 개인과 600 "졸업생". 이것은 모두 선형입니다. 따라서 여러분이 2000로 시작한다면 여러분은 그 상태에서 각각 800과 1200을가집니다. 그리고 그 비율이 2 : 3이라는 것은 놀라운 일이 아닙니다. 그 이유는 첫 번째 열의 두 번째 및 세 번째 요소로 인해 전환을 수행하는 숫자의 비율이기 때문입니다. 열 2와 3의 대각선에있는 1은 그 "흡수 상태"를 만듭니다. 일단 "승진"을 받으면 승진을 계속합니다. 출구가 없습니다. 당신이 독수리 팬이라면 호텔 캘리포니아처럼. 일단 "떠날"경우 반환 할 수 없습니다.