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.
Réponses
-
Bonjour.Tu utilises la loi géométrique, quelle est la définition de cette loi (dans ton logiciel) ? Si c'est la définition classique (nombre de tirages avant un succès), la valeur 0 n'est jamais prise, et la moyenne est $\frac 1 p =4$. Avec en moyenne 4 nouveaux pour un qui disparaît, difficile de faire diminuer la population.Si c'est bien ça, tu peux soustraire 1 à ce nombre de descendants pour avoir la loi géométrique sur $\mathbb N$. Mais comme tu ajoutes toujours aux descendants tous les "anciens", la population ne peut pas diminuer, et la probabilité d'extinction est évidente : 0.Cordialement.
-
bonjour, oui c'est bien cette définition de la loi géométrique
mais alors dans mon code, à quel moment dois-je enlever 1?
merci -
Quand tu fais calculer nb.Mais en tout cas, tu définis une suite $X_n$ croissante, donc elle n'atteindra jamais 0. Si j'ai bien compris ce que tu écris dans ton programme.
-
Mais est-ce que mon programme représente bien l'évolution de la variable $X_n$ selon la définition qui en a été donnée ?
Selon mon exercice, la probabilité d'extinction vaut 1 si $p \ge \frac12$ et $\frac{p}{1-p}$ sinon. -
Je n'ai pas l'impression !Pourquoi y a-t-il un X[-1] dans ta quatrième ligne ??? Tu l'as écrit, tu dois le savoir et comparer ce que tu fais faire à l'ordinateur avec ce que tu veux faire d'après la définition du processus."J'ai plutôt des difficultés à traduire en code des énoncés mathématiques." C'est pourtant la partie la plus facile de la programmation !! Tu décodes ton énoncé jusqu'à être capable de dire exactement ce que tu veux faire calculer (même par un idiot suprêmement obéissant, ce qu'est un ordinateur), puis tu l'écris avec les mots du langage (que tu as appris auparavant - souvent, c'est ça qui manque, surtout chez ceux qui recopient des programmes tout faits en croyant programmer) ; puis tu testes sur des cas élémentaires que tu as bien rédigés.Cordialement.
-
Outre la remarque de @gerard0 sur le fait que la loi de descendance est une loi géométrique décalée, si tu relis ton code, tu constateras qu'à chaque étape, tu ajoute à la fin de ton tableau de valeur X la valeur précédente, plus le nombre de descendants d'un unique individu. En particulier, les valeurs dans ton tableau sont toujours croissantes.
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.from scipy import stats def processus_galton_watson(n,p): """ Paramètres ------------- n, p : entiers Simulation de n générations d'un processus de Galton-Watson où le nombre de descendants par individu suit une loi géométrique décalée de paramètre p Résultat --------- X : liste X[k] est le nombre de descendants à la génération k """ X = [1] for i in range(n): X.append(sum(stats.geom.rvs(p, -1, X[-1]))) return X
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.
-
merci pour votre aide
Connectez-vous ou Inscrivez-vous pour répondre.
Bonjour!
Catégories
- 165.6K Toutes les catégories
- 65 Collège/Lycée
- 22.2K Algèbre
- 37.7K Analyse
- 6.3K Arithmétique
- 61 Catégories et structures
- 1.1K Combinatoire et Graphes
- 13 Sciences des données
- 5.1K Concours et Examens
- 26 CultureMath
- 51 Enseignement à distance
- 2.9K Fondements et Logique
- 10.8K Géométrie
- 86 Géométrie différentielle
- 1.1K Histoire des Mathématiques
- 79 Informatique théorique
- 3.9K LaTeX
- 39K Les-mathématiques
- 3.5K Livres, articles, revues, (...)
- 2.7K Logiciels pour les mathématiques
- 29 Mathématiques et finance
- 344 Mathématiques et Physique
- 5K Mathématiques et Société
- 3.4K Pédagogie, enseignement, orientation
- 10.1K Probabilités, théorie de la mesure
- 805 Shtam
- 4.2K Statistiques
- 3.8K Topologie
- 1.4K Vie du Forum et de ses membres