Forum de Statistiques
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Les posteurs les plus actifs de la semaine
Aucun utilisateur

Le Deal du moment : -50%
-50% Baskets Nike Air Huarache Runner
Voir le deal
69.99 €

dynamique des pop, boucle matrice et vecteur R

3 participants

Aller en bas

dynamique des pop, boucle matrice et vecteur R Empty dynamique des pop, boucle matrice et vecteur R

Message par Koudou Mar 10 Déc 2013 - 13:47

Bonjour,

Étant novice en programmation j'ai quelques difficultés à coder sur R. Mon problème est le suivant :
Imaginons que j'ai une population d'une taille initiale de 2000 individus et que son taux de croissance est de 1.1. Je veux calculer les effectifs sur 100 générations et je fais donc la boucle suivante :

Pop <- 2000 ### effectif initial de la population
Gen <- 100 ### nombre de génération
for (n in 2:Gen) {
 Pop[n] <- Pop[n - 1] * 1.05
}
Popn

Maintenant je veux faire la même chose mais avec 5 classes d'âge et une matrice de transition. En gros j'ai mon vecteur avec mes effectifs initiaux:
v<- c(300,300,400,500,500) et une matrice de transition M déjà définie de taille 5 lignes, 5 colonnes. J'aimerais calculer les effectifs de chaque classe sur 100 générations par une boucle du même type que la suivante (calquée sur la 1ere), mais je n'y arrive pas.

v<- c(300,300,400,500,500) ### effectifs initiaux de chaque classe d'âge
Gen <- 100 ### nombre de génération
for (n in 2:Gen) {
 v[n] <- v[n - 1] %*% M
}
v[n]

Donc si quelqu'un a la solution ça serait super!
Merci!

Koudou

Nombre de messages : 2
Date d'inscription : 10/12/2013

Revenir en haut Aller en bas

dynamique des pop, boucle matrice et vecteur R Empty Re: dynamique des pop, boucle matrice et vecteur R

Message par droopy Mer 11 Déc 2013 - 14:44

bonjour,
les solutions sont plus mathématiques que de la progra :
Code:
#1
Pop <- Pop*(1.05)^(0:99)

pop <- c(30,50,50)
M <- structure(c(0, 6, 10, 0.5, 0, 0, 0, 0.4, 0), .Dim = c(3L, 3L)) # la matrice de transition
# décomposition de cette matrice
eig <- eigen(M)
# matrice de passage
P <- eig$vectors
# matrice diagonale :
Md <- diag(eig$values)
# le calcul des effectifs :
cbind(pop,sapply(1:99, function(x) pop%*%P%*%Md^x%*%solve(P)))
Pour la deuxième il suffit de décomposer la matrice en une matrice de passage et en une matrice diagonale.
droopy
droopy

Nombre de messages : 1156
Date d'inscription : 04/09/2009

Revenir en haut Aller en bas

dynamique des pop, boucle matrice et vecteur R Empty Re: dynamique des pop, boucle matrice et vecteur R

Message par Koudou Mer 11 Déc 2013 - 15:41

Comme quoi on peut souvent éviter les boucles...
C'est super, ça marche, merci! En revanche j'ai du mal à saisir le sens de la dernière ligne de code?


Koudou

Nombre de messages : 2
Date d'inscription : 10/12/2013

Revenir en haut Aller en bas

dynamique des pop, boucle matrice et vecteur R Empty Re: dynamique des pop, boucle matrice et vecteur R

Message par joyeux_lapin13 Mer 11 Déc 2013 - 16:54

Koudou a écrit:Comme quoi on peut souvent éviter les boucles

D'autant plus que R déteste les boucles, d'où l'existence de la famille de fonctions apply.
joyeux_lapin13
joyeux_lapin13

Nombre de messages : 1927
Age : 40
Localisation : Mayotte
Date d'inscription : 21/04/2010

https://lemakistatheux.wordpress.com/

Revenir en haut Aller en bas

dynamique des pop, boucle matrice et vecteur R Empty Re: dynamique des pop, boucle matrice et vecteur R

Message par droopy Mer 11 Déc 2013 - 22:16

joyeux_lapin13 a écrit:D'autant plus que R déteste les boucles, d'où l'existence de la famille de fonctions apply.
Je ne ne partage qu'à moitié cette affirmation. Parfois UNE boucle est plus rapide qu'un apply. Les apply font quand même appel à une boucle simple :
Code:
# extrait de apply
else for (i in 1L:d2) {
        tmp <- FUN(array(newX[, i], d.call, dn.call), ...)
        if (!is.null(tmp))
            ans[[i]] <- tmp
    }
La ou je te rejoins, c'est que R n'aime pas les boucles multiples.
droopy
droopy

Nombre de messages : 1156
Date d'inscription : 04/09/2009

Revenir en haut Aller en bas

dynamique des pop, boucle matrice et vecteur R Empty Re: dynamique des pop, boucle matrice et vecteur R

Message par joyeux_lapin13 Jeu 12 Déc 2013 - 4:44

Tu as tout à fait raison Droopy, je voulais dire que R n'aime pas les boucles dans des boucles.
joyeux_lapin13
joyeux_lapin13

Nombre de messages : 1927
Age : 40
Localisation : Mayotte
Date d'inscription : 21/04/2010

https://lemakistatheux.wordpress.com/

Revenir en haut Aller en bas

dynamique des pop, boucle matrice et vecteur R Empty Re: dynamique des pop, boucle matrice et vecteur R

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum