Soit X une variable aléatoire continue (à valeur réelle) dont on ne connaît que m
réalisations indépendantes stockées dans le vecteur
.
Sa fonction de répartition est la fonction :
![]()
![]()
X_r_o = - sort(-X_r)et pour éviter trop de manipulation avec plot2d, il en existe une variante qui dessine des plages constantes :
plot2d2("onn",x,y,[arguments optionnels comme pour plot2d])
dessinera une plage constante de valeur y(i) dans l'intervalle [x(i),x(i+1)].
Pour être sur de faire apparaître une petite plage (de valeur 0) avant Xrmin et une
autre (de valeur 1) après Xrmax, on pourra alors procéder de la façon suivante :
function repartition_empirique(X_r)
//
// trace la fonction de repartition (empirique) de
// X_r un vecteur (ligne ou colonne) contenant m realisations de X
//
m = length(X_r)
X_r_o = matrix(X_r,m,1) // pour etre sur d'avoir un vecteur colonne
// de cette facon le code marche dans les 2 cas
X_r_o = -sort(-X_r_o) // X_r_o pour X_r ordonne
// on rajoute maintenant deux points a chaque extremite :
dx = 0.05*(X_r_o(m) - X_r_o(1))
X_r_o = [X_r_o(1)-dx ; X_r_o ; X_r_o(m)+dx]
// calcul des ordonnees
y = [0 ; (1:m)'/m ; 1]
// et le dessin
xbasc()
plot2d2("onn", X_r_o , y, 1, "121", "repartition empirique")
xselect()
Voici maintenant un exemple qui utilise la loi normale ![]()
X = rand(200,1,"normal"); // on tire 200 echantillons repartition_empirique(X); // dessin de la fct de repartition empirique // les donnees pour tracer la fonction de repartition "exacte" x = linspace(-5,5,200)'; y = (1 + erf(x/sqrt(2)))/2; // on rajoute la courbe sur le premier dessin plot2d(x,y,2,"000")qui doit donner quelque chose ressemblant à la figure (5.3).