Есть ли способ в R (встроенная функция) вычислить матрицу переходов для цепи Маркова из набора наблюдений?
Например, взять набор данных, подобный следующему, и вычислить матрицу перехода первого порядка?
dat<-data.frame(replicate(20,sample(c("A", "B", "C","D"), size = 100, replace=TRUE)))
r
markov-process
B_Miner
источник
источник
Ответы:
Я не сразу осведомлен о «встроенной» функции (например, в
base
или аналогичной), но мы можем сделать это очень легко и эффективно в несколько строк кода.Вот функция, которая принимает матрицу (а не фрейм данных) в качестве входных данных и создает либо countts перехода (
prob=FALSE
), либо, по умолчанию (prob=TRUE
), оценочные вероятности перехода.Если вам нужно вызвать его на фрейме данных, вы всегда можете сделать
Если вы ищете какой-либо сторонний пакет, то Rseek или поисковый сайт R могут предоставить дополнительные ресурсы.
источник
HMM
иRHMM
это может быть полезно.R
были очень привередливы в прошлом, особенно когда дело доходит до подгонки, и я никогда не находил тот, который мне действительно нравился или которому доверяли. Может быть, сейчас ситуация лучше. Я бы предположил, что они все поймут правильно. Если вам известно о таком решении, отправьте его в качестве ответа; Я был бы рад проголосовать!dat
фрейма данных, который OP дает в качестве примера, есть столбцы данных, и они хотят матрицу перехода на столбец, или общую матрицу перехода, или мы можем просто превратить матрицу в вектор?)Я только что загрузил новый пакет R
markovchain
, основанный на стиле программирования S4. Наряду с различными методами обработки объектов марковчейна S4 он содержит функцию для подбора цепи Маркова из последовательности состояний. Посмотри на:Это может помочь.
источник