Czy istnieje sposób w R (funkcja wbudowana) do obliczenia macierzy przejścia dla łańcucha Markowa na podstawie zestawu obserwacji?
Na przykład biorąc zestaw danych jak poniżej i obliczyć macierz przejścia pierwszego rzędu?
dat<-data.frame(replicate(20,sample(c("A", "B", "C","D"), size = 100, replace=TRUE)))
r
markov-process
B_Miner
źródło
źródło
Odpowiedzi:
Nie jestem od razu świadomy funkcji „wbudowanej” (np. W
base
lub podobnej), ale możemy to zrobić bardzo łatwo i skutecznie w kilku liniach kodu.Oto funkcja, która przyjmuje na wejściu macierz (a nie ramkę danych) i generuje albo liczbę przejść (
prob=FALSE
), albo domyślnie (prob=TRUE
) szacowane prawdopodobieństwo przejścia.Jeśli chcesz wywołać go w ramce danych, zawsze możesz to zrobić
Jeśli szukasz pakietu innej firmy, Rseek lub witryna wyszukiwania R mogą zapewnić dodatkowe zasoby.
źródło
HMM
iRHMM
które mogą być pomocne.R
były bardzo wybredne, szczególnie jeśli chodzi o dopasowanie i nigdy nie znalazłem takiego, który naprawdę mi się podobał lub którym ufał. Może teraz sytuacja jest lepsza. Wyobrażam sobie jednak, że dobrze to zrobią. Jeśli znasz takie rozwiązanie, prześlij je jako odpowiedź; Z przyjemnością zagłosuję!dat
ramka danych, którą OP podaje jako przykład, zawiera kolumny danych i czy chcą macierzy przejścia na kolumnę, czy ogólnej macierzy przejścia, czy możemy po prostu przekształcić macierz w wektor?)Właśnie przesłałem nowy pakiet R
markovchain
, oparty na stylu programowania S4. Wraz z różnymi metodami obsługi obiektów markovchain S4 zawiera funkcję dopasowania łańcucha Markowa z sekwencji stanów. Spójrz na:To może pomóc.
źródło