Présentation
Soit X une variable aléatoire suivant une loi binomiale de paramètres
$(n ; p)$.
On cherche l’intervalle de fluctuation au seuil de 95%.
En début de script, on fixe les paramètres.
En sortie, on obtient :
– le détail pour l’obtention de $a$ et $b$ ;
– l’intervalle \left[ \frac{a}{n} ; \frac{b}{n}\right] ;
– les diagrammes en bâtons associés.
Le script
#------------------------------------ A modifier n<-20 p<-0.4 #----------------------------------------------- # Calcul de a i<-0 sommeProba<-pbinom(q=i,size=n,prob=p) while (sommeProba<=0.025) { i<-i+1 sommeProba<-pbinom(q=i,size=n,prob=p) } a<-i texte<-paste("p(X <=", bquote( .(a-1)), ") = ", bquote( .(pbinom(q=a-1,size=n,prob=p)))) print(texte) texte<-paste("p(X <=", bquote( .(a)), ") = ", bquote( .(pbinom(q=a,size=n,prob=p)))) print(texte) texte<-paste("a = ", bquote( .(a))) print(texte) #------------------------------------------------- # Calcul de b i<-0 sommeProba<-pbinom(q=i,size=n,prob=p) while (sommeProba<0.975) { i<-i+1 sommeProba<-pbinom(q=i,size=n,prob=p) } b<-i texte<-paste("p(X <=", bquote( .(b-1)), ") = ", bquote( .(pbinom(q=b-1,size=n,prob=p)))) print(texte) texte<-paste("p(X <=", bquote( .(b)), ") = ", bquote( .(pbinom(q=b,size=n,prob=p)))) print(texte) texte<-paste("b = ", bquote( .(b))) print(texte) #----------------------------------------------- # Calcul de l'intervalle de fluctuation print("Intervalle de fluctuation au seuil de 95%") texte<-paste("a/n = ", bquote( .(a/n))) print(texte) texte<-paste("b/n = ", bquote( .(b/n))) print(texte) # Création du tableau des densités x<-0:n tabDensite<-NULL for (i in x) {tabDensite<-c(tabDensite,dbinom(i,n,p))} # Creation des textes texteTitre<-paste("Loi binomiale", "\n" , "n = ", bquote( .(n)),"\n" , "p = ", bquote( .(p)),"\n" ) # Création du diagramme en bâtons des densités bp<-barplot(rbind(tabDensite),beside=TRUE,las=1,names.arg=x, col=c(rep("red",a),rep("blue",b-a+1),rep("red",n-b)) ,ylim=c(0,0.25) ,xlab="k",ylab="P(X = k)",main=texteTitre,cex.main=0.8) texte.a<-paste("a = ", bquote( .(a))) text(x=bp[a+1],y=0.2,texte.a,pos=2) texte<-bquote( .(round(sum(dbinom(0:(a-1),n,p)),digits=3))) text(x=bp[a+1],y=0.23,texte,pos=2,col="red") texte.b<-paste("b = ", bquote( .(b))) text(x=bp[b+1],y=0.2,texte.b,pos=4) texte<-bquote( .(round(sum(dbinom((b+1):n,n,p)),digits=3))) text(x=bp[b+1],y=0.23,texte,pos=4,col="red") texte<-bquote( .(round(sum(dbinom(a:b,n,p)),digits=3))) text(x=bp[round((a+b)/2)],y=0.23,texte,col="blue") segments(bp[a+1],0,bp[a+1],0.25,lty=2) segments(bp[b+1],0,bp[b+1],0.25,lty=2) # Création du tableau des densités cumulés tabDensitesCumulees<-NULL for (i in x) {tabDensitesCumulees<-c(tabDensitesCumulees,pbinom(i,n,p))} # Création du diagramme en bâtons des densitées cumulées bp<-barplot(rbind(tabDensitesCumulees),beside=TRUE,las=1,names.arg=x, col=c(rep("red",a),rep("blue",b-a+1),rep("red",n-b)) ,ylim=c(0,1) ,xlab="k",ylab="P(X <= k)",main=texteTitre,cex.main=0.8) #texte.a<-bquote( .(round(sum(dbinom(a:b,n,p)),digits=3))) #text(bp[round((a+b)/2)],y=0.9,texte.a,col="blue") segments(bp[a+1],0,bp[a+1],1,lty=2) segments(bp[b+1],0,bp[b+1],1,lty=2) segments(bp[1],0.025,bp[n+1],0.025,lty=2) segments(bp[1],0.975,bp[n+1],0.975,lty=2)
Dans la console, on obtient :
[1] "p(X <= 3 ) = 0.0159611627900082"
[1] "p(X <= 4 ) = 0.0509519531941666"
[1] "a = 4"
[1] "p(X <= 11 ) = 0.943473632965747"
[1] "p(X <= 12 ) = 0.978971072522229"
[1] "b = 12"
[1] "Intervalle de fluctuation au seuil de 95%"
[1] "a/n = 0.2"
[1] "b/n = 0.6"