ce qui serait un bon programme qui pourrait automatiser et remplir la matrice A?Comment insérer des probabilités dans une matrice?
Nous avons le vecteur col:
col=c(1,1,2,3,4,5,10,7,7,3,1,5,3,7,6,3,4,2,1,1,2,2,6,4,8,8,9,1,3,2)
col
[1] 1 1 2 3 4 5 10 7 7 3 1 5 3 7 6 3 4 2 1 1 2 2 6 4 8
[26] 8 9 1 3 2
Et nous avons la matrice:
A=rbind(c(0:10),c(1,rep(0,10)),c(2,rep(0,10)),c(3,rep(0,10)),c(4,rep(0,10)),c(5,rep(0,10)),c(6,rep(0,10)),c(7,rep(0,10)),c(8,rep(0,10)),c(9,rep(0,10)),c(10,rep(0,10)))
A
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11]
[1,] 0 1 2 3 4 5 6 7 8 9 10
[2,] 1 0 0 0 0 0 0 0 0 0 0
[3,] 2 0 0 0 0 0 0 0 0 0 0
[4,] 3 0 0 0 0 0 0 0 0 0 0
[5,] 4 0 0 0 0 0 0 0 0 0 0
[6,] 5 0 0 0 0 0 0 0 0 0 0
[7,] 6 0 0 0 0 0 0 0 0 0 0
[8,] 7 0 0 0 0 0 0 0 0 0 0
[9,] 8 0 0 0 0 0 0 0 0 0 0
[10,] 9 0 0 0 0 0 0 0 0 0 0
[11,] 10 0 0 0 0 0 0 0 0 0 0
La première colonne de la matrice A représente les valeurs précédentes dans le vecteur col
Le premier rangée de la matrice A représente les valeurs suivantes dans le vecteur col Dans la matrice A, nous aimerions remplacer les 0 et stocker le probab conditionnel les choses. En regardant le vecteur col, je regarde toutes les instances qui impliquent 1 comme un nombre précédent tel que 1,1,2, 1,5, 1,1,2 1,3.
Et je suis venu avec les probabilités conditionnelles suivantes:
Étant donné que le numéro précédent était 1 dans le vecteur de col, la probabilité que le nombre suivant est égal à 1 à: 2/6. Etant donné que le nombre précédent était 1, la probabilité que le nombre suivant soit égal à 2 est de: 2/6. Étant donné que le nombre précédent était 1, la probabilité que le nombre suivant soit égal à 3 est de: 1/6. Étant donné que le nombre précédent était 1, la probabilité que le nombre suivant soit égal à 5 est de 1/5.
Nous utilisons ces valeurs pour remplir la première ligne de la matrice A.And nous obtenons une nouvelle version de A.
A=rbind(c(0:10),c(1,2/6,2/6,1/6,0,1/6,0,0,0,0,0),c(2,rep(0,10)),c(3,rep(0,10)),c(4,rep(0,10)),c(5,rep(0,10)),c(6,rep(0,10)),c(7,rep(0,10)),c(8,rep(0,10)),c(9,rep(0,10)),c(10,rep(0,10)))
> A
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11]
[1,] 0 1.0000000 2.0000000 3.0000000 4 5.0000000 6 7 8 9 10
[2,] 1 0.3333333 0.3333333 0.1666667 0 0.1666667 0 0 0 0 0
[3,] 2 0.0000000 0.0000000 0.0000000 0 0.0000000 0 0 0 0 0
[4,] 3 0.0000000 0.0000000 0.0000000 0 0.0000000 0 0 0 0 0
[5,] 4 0.0000000 0.0000000 0.0000000 0 0.0000000 0 0 0 0 0
[6,] 5 0.0000000 0.0000000 0.0000000 0 0.0000000 0 0 0 0 0
[7,] 6 0.0000000 0.0000000 0.0000000 0 0.0000000 0 0 0 0 0
[8,] 7 0.0000000 0.0000000 0.0000000 0 0.0000000 0 0 0 0 0
[9,] 8 0.0000000 0.0000000 0.0000000 0 0.0000000 0 0 0 0 0
[10,] 9 0.0000000 0.0000000 0.0000000 0 0.0000000 0 0 0 0 0
[11,] 10 0.0000000 0.0000000 0.0000000 0 0.0000000 0 0 0 0 0
Nous voulons remplir le 2ème rang, 3ème tout le chemin jusqu'à 10.
Je l'ai fait manuellement mais quel serait un bon programme qui pourrait automatiser et remplir la matrice A?
Ce sera très lent. 'for' ou' while' dans R devrait être utilisé dans des cas exceptionnels. – Bulat