Greetings,
Моя цель - создать марковскую матрицу перехода (вероятность перехода из одного состояния в другое), где часть матрицы с наибольшим трафиком занимает верхнюю левую часть.Рассмотрим следующий пример:
inputData <- c(
c(5, 3, 1, 6, 7),
c(9, 7, 3, 10, 11),
c(1, 2, 3, 4, 5),
c(2, 4, 6, 8, 10),
c(9, 5, 2, 1, 1)
)
MAT <- matrix(inputData, nrow = 5, ncol = 5, byrow = TRUE)
colnames(MAT) <- c("A", "B", "C", "D", "E")
rownames(MAT) <- c("A", "B", "C", "D", "E")
rowSums(MAT)
Я хочу переставить элементы этой матрицы таким образом, чтобы элементы с наибольшей суммой строк были расположены слева вверху в порядке убывания.Имеет ли это смысл?В этом случае порядок, который я ищу, будет B, D, A, E, C. Есть мысли?
В качестве отступления, вот функция, которую я написал для построения матрицы перехода.Есть ли более элегантный способ сделать это, не требующий двойной транспонирования?
TMAT <- apply(t(MAT), 2, function(X) X/sum(X))
TMAT <- t(TMAT)
Я попробовал следующее:
TMAT <- apply(MAT, 1, function(X) X/sum(X))
Но моя пользовательская функция все еще применяетсяпо столбцам массива, а не по строкам.Для проверки попробуйте:
rowSums(TMAT)
colSums(TMAT)
Суммы строк здесь должны равняться 1 ...
Заранее большое спасибо, Аарон