Создать объект цепочки Маркова из матрицы перехода - PullRequest
0 голосов
/ 05 апреля 2019

У меня есть матрица перехода с 4 строками и 16 столбцами, содержащая вероятность перехода из одной статьи в Википедии в другую.Сумма моих строк была нормализована и равна 1.

Вот обзор:

dput(head(res,4))
structure(c(0.0269201326869099, 0.221418475097697, 0.0572200491955321, 
0.0234890665263753, 0.0931927078903348, 0.203375737923007, 0.310133473123916, 
0.220087000151008, 0.00266507896005217, 0.0293922008813503, 0.00467760796806323, 
0.0045399854837374, 0.00598225170820221, 0.0235719630830631, 
0.0370176216782935, 0.00138830028204416, 0.0424711519378526, 
0.0206618441839195, 0.0414532844066293, 0.0344054908493962, 0.0334552465198038, 
0.0453978548266401, 0.166498649139078, 0.0243074330084224, 0.391312976666383, 
0.34181425126798, 0.131335940965361, 0.113533735696854, 0.190425562076493, 
0.0283528727030847, 0.00129037461187951, 0.0467297003707005, 
0.0281959683592753, 0.061278789390538, 0, 0.0299483162596755, 
0, 0.0158809345638979, 0.0305254244122747, 0, 0.0255592413030535, 
0, 0.0753659421750877, 0.0176874327161486, 0, 0, 0.0458082987217227, 
0, 0.0268350769754189, 0, 0.0630670591556111, 0.260016464754222, 
0, 0, 0.000846808339045929, 0.00347318631964031, 0.0287771823877973, 
0.00253596075496799, 0.0145570385902657, 0.0108920681777219, 
0.104207422528423, 0.00631911532385466, 0.0202024275172386, 0.209501819404054
), .Dim = c(4L, 16L), .Dimnames = list(c("Selected Disease Article", 
"Selected Food Scandal Article", "Selected General Article", 
"Selected Pathogen Article"), c("Animal health", "Biology", "Environment", 
"Food industry", "General", "Human and animal health", "Human health", 
"Medicine", "Other", "Related to a Food scandal", "Related to Antibiotic resistance", 
"Related to Food poisoning", "Selected Disease Article", "Selected Food Scandal Article", 
"Selected General Article", "Selected Pathogen Article")))

Я следовал приведенному ниже коду, но застрял в определении моего объекта цепочки Маркова

states <- as.character(1:16)

mc <- new(
    "markovchain",
    states = states,
    byrow = TRUE,
    transitionMatrix = res,
    name = "random_walk");

Я получаю ошибку: Ошибка в dimnames (x) <- dn: длина 'dimnames' [2] не равна степени массива </p>

В чем проблема в моем коде?Я что-то не так делаю при создании функции цепочки Маркова?

1 Ответ

0 голосов
/ 05 апреля 2019

Это больше фундаментальная проблема с вашей (переходной) марковской матрицей , которая является m x n матрицей, это должна быть n x n матрица:

http://www.math.harvard.edu/~knill/teaching/math19b_2011/handouts/lecture33.pdf

Вероятно, поэтому вы получаете dimnames error, поскольку объект ожидает, что dimnames будет такой же длины, см. Стр. 4 документации:

https://cran.r -project.org / веб / пакеты / Цепь Маркова / markovchain.pdf

Классный вид цепей марков:

http://setosa.io/ev/markov-chains/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...