Я не сразу осведомлен о «встроенной» функции (например, в base
или аналогичной), но мы можем сделать это очень легко и эффективно в несколько строк кода.
Вот функция, которая принимает матрицу (а не фрейм данных) в качестве входных данных и создает либо countts перехода ( prob=FALSE
), либо, по умолчанию ( prob=TRUE
), оценочные вероятности перехода.
# Function to calculate first-order Markov transition matrix.
# Each *row* corresponds to a single run of the Markov chain
trans.matrix <- function(X, prob=T)
{
tt <- table( c(X[,-ncol(X)]), c(X[,-1]) )
if(prob) tt <- tt / rowSums(tt)
tt
}
Если вам нужно вызвать его на фрейме данных, вы всегда можете сделать
trans.matrix(as.matrix(dat))
Если вы ищете какой-либо сторонний пакет, то Rseek или поисковый сайт R могут предоставить дополнительные ресурсы.