I found this question interesting: Transition matrix
So following his setup, suppose I add a weight (xt2) to each row:
>df = data.frame(cusip = paste("A", 1:10, sep = ""), xt = c(1,2,3,2,3,5,2,4,5,5), xt1 = c(1,4,2,1,1,4,2,2,2,2),xt2=c(1:10));df
cusip xt xt1 xt2
1 A1 1 1 1
2 A2 2 4 2
3 A3 3 2 3
4 A4 2 1 4
5 A5 3 1 5
6 A6 5 4 6
7 A7 2 2 7
8 A8 4 2 8
9 A9 5 2 9
10 A10 5 2 10
Using the answer in that post, we get the transition matrix:
res <- with(df, table(xt, xt1))
xt1
xt 1 2 4
1 1 0 0
2 1 1 1
3 1 1 0
4 0 1 0
5 0 2 1
result <- res/rowSums(res) ;a
xt1
xt 1 2 4
1 1.0000000 0.0000000 0.0000000
2 0.3333333 0.3333333 0.3333333
3 0.5000000 0.5000000 0.0000000
4 0.0000000 1.0000000 0.0000000
5 0.0000000 0.6666667 0.3333333
But what if I want to compute the transition matrix weighted by the xt2 column? That is to say, when we generate res, we do not just count the frequency of change of state, we use actual numbers (the weight). For example, res[2,1] should be 4, and res[5,2] should be 9+10=19.
Therefore, the new res wanted should be like the following:
xt1
xt 1 2 4
1 1 0 0
2 4 7 2
3 5 3 0
4 0 8 0
5 0 19 6
And then, we can just calculate result using the same code above.
How can I achieve that res? Thank you.
P.S., Or is there any other way to "weight" the transition matrix?