2014-04-09 53 views
0

我有一個轉換矩陣米:R:轉移矩陣轉移概率矩陣

m <- matrix(c(0, 0, 1, 0, 0, 0, 0, 
       0, 1, 1, 0, 0, 0, 0, 
       1, 0, 1, 1, 0, 0, 0, 
       0, 0, 0, 1, 1, 0, 0, 
       0, 0, 0, 0, 0, 0, 1, 
       0, 0, 0, 0, 0, 1, 1, 
       0, 0, 0, 1, 1, 0, 1), 
      nrow = 7, ncol = 7, byrow = TRUE, 
      dimnames = list(c("d1", "d2", "d3", "d4", "d5", "d6", "d7"), 
          c("d1", "d2", "d3", "d4", "d5", "d6", "d7")) 
      ); 

和想的轉移概率矩陣,如下所示(加入至多1.0的每一行)。

0.00 0.00 1.00 0.00 0.00 0.00 0.00 
0.00 0.50 0.50 0.00 0.00 0.00 0.00 
0.33 0.00 0.33 0.33 0.00 0.00 0.00 
... 

有沒有一個標準函數可以讓我做到這一點?

回答

3

您可以使用prop.table

prop.table(m, 1) 

      d1 d2  d3  d4  d5 d6  d7 
d1 0.0000000 0.0 1.0000000 0.0000000 0.0000000 0.0 0.0000000 
d2 0.0000000 0.5 0.5000000 0.0000000 0.0000000 0.0 0.0000000 
d3 0.3333333 0.0 0.3333333 0.3333333 0.0000000 0.0 0.0000000 
d4 0.0000000 0.0 0.0000000 0.5000000 0.5000000 0.0 0.0000000 
d5 0.0000000 0.0 0.0000000 0.0000000 0.0000000 0.0 1.0000000 
d6 0.0000000 0.0 0.0000000 0.0000000 0.0000000 0.5 0.5000000 
d7 0.0000000 0.0 0.0000000 0.3333333 0.3333333 0.0 0.3333333 

這裏,參數1意味着該函數分別適用於每一行。

+0

這裏的結果: D0 D1 D2 D3 D4 D5 D6 D0 0.0000000 0.0 1.0000000 0.0000000 0.0000000 0.0 0.0000000 D1 0.0000000 0.5 0.5000000 0.0000000 0.0000000 0.0 0.0000000 D2 0.3333333 0.0 0.3333333 0.3333333 0.0000000 0.0 0.0000000 D3 0.0000000 0.0 0.0000000 0.5000000 0.5000000 0.0 0.0000000 D4 0.0000000 0.0 0.0000000 0.0000000 0.0000000 0.0 1.0000000 D5 0.0000000 0.0 0.0000000 0.0000000 0.0000000 0.5 0.5000000 D6 0.0000000 0.0 0.0000000 0.3333333 0.3333333 0.0 0.3333333你知道爲什麼有些值是圓的和其他人都沒有?只是出於好奇... – RalfB

+0

@RalfB在你輸出的時候,數字最多有7個數字。如果該號碼可以用較少的數字顯示(例如,「0.5」),則用較少的數字顯示該號碼,除非在具有較高數字位數的同一列中有數字。請注意,一列中的所有值都具有相同的位數。 –