Existe uma maneira no R (uma função interna) de calcular a matriz de transição para uma cadeia de Markov a partir de um conjunto de observações?
Por exemplo, usando um conjunto de dados como o seguinte e calculando a matriz de transição de primeira ordem?
dat<-data.frame(replicate(20,sample(c("A", "B", "C","D"), size = 100, replace=TRUE)))
r
markov-process
B_Miner
fonte
fonte
Respostas:
Não estou imediatamente ciente de uma função "interna" (por exemplo, in
base
ou similar), mas podemos fazer isso com muita facilidade e eficiência em algumas linhas de código.Aqui está uma função que usa uma matriz (não um quadro de dados) como entrada e produz as contagens de transição (
prob=FALSE
) ou, por padrão (prob=TRUE
), as probabilidades estimadas de transição.Se precisar chamá-lo em um quadro de dados, você sempre poderá
Se você estiver procurando por algum pacote de terceiros, o Rseek ou o site de pesquisa do R poderá fornecer recursos adicionais.
fonte
HMM
eRHMM
que podem ser úteis.R
ser muito mimado no passado, especialmente quando se trata de montagem e eu nunca encontrou um que eu realmente gostava ou confiável. Talvez a situação esteja melhor agora. Eu imaginaria que eles acertariam isso, no entanto. Se você souber de uma solução, envie-a como resposta; Eu ficaria feliz em votar!dat
quadro de dados que o OP fornece como exemplo tem colunas de dados, e eles querem uma matriz de transição por coluna ou uma matriz geral de transição ou podemos apenas transformar a matriz em um vetor?)Acabei de enviar um novo pacote R
markovchain
, baseado no estilo de programação S4. Juntamente com vários métodos para manipular objetos markovchain S4, ele contém uma função para ajustar uma cadeia Markov a partir de uma sequência de estados. Dê uma olhada em:Isso poderia ajudar.
fonte