-1

私はこのような形のデータを持っています

Broker.ポジション

IP BP SP IP IP ..

この形のような二次遷移行列を計算したい

             BP IP SP

BPBP

SPSP

IPIP

BPSP

SPBP

IPSP

SPIP

BPIP

IPBP

4

1 に答える 1

2

を使用embedして、連続遷移のペアを生成し、 tableそれらをカウントし、 apply合計を計算してカウントを確率 dcastmelt変換し、配列を 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 )
于 2013-04-10T17:22:37.050 に答える