私はこのような形のデータを持っています
Broker.ポジション
IP BP SP IP IP ..
この形のような二次遷移行列を計算したい
BP IP SP
BPBP
SPSP
IPIP
BPSP
SPBP
IPSP
SPIP
BPIP
IPBP
私はこのような形のデータを持っています
Broker.ポジション
IP BP SP IP IP ..
この形のような二次遷移行列を計算したい
BP IP SP
BPBP
SPSP
IPIP
BPSP
SPBP
IPSP
SPIP
BPIP
IPBP
を使用embed
して、連続遷移のペアを生成し、
table
それらをカウントし、
apply
合計を計算してカウントを確率
dcast
にmelt
変換し、配列を data.frame に変換できます。
# Sample data
states <- sample(LETTERS[1:3], 1e5, replace=TRUE)
# Pairs of transitions
d <- embed( states, 3 )
colnames(d) <- c("today", "yesterday", "day before yesterday")
head(d)
# Count the transitions
counts <- table( as.data.frame( d ) )
# Divide by the total number of transitions, to have probabilities
probabilities <- counts
probabilities[] <- as.vector(counts) / rep( as.vector(apply( counts, 2:3, sum )), each=dim(counts)[1] )
# Check that the probabilities sum up to 1
apply( probabilities, 2:3, sum )
# Convert the 3-dimensional array to a data.frame
library(reshape2)
dcast( melt( probabilities ), yesterday + `day before yesterday` ~ today )