Ich habe eine Übergangsmatrix als eine 'von Cluster' (Zeilen) 'zu Cluster' (Spalten) Frequenz erstellt. Denken Sie Markov-Kette.Übergangsmatrix Kraft ncol zu gleichen nrows
Angenommen, ich habe 5 Cluster, aber nur 3 Cluster, dann bekomme ich eine 5 * 3 Übergangsmatrix. Wie kann man eine 5 * 5 Übergangsmatrix erzwingen? Effektiv, wie ich die Nullspalten zeige?
Ich bin nach einer eleganten Lösung, da dies auf ein viel größeres Problem mit Hunderten von Clustern angewendet wird. Ich bin wirklich ziemlich unbekannt mit R Matrix's und meines Wissens, ich kenne keine elegante Möglichkeit, Anzahl der Spalten zu zwingen, Anzahl der Zeilen einzugeben, dann Nullstellen, wo keine Übereinstimmung, außer der Verwendung einer for-Schleife, die meine Ahnung ist, ist nicht die beste Lösung.
Beispielcode:
# example data
cluster_before <- c(1,2,3,4,5)
cluster_after <- c(1,2,4,4,1)
# Table output
table(cluster_before,cluster_after)
# ncol does not = nrows. I want to rectify that
# I want output to look like this:
what_I_want <- matrix(
c(1,0,0,0,0,
0,1,0,0,0,
0,0,0,1,0,
0,0,0,1,0,
1,0,0,0,0),
byrow=TRUE,ncol=5
)
# Possible solution. But for loop can't be best solution?
empty_mat <- matrix(0,ncol=5,nrow=5)
matrix_to_update <- empty_mat
for (i in 1:length(cluster_before)) {
val_before <- cluster_before[i]
val_after <- cluster_after[i]
matrix_to_update[val_before,val_after] <- matrix_to_update[val_before,val_after]+1
}
matrix_to_update
# What's the more elegant solution?
Vielen Dank im Voraus für Ihre Hilfe. Es ist sehr geschätzt.
BTW, meinst du, die Zeilen seien * von * und die Spalten * zu *? Normalerweise ist die Übergangsmatrix für ein Markov-Modell so, dass "state_after = T * state_before" ist. – aichao
Yep Zeilen von Spalten zu: 'von Cluster' (Zeilen) 'zu Cluster' (Spalten) – jc52766