私はこのような形のデータを持っています
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 )