Processus de Galton Watson sur python
Bonjour,
je dois représenter sur Python des trajectoires du processus de Galton-Watson $X_n=\sum_{i=1}^{X_n-1}Y_i^{(n-1)}$ où $X_n$ représente la taille de la génération $n$, et $Y_{i}^{(n-1)}$ le nombre d'enfants du $i$-ème individu de la génération $n-1$, suivant une loi géométrique de paramètre $p$.
Dès lors, j'ai fait le code suivant et j'ai tracé des trajectoires, mais cela me semble bizarre que la population ne décroisse jamais (et ce pour diverses valeurs de $p$), surtout que par la suite on veut étudier une probabilité d'extinction
Je vous remercie par avance pour votre aide.
je dois représenter sur Python des trajectoires du processus de Galton-Watson $X_n=\sum_{i=1}^{X_n-1}Y_i^{(n-1)}$ où $X_n$ représente la taille de la génération $n$, et $Y_{i}^{(n-1)}$ le nombre d'enfants du $i$-ème individu de la génération $n-1$, suivant une loi géométrique de paramètre $p$.
Dès lors, j'ai fait le code suivant et j'ai tracé des trajectoires, mais cela me semble bizarre que la population ne décroisse jamais (et ce pour diverses valeurs de $p$), surtout que par la suite on veut étudier une probabilité d'extinction
def processus(n,p): X=[1] for i in range (n): nb=stats.geom(p).rvs()+X[-1] X.append(nb) return(X) p=1/4 n=100 k=range(n+1) for i in range(3): P=processus(n,p) plt.plot(k,P) plt.xlabel('générations') plt.ylabel('taille de population')J'ai plutôt des difficultés à traduire en code des énoncés mathématiques. Par exemple, ensuite pour déterminer la proba d'extinction en fonction de la valeur de l'espérance des $Y_n$, je n'ai pas d'idée de comment y parvenir
Je vous remercie par avance pour votre aide.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
mais alors dans mon code, à quel moment dois-je enlever 1?
merci
Selon mon exercice, la probabilité d'extinction vaut 1 si $p \ge \frac12$ et $\frac{p}{1-p}$ sinon.
D'après l'énoncé que tu proposes, il faut au contraire ajouter à la fin du tableau le nombre de descendants de tous les individus de la génération précédente. Il faut donc simuler X[-1] lois géométriques décalées, faire la somme des résultats et ajouter cette somme à la fin du tableau.
Si tu utilises scipy (ce que ton code ne précise pas) stats.geom.rvs(p, l, s) renvoie les valeurs simulées de s variables aléatoires suivant la loi géométrique de paramètre p, décalé de l. Lorsque l = 0 : c'est la loi géométrique usuelle. Lorsque l = -1 : la loi géométrique décalée utilisée dans le processus que tu veux simuler.
Lorsque X[-1] est grand, les calculs peuvent devenir exagérément longs. Il peut être utile de cesser les calculs lorsque X[-1] dépasse une certaine valeur.