Upload
others
View
3
Download
0
Embed Size (px)
Citation preview
MathĂ©matiques â M1 ESR 2019/2020 TP ModĂ©lisation UniversitĂ© Toulouse III - Paul Sabatier
Correction du TP no 1
Exercice 1. Le but de cet exercice est de visualiser quelques lois continues importantes : les lois gaussiennes,Cauchy, et Gamma.
1. Nous souhaitons tracer les fonctions de densitĂ© et les fonctions de rĂ©partition des lois gaussiennes, Cauchyet Gamma. Pour cela, diviser la fenĂȘtre en 6 cases (3 lignes et 2 colonnes) avec plt.subplot. Puis tracer(Ă lâaide de plt.plot) :â Dans la premiĂšre ligne, la fonction de densitĂ© et la fonction de rĂ©partition de la loi gaussienne de
moyenne nulle et Ă©cart-type Ï = 0.5, 1 et 2 (superposer les trois tracĂ©s), sur lâintervalle [â5, 5].â Dans la seconde ligne, la fonction de densitĂ© et la fonction de rĂ©partition de la loi de Cauchy, sur
lâintervalle [â5, 5].â Dans la troisiĂšme ligne, la fonction de densitĂ© et la fonction de rĂ©partition de la loi Gamma de premier
paramĂštre k = 0.5, 1 et 2 et de deuxiĂšme paramĂštre 1 (superposer les trois tracĂ©s), sur lâintervalle[0, 6].
2. Superposer sur lâintervalle [â10, 10] les densitĂ©s des lois gaussiennes standard et Cauchy. Comparer lesdeux : quels sont les points communs, quelles sont les diffĂ©rences ?
3. Superposer sur lâintervalle [â5, 5] les densitĂ©s des lois gaussiennes de moyenne nulle et dâĂ©cart-type 1, 0.5,0.25, 0.1 et 0.05. Faire de mĂȘme pour la fonction de rĂ©partition. Quâobserve-t-on quand lâĂ©cart-type tendvers zĂ©ro ?
4. Bonus : Superposer sur lâintervalle [0, 6] les densitĂ©s des lois Gamma de paramĂštres α = ÎČ = k pourk â {1, 2, 4, 8, 16, 32, 64}. Quâobserve-t-on quand k tend vers lâinfini ? Pour k = 100, superposer la densitĂ©avec la densitĂ© dâune autre loi que lâon connaĂźt et qui y est proche.
Correction. 1.>>> plt.figure()>>>>>> plt.subplot(3,2,1)>>> X = np.linspace(-5,5,10000)>>> plt.plot(X,scs.norm.pdf(X,0,0.5))>>> plt.plot(X,scs.norm.pdf(X,0,1))>>> plt.plot(X,scs.norm.pdf(X,0,2))>>> plt.title(uâDensitĂ© de la loi gaussienne centrĂ©e et de variance sigma^2â)>>> plt.legend([uâsigma = 0.5â,uâsigma = 1â,uâsigma = 2â])>>>>>> plt.subplot(3,2,2)>>> plt.plot(X,scs.norm.cdf(X,0,0.5))>>> plt.plot(X,scs.norm.cdf(X,0,1))>>> plt.plot(X,scs.norm.cdf(X,0,2))>>> plt.title(uâFonction de rĂ©partition de la loi gaussiennecentrĂ©e et de variance sigma^2â)>>> plt.legend([uâsigma = 0.5â,uâsigma = 1â,uâsigma = 2â],loc=âlower rightâ)>>>>>> plt.subplot(3,2,3)>>> plt.plot(X,scs.cauchy.pdf(X))>>> plt.title(uâDensitĂ© de la loi de Cauchyâ)>>>>>> plt.subplot(3,2,4)>>> plt.plot(X,scs.cauchy.cdf(X))
1
>>> plt.title(uâFonction de rĂ©partition de la loi de Cauchyâ)>>>>>> plt.subplot(3,2,5)>>> X = np.linspace(-1,6,10000)>>> plt.plot(X,scs.gamma.pdf(X,0.5,0,1))>>> plt.plot(X,scs.gamma.pdf(X,1,0,1))>>> plt.plot(X,scs.gamma.pdf(X,2,0,1))>>> plt.legend([uâk = 0.5â,uâk = 1â,uâk = 2â])>>> plt.title(uâDensitĂ© de la loi Gamma de paramĂštres k et 1â)>>>>>> plt.subplot(3,2,6)>>> plt.plot(X,scs.gamma.cdf(X,0.5,0,1))>>> plt.plot(X,scs.gamma.cdf(X,1,0,1))>>> plt.plot(X,scs.gamma.cdf(X,2,0,1))>>> plt.legend([uâk = 0.5â,uâk = 1â,uâk = 2â],loc=âlower rightâ)>>> plt.title(uâFonction de rĂ©partition de la loi Gamma de paramĂštres k et 1â)>>>>>> plt.show()
2.>>> plt.figure()>>> X = np.linspace(-10,10,10000)>>> plt.plot(X,scs.norm.pdf(X,0,1))>>> plt.plot(X,scs.cauchy.pdf(X))>>> plt.legend([uâDensitĂ© de la loi gaussienne standardâ,uâDensitĂ©
2
de la loi de Cauchyâ])>>> plt.show()
Les deux densités sont des fonctions symétriques. Néanmoins, la densité de la loi de Cauchy décroßtbeaucoup moins vite que celle de la loi gaussienne.
3.>>> plt.figure()>>> X = np.linspace(-5,5,10000)>>> sigmas = [1,0.5,0.25,0.1,0.05]>>> for s in sigmas:... plt.plot(X,scs.norm.pdf(X,0,s))>>> plt.legend([âsigma=â+str(s) for s in sigmas])>>> plt.title(uâDensitĂ© de la loi Gaussienne centrĂ©e et de variance sigma^2â)>>> plt.show()
>>> plt.figure()>>> for s in sigmas:... plt.plot(X,scs.norm.cdf(X,0,s))>>> plt.legend([âsigma=â+str(s) for s in sigmas],loc=âlower rightâ)>>> plt.title(uâFonction de rĂ©partition de la loi Gaussienne centrĂ©eet de variance sigma^2â)
3
>>> plt.xlim(-5,5)>>> plt.show()
Quand lâĂ©cart type devient de plus en plus petit, on observe que la courbe de densitĂ© se concentre de plusen plus autour de 0. Cela Ă©tait attendu puisquâun petit Ă©cart type signifie que les valeurs typiques sont peudispersĂ©es autour de la moyenne (0 dans le cas dâune Gaussienne centrĂ©e). On observe aussi cela avecles courbes des fonctions de rĂ©partition : quand lâĂ©cart type tend vers 0, la fonction de rĂ©partition tend Ă se rapprocher de la fonction t 7ââ 1[0,+â[(t), qui est la fonction de rĂ©partition dâune variable alĂ©atoireconstante Ă©gale Ă 0.
Notons ÎŠÏ la fonction de rĂ©partition dâune loi Normale centrĂ©e et de variance Ï2. Soit t â R. A lâaide duchangement de variable y = x/Ï, nous avons
ΊÏ(t) =â« t
ââ
1â2ÏÏ2
eâx2/(2Ï2) dx =
â« t/Ï
ââ
1â2Ïeây
2/2 dy = Ί1
(t
Ï
)ââÏâ0
0 si t < 0,1/2 si t = 0,1 si t > 0.
Ainsi, pour tout t 6= 0, ΊÏ(t) tend vers 1[0,+â[(t) quand Ï tend vers 0. On dit quâune variable alĂ©atoire deloi Normale centrĂ©e et de variance Ï2 converge en loi vers 0 (nous verrons cela prochainement en cours).
4.>>> plt.figure()>>> X = np.linspace(-0.1,6,1000)>>> for k in [1,2,4,8,16,32,64]:... plt.plot(X,scs.gamma.pdf(X,k,0,1./k))... plt.legend([âk=â+str(k) for k in [1,2,4,8,16,32,64]])>>> plt.title(uâDensitĂ© de la loi Gamma de paramĂštres k et 1/kâ)>>> plt.show()
4
Quand k tend vers +â, on remarque la courbe de densitĂ© dâune loi Gamma de paramĂštres k et 1/k tendĂ se rapprocher dâune courbe en cloche, caractĂ©ristique de la courbe de densitĂ© dâune loi Gaussienne.
Une variable alĂ©atoire de loi Gamma de paramĂštres k et 1/k admet pour espĂ©rance 1 et pour variance 1/k(cf. TD 4). Comparons la densitĂ© dâune loi Gamma de paramĂštres 100 et 1/100 avec la densitĂ© dâune loiGaussienne de moyenne 1 et de variance 1/100 :>>> plt.figure()>>> X = np.linspace(-0.1,6,1000)>>> plt.plot(X,scs.gamma.pdf(X,100,0,0.01))>>> plt.plot(X,scs.norm.pdf(X,1,0.1),color=ârâ)>>> plt.legend([uâDensitĂ© de la Gaussienne\ncentrĂ©e et de variance 1/100â,uâDensitĂ© de la loi Gamma\nde paramĂštres 100 et 1/100â])>>> plt.show()
Exercice 2. Le but de cet exercice est de visualiser quelques lois discrÚtes importantes : les lois de Poisson,binomiale et géométrique.
1. Comme dans lâExercice 1.1, diviser la fenĂȘtre en 6 cases (3 lignes et 2 colonnes) et tracer :â Dans la premiĂšre ligne, la fonction de masse (avec plt.stem) et la fonction de rĂ©partition (avec
plt.step) de la loi de Poisson de paramĂštre λ = 0.5, 2 et 5 (superposer les trois tracĂ©s), surlâintervalle [0, 10].
5
â Dans la deuxiĂšme ligne, la fonction de masse et la fonction de rĂ©partition de la loi binomiale deparamĂštres n = 20 et p = 0.2, 0.5, 0.8 (superposer les trois tracĂ©s), sur lâintervalle [0, 20]. Utiliserscs.binom.
â Dans la troisiĂšme ligne, la fonction de masse et la fonction de rĂ©partition de la loi gĂ©omĂ©trique deparamĂštre p = 0.7, 0.5, 0.2 (superposer les trois tracĂ©s), sur lâintervalle [1, 10]. Utiliser scs.geom.
2. Superposer sur lâintervalle [0, 10] les fonctions de masse des lois binomiales de paramĂštres n et p = 1/npour n â {10, 20, 40}. Faire de mĂȘme pour la fonction de rĂ©partition. Quâobserve-t-on quand n tend verslâinfini ? Peut-on approcher la loi par une autre loi discrĂšte que lâon connaĂźt ?
3. RĂ©pĂ©ter la partie prĂ©cĂ©dente avec n = 10, 30, 100 et p = 0.5, sur lâintervalle [0, 100]. Peut-on cette fois-ciapprocher la loi par une loi continue ?
Correction. 1.>>> plt.figure()>>>>>> plt.subplot(3,2,1)>>> X = range(0,11)>>> plt.stem(X,scs.poisson.pmf(X,0.5),markerfmt=âbDâ)>>> plt.stem(X,scs.poisson.pmf(X,2),markerfmt=âgsâ)>>> plt.stem(X,scs.poisson.pmf(X,5),markerfmt=âroâ)>>> plt.legend([uâlambda = 0.5â,uâlambda = 2â,uâlambda = 5â])>>> plt.title(uâFonction de masse de la loi de Poisson de paramĂštre lambdaâ)>>> plt.xlim(-0.5,10.5)>>>>>> plt.subplot(3,2,2)>>> plt.step(X,scs.poisson.cdf(X,0.5), where=âpostâ)>>> plt.step(X,scs.poisson.cdf(X,2), where=âpostâ)>>> plt.step(X,scs.poisson.cdf(X,5), where=âpostâ)>>> plt.legend([uâlambda = 0.5â,uâlambda = 2â,uâlambda = 5â],loc=âlower rightâ)>>> plt.title(uâFonction de rĂ©partition de la loide Poisson de paramĂštre lambdaâ)>>>>>> plt.subplot(3,2,3)>>> X = range(0,21)>>> plt.stem(X,scs.binom.pmf(X,20,0.2),markerfmt=âbDâ)>>> plt.stem(X,scs.binom.pmf(X,20,0.5),markerfmt=âgsâ)>>> plt.stem(X,scs.binom.pmf(X,20,0.8),markerfmt=âroâ)>>> plt.legend([uâp=0.2â,uâp=0.5â,uâp=0.8â])>>> plt.title(uâFonction de masse de la loi binomiale de paramĂštres 20 et pâ)>>> plt.xlim(-0.5,20.5)>>>>>> plt.subplot(3,2,4)>>> plt.step(X,scs.binom.cdf(X,20,0.2), where=âpostâ)>>> plt.step(X,scs.binom.cdf(X,20,0.5), where=âpostâ)>>> plt.step(X,scs.binom.cdf(X,20,0.8), where=âpostâ)>>> plt.legend([uâp=0.2â,uâp=0.5â,uâp=0.8â],loc=âlower rightâ)>>> plt.title(uâFonction de rĂ©partition de la loi binomialede paramĂštres 20 et pâ)
>>>>>> plt.subplot(3,2,5)>>> X = range(0,11)>>> plt.stem(X,scs.geom.pmf(X,0.7),markerfmt=âbDâ)>>> plt.stem(X,scs.geom.pmf(X,0.5),markerfmt=âgsâ)>>> plt.stem(X,scs.geom.pmf(X,0.2),markerfmt=âroâ)>>> plt.legend([uâp = 0.7â,uâp = 0.5â,uâp = 0.2â])>>> plt.title(uâFonction de masse de la loi gĂ©omĂ©trique de paramĂštre pâ)
6
>>> plt.xlim(-0.5,10.5)>>>>>>>>> plt.subplot(3,2,6)>>> plt.step(X,scs.geom.cdf(X,0.7), where=âpostâ)>>> plt.step(X,scs.geom.cdf(X,0.5), where=âpostâ)>>> plt.step(X,scs.geom.cdf(X,0.2), where=âpostâ)>>> plt.legend([uâp = 0.7â,uâp = 0.5â,uâp = 0.2â],loc=âlower rightâ)>>> plt.title(uâFonction de rĂ©partition de la loi gĂ©omĂ©trique de paramĂštre pâ)>>>>>> plt.show()
2.>>> plt.figure()>>> X = range(0,11)>>> plt.stem(X,scs.binom.pmf(X,10,1./10),markerfmt=âbDâ)>>> plt.stem(X,scs.binom.pmf(X,20,1./20),markerfmt=âgsâ)>>> plt.stem(X,scs.binom.pmf(X,40,1./40),markerfmt=âroâ)>>> plt.title(uâFonction de masse de la loi binomiale de paramĂštres n et 1/nâ)>>> plt.legend([uân = 10â,uân = 20â,uân = 40â])>>> plt.xlim(-0.5,10.5)>>> plt.show()
7
>>> plt.figure()>>> plt.step(X,scs.binom.cdf(X,10,1./10), where=âpostâ)>>> plt.step(X,scs.binom.cdf(X,20,1./20), where=âpostâ)>>> plt.step(X,scs.binom.cdf(X,40,1./40), where=âpostâ)>>> plt.title(uâFonction de rĂ©partition de la loi binomialede paramĂštres n et 1/nâ)>>> plt.legend([uân = 10â,uân = 20â,uân = 40â])>>> plt.show()
>>> plt.figure()>>> plt.stem(X,scs.binom.pmf(X,100,1./100),markerfmt=âbDâ)>>> plt.stem(X,scs.poisson.pmf(X,1),markerfmt=âgsâ)>>> plt.title(uâComparaison de fonctions de masseâ)>>> plt.legend([uâLoi binomiale de paramĂštres 100 et 0.01â,uâLoi de Poisson de paramĂštre 1â])>>> plt.xlim(-0.5,10.5)>>> plt.show()
8
On voit que lorsque n croßt, les fonctions de masse et fonctions de répartition de la loi binomiale deparamÚtres n et p = 1/n semblent converger vers une limite. On identifie cette limite comme étant lesfonctions de masse et la fonction de répartition de la loi de Poisson de paramÚtre 1.
3.>>> plt.figure()>>> X = range(0,101)>>> plt.stem(X,scs.binom.pmf(X,10,0.5),markerfmt=âbDâ)>>> plt.stem(X,scs.binom.pmf(X,30,0.5),markerfmt=âgsâ)>>> plt.stem(X,scs.binom.pmf(X,100,0.5),markerfmt=âroâ)>>> plt.title(uâFonction de masse de la loi binomiale deparamĂštres n et 0.5â)>>> plt.legend([uân = 10â,uân = 30â,uân = 100â])>>> plt.show()
>>> plt.figure()>>> plt.step(X,scs.binom.cdf(X,10,0.5), where=âpostâ)>>> plt.step(X,scs.binom.cdf(X,30,0.5), where=âpostâ)>>> plt.step(X,scs.binom.cdf(X,100,0.5), where=âpostâ)>>> plt.title(uâFonction de rĂ©partition de la loi binomialede paramĂštres n et 0.5â)
9
>>> plt.legend([uân = 10â,uân = 30â,uân = 100â])>>> plt.show()
>>> plt.figure()>>> plt.stem(X,scs.binom.pmf(X,100,0.5),markerfmt=âbDâ)>>> Y = np.linspace(0,100,500)>>> plt.plot(Y,scs.norm.pdf(Y,50,5),c=ârâ)>>> plt.title(uâComparaison de fonctions de masseâ)>>> plt.legend([uâLoi Gaussienne de moyenne 50\net de variance 25â,uâLoi binomiale\nde paramĂštres n et 0.5â])>>> plt.show()
Quand p = 0.5 est fixĂ©, la fonction de masse de la loi binomiale de paramĂštres n et p semble approcher ladensitĂ© de la loi gaussienne de moyenne n/2 et variance n/4, ce quâon voit bien dĂ©jĂ avec n = 100.
Exercice 3. (Analyse dâĂ©chantillon) Marie rapporte dâune randonnĂ©e en montagne un bloc de pierre contenantdes substances radioactives qui Ă©mettent des rayons α. Sa mĂšre, chimiste Ă lâUniversitĂ© Paul Sabatier, luiprĂȘte un compteur Geiger pour Ă©tudier la radioactivitĂ© de cette pierre. Marie branche alors le compteur Ă sonordinateur et enregistre les espaces de temps entre deux rayons α. Elle remarque que ces espaces de temps ontlâair alĂ©atoires. Aidez-la Ă dĂ©couvrir la loi sous-jacente.
10
1. Charger le contenu du fichier TP1_Fission.txt dans un vecteur Fission. Il contient les espaces de temps(en ms) entre deux rayons α. Afficher la taille de lâĂ©chantillon, moyenne, quartiles, Ă©cart interquartile,Ă©cart-type, maximum et minimum.
2. Diviser la fenĂȘtre en deux parties et afficher dans la premiĂšre un histogramme de lâĂ©chantillon avec 30classes (avec plt.hist), et dans la deuxiĂšme la fonction de rĂ©partition empirique de lâĂ©chantillon (avecplt.step).
3. Emettre une conjecture sur la loi de lâespace de temps entre deux rayons α. Superposer la densitĂ© de cetteloi Ă lâhistogramme normalisĂ©. Superposer la fonction de rĂ©partition de cette loi Ă la fonction de rĂ©partitionempirique.
Correction. 1.>>> Fission = np.loadtxt(uâTP2_Fission.txtâ)>>> print âTaille de l\âĂ©chantillon : â, np.size(Fission)>>> print âMoyenne : â, np.mean(Fission)>>> print âMaximum : â, np.max(Fission)>>> print âMinimum : â, np.min(Fission)Taille de lâĂ©chantillon : 20000Moyenne : 35.915045953Maximum : 328.84022184Minimum : 0.00236665372508
2-3. La fonction de rĂ©partition empirique semble approcher celle dâune loi continue, de plus lâhistogrammeressemble Ă la densitĂ© de la loi exponentielle dâune certaine moyenne ”. Comment deviner ” ? Il est naturelde la choisir comme Ă©tant la moyenne empirique de lâĂ©chantillon que nous avons calculĂ©e ci-dessous. Celadonne le code suivant :>>> mu = np.mean(Fission)>>>>>> plt.figure()>>>>>> plt.subplot(2,1,1)>>> X = np.linspace(0,np.max(Fission),100)>>> plt.hist(Fission,bins=30,normed=True)>>> plt.plot(X,scs.expon.pdf(X,0,mu))>>> plt.xlabel(uâDurĂ©e (ms)â)>>> plt.ylabel(uâFrĂ©quence normalisĂ©eâ)>>> plt.title(uâHistogramme des donnĂ©es (expĂ©rience Fission)\net densitĂ© de la loi exponentielleâ)>>> plt.legend([uâHistogrammeâ, uâDensitĂ© de la loi exponentielleâ])>>>>>> plt.subplot(2,1,2)>>> plt.step(np.sort(Fission),np.arange(0,1,1./len(Fission)))>>> plt.plot(X,scs.expon.cdf(X,0,mu))>>> plt.xlabel(uâDurĂ©e (ms)â)>>> plt.ylabel(uâFrĂ©quence normalisĂ©eâ)>>> plt.title(uâFonction de rĂ©partition empirique (expĂ©rience Fission)\net fonction de rĂ©parition de la loi exponentielleâ)>>> plt.legend([uâFonct. de rĂ©p. empiriqueâ, uâFonct. de rĂ©p. de la loiexponentielleâ],loc=âlower rightâ)>>>>>> plt.show()
11
Exercice 4. (Bonus)En 1968, Ă la station ornithologique du col de GolĂšze situĂ© dans les Alpes françaises, 48 merles Ă plastron ontĂ©tĂ© capturĂ©s au filet pour ĂȘtre marquĂ©s, durant les 89 jours dâouverture de la station. Les merles sont rĂ©putĂ©espour vivre en solitude. On sâintĂ©resse au nombre de merles capturĂ©s par jour. Les donnĂ©es sont reproduites dansla table suivante :
12
Nombre de merles 0 1 2 3 4 5 6Fréquences 56 22 9 1 0 1 0
1. ReprĂ©senter graphiquement ces donnĂ©es par un diagramme en bĂątons en annotant les axes.2. Argumenter sâil fait sens de modĂ©liser ces donnĂ©es par un Ă©chantillon de loi Poisson dâun certain paramĂštreλ.
3. Calculer (en Python, avec les fonctions np.dot ou np.average), le nombre moyen de merles capturĂ©s parjour. Appelons ce nombre λÌ.
4. Dans une nouvelle fenĂȘtre, superposer au diagramme de la premiĂšre partie la fonction de masse de la loide Poisson de paramĂštre λÌ, convenablement mise Ă Ă©chelle.
Correction. 1.>>> N = np.arange(0,7)>>> Frequences = np.array([56,22,9,1,0,1,0])>>>>>> plt.figure()>>> plt.stem(N,Frequences)>>> plt.xlabel(uâNombre de merlesâ)>>> plt.ylabel(uâFrĂ©quencesâ)>>> plt.title(uâNombre de merles captivĂ©s par jourâ)>>> plt.xlim(-0.5,6.5)>>> plt.show()
2. Les merles vivant en solitude, on peut supposer que pour un jour donnĂ©, chaque merle et capturĂ© indĂ©pen-damment et ce avec une faible probabilitĂ©. Le nombre de merles capturĂ©s peut alors se modĂ©liser par uneloi binomiale dont le paramĂštre p est petit, et donc par la loi de Poisson dâun certain paramĂštre λ. Poursupposer que le paramĂštre ne change par jour par jour, il faut supposer de plus que le comportement desmerles reste constant durant la durĂ©e de lâexpĂ©rience.
3.>>> L = np.dot(N,Frequences)/float(sum(Frequences))>>> print L0.539325842697
4.
13
>>> plt.figure()>>> plt.stem(N,Frequences/float(sum(Frequences)),markerfmt=âbDâ)>>> plt.xlabel(uâNombre de merlesâ)>>> plt.ylabel(uâFrequencesâ)>>> plt.title(uâComparaison des donnĂ©es avec la fonction de masse\ndela loi de Poisson de paramĂštre lambda=â+str(L))>>> plt.stem(N,scs.poisson.pmf(N,L),markerfmt=âgsâ)>>> plt.xlim(-0.5,6.5)>>> plt.legend([uâDonnĂ©es renormalisĂ©esâ, uâLoi de Poissonâ])>>> plt.show()
Le paramĂštre de la loi de Poisson Ă©tant aussi sa moyenne (=son espĂ©rance), il est naturel de comparer lesdonnĂ©es Ă la loi de Poisson de paramĂštre Ă©gal Ă la moyenne du nombre de merles capturĂ©s par jour, doncλ â 0.54. On voit que les deux correspondent assez bien, suggĂšrent que le nombre de merles capturĂ©s enune journĂ©e peut ĂȘtre modĂ©lisĂ© par une loi de Poisson de ce paramĂštre.
14