// -------------------------------------- // Université de Nice -- Sophia Antipolis // Polytech'Nice -- Sophia // Département Électronique, 3e année // Cours de Statistique Appliquée // Iannis.Aliferis@unice.fr // deneire@unice.fr // --------------------------------------- // exécuter avec la commande // > exec('le_nom_du_fichier.sce') // Vous pouvez, à la fin, obtenir les valeurs // de toutes les variables calculées en tapant leur nom // dans la ligne de commande. // --------------------------------------- // Chapitre : // Statistique Inférentielle: échantillonnage // --------------------------------------- // Script : // Visualiser la v.a. uniforme // --------------------------------------- // Description // // Tracer la ddp et la fdr de la v.a. uniforme, faire varier la valeur max. // -------------------------------------- clear; clf; // -------------------------------------- // Gestion minimale des fichiers de sortie (figures) // -------------------------------------- // Définir le nom de base des fichiers créés avec les figures filename = "echantillonnage_loi_uniforme" // Définir un compteur pour les fichiers créés ; ils auront tous le même nom de base plus un numéro. file_index = 1; // -------------------------------------- // La v.a. uniforme // -------------------------------------- a = 0; // Fixer la valeur minimale à zéro. b = [0.5: 0.5 : 10]; // Faire varier la valeur maximale 0.5 à 10 par pas de 0.5 points = 500 ; // nombre de points for ( i = 1:length(b) ) // Une boucle sur toutes les valeurs possibles de b by=(max(b)-a+2)/points; x = [a-1 : by : max(b)+1-by]; // les valeurs de x esp.x = ( a + b(i) ) / 2; // l'espérance (formule cours) var.x = ( a - b(i) )^2 / 12; // la variance (formule cours) std.x = sqrt( var.x ); // et l'écart-type // la densité de probabilité px.uniforme = zeros(1,size(x,2)); px.level=1./(b(i)-a); px.uniforme = ((x>=a)&(x<=b(i))).*px.level; // La fonction de répartition Fx.uniforme = cumsum(px.uniforme); Fx.uniforme = Fx.uniforme/max(Fx.uniforme); // -------------------------------------- // Tracer les courbes // -------------------------------------- // En haut la fonction de probabilité // garder toujours les mêmes limites, correspondant à la courbe la plus haute haut = 1/( min(b) - a ); clf; subplot(211); plot( x, px.uniforme) axes=get("current_axes"); axes.data_bounds=[-1,max(b)+1,0,haut]; axes.x_label.text="x"; axes.y_label.text="pX(x)"; axes.title.text="px"; // Ajouter un polygone pour montrer l'écart type, de part et d'autre de l'espérance: // les valeurs de x concernées sont entre esp.x - 0.5*sd.x et esp.x + 0.5*sd.x xset("color",28); xfrect(esp.x-0.5*std.x,px.level,std.x,px.level); xset("color",0) plot([esp.x,esp.x],[0,haut],"b"); // ajouter une ligne pour l'espérance // ajouter deux fleches pour l'écart-type xarrows( [esp.x-0.5*std.x, esp.x+0.5*std.x],[ haut-0.2,haut-0.2],min(ceil(b(i)),5) ); xarrows( [esp.x+0.5*std.x, esp.x-0.5*std.x],[ haut-0.2,haut-0.2],min(ceil(b(i)),5)); deciles = [(b(i)-a)/10:(b(i)-a)/10:(b(i)-a)]; // Ajouter des lignes pour les déciles px.deciles = 1/b(i)*ones(1,9); // et la p_X(x) qui leur correspond // et finalement créer les lignes verticales, entre y=0 et y=px.deciles, à x=deciles for p=1:9 plot([deciles(p),deciles(p)],[0,px.deciles(p)],'g'); end subplot(212); plot( x, Fx.uniforme) // Fonction de répartition axes=get("current_axes"); axes.data_bounds=[-1,max(b)+1,0,1]; axes.x_label.text="x"; axes.y_label.text="FX(x)"; axes.title.text="Fx"; // Ajouter un polygone pour montrer l'écart type, de part et d'autre de l'espérance: // les valeurs de x concernées sont entre esp.x - 0.5*sd.x et esp.x + 0.5*sd.x // mêmes valeurs qu'avant (ddp), déjà calculées dans x.poly // x.poly = x[ (x > esp.x - 0.5*sd.x) & (x < esp.x + 0.5*sd.x) ] // et les valeurs de y sont celles de la F_X(x) xset("color",30); xmin=esp.x-0.5*std.x; xmax=esp.x+0.5*std.x; ymin=xmin/b(i); ymax=xmax/b(i); xfpoly([xmin,xmin,-2,-2,xmax,xmax],[0,ymin,ymin,ymax,ymax,0]); xset("color",0); plot( x, Fx.uniforme); // réafficher Fx(x) (effacé par le polygone) // Ajouter des lignes pour les déciles: xset("color",5); for p=1:10 plot([deciles(p),deciles(p)],[0,p/10],'g'); plot([-2,deciles(p)],[p/10,p/10],'g'); end xset("color",0); // Exporter en eps xs2eps(0,strcat([filename,"_scilab_fig",string(file_index),".eps"])); // Augmenter le compteur des fichiers créés. file_index = file_index + 1; pause; end