Good evening I have set up a function to calculate the probability of moving from state i to j over time s to t in a time inhomegenous Markov jump process. I am happy with the function to create the generator matrix but when I input this into another function as part of a loop it is not working for me. I attach my code, can you spot my error? Thank you

Hello The problem is with the loop in your P_s_t function, you're missing some brackets. I've highlighted where you need to put them in red below: P_s_t <- function(s,t,h){ Q <- diag(3) for(j in 1:((t-s)/h)){ Z = P_t_t_h(s+(j-1)*h,h) Q = Q %*% Z Pr = Q } Pr } To see the difference with and without the brackets see the below: Without the brackets: > 1: (35-25)/(1/12) [1] 12 24 36 48 60 72 84 96 108 120 This first calculates 1: (35-25), which is 1,2,3,4,...,9,10 and then divides by (1/12) to get 12,24,....,120. This is not what we want. With the brackets: > 1: ((35-25)/(1/12)) [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 [29] 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 [57] 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 [85] 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 [113] 113 114 115 116 117 118 119 120 This is what we want, we want intervals of 1/12 over a length of 10, so we want to iterate 120 times. You can also trim down some of your code. Not essential, but could save you some time. I've put some adjusted functions below: P_t_t_h <- function(t,h){ diag(3) + h*gen_t(t) } P_s_t <- function(s,t,h){ Q <- diag(3) for(j in 1:((t-s)/h)){ Z = P_t_t_h(s+(j-1)*h,h) Q = Q %*% Z } Q } Hope that helps! Andy

Thank you Andy, that makes complete sense, and something I had not thought to check. It will be in my toolbox for error checking from now on. Thank you.

A quick follow up on this Andy, in the very last part of the question (iv) the commentary mentions that the model assumes the number of voters remains constant. Is this a characteristic of the Markov 3 state model? Thank you