Distributions de probabilités de base

Toute l'aide pour cette partie est obtenue en tapant:

help.search("distribution").

On va maintenant explorer les commande de R liées aux distributions de probabilité de base. Plusieurs choses naturelles nous intéressent: connaître les valeurs qu'on trouve habituellement dans les tables photocopiées distribuées en TD (les quantiles des lois classiques: gauss, student, chi-deux, fisher, etc ...). Une autre chose souvent bien utile est de pouvoir simuler artificiellement des échantillons tirés suivant une certaine loi (gauss, binomiale, poisson, exponentielle, etc ...).

La distribution gaussienne

Il y a quatre fonctions principales associées à la loi normale (ou gaussienne). Pour obtenir plus de détails, il suffit de taper:

> help(Normal)

La première fonction que nous allons regarder est la fonction "dnorm". Etant donné un vecteur de nombre, la fonction "dnorm" donne les valeurs de la densité de la loi normale centrée réduite en ces points. On peut aussi spécifier l'espérance et la variance pour obtenir la valeur de la densité de distribution normale spécifiée par ces paramètres en les points proposés en procédant comme suit:

> dnorm(0)

[1] 0.3989423

> dnorm(0)*sqrt(2*pi)

[1] 1

> dnorm(0,mean=4)

[1] 0.0001338302

> dnorm(0,mean=4,sd=10)

[1] 0.03682701

>v <- c(0,1,2)

> dnorm(v)

[1] 0.39894228 0.24197072 0.05399097

> x <- seq(-20,20,by=.1)

> y <- dnorm(x)

> plot(x,y)

> y <- dnorm(x,mean=2.5,sd=0.1)

> plot(x,y)

La seconde fonction que nous allons examiner est la fonction "pnorm". Etant donné un nombre ou une liste (un vecteur), cette fonction calcule la probabilité qu'une variable gaussienne sera plus petite que ce nombre ou que chaque des nombres de la liste (du vecteur) proposée. Cela correspond donc à la valeur de la fonction de répartition. Si on ne lui dit rien, la loi gaussienne correspond au cas centré réduit mais on peut aussi spécifier l'espérance et la variance comme pour la fonction "dnorm" ci-dessus:

> pnorm(0)

[1] 0.5

> pnorm(1)

[1] 0.8413447

> pnorm(0,mean=2)

[1] 0.02275013

> pnorm(0,mean=2,sd=3)

[1] 0.2524925

> v <- c(0,1,2)

> pnorm(v)

[1] 0.5000000 0.8413447 0.9772499

> x <- seq(-20,20,by=.1)

> y <- pnorm(x)

> plot(x,y)

> y <- pnorm(x,mean=3,sd=4)

> plot(x,y)

La fonction suivante est "qnorm", qui est l'inverse de "pnorm". l'idée derrière "qnorm" est que si on lui donne une probabilité, elle renvoit le nombre dont la valeur de la fonction de répartition est la probabilité proposée. En d'autres termes, elle renvoit le quantile théorique pour la loi normale considérée, qui est la loi normale centrée réduite si on ne lui dit rien et toute autre loi normale si on lui spécifie la valeur de l'espérance et de la variance:

> qnorm(0.5)

[1] 0

> qnorm(0.5,mean=1)

[1] 1

> qnorm(0.5,mean=1,sd=2)

[1] 1

> qnorm(0.5,mean=2,sd=2)

[1] 2

> qnorm(0.5,mean=2,sd=4)

[1] 2

> qnorm(0.25,mean=2,sd=2)

[1] 0.6510205

> qnorm(0.333)

[1] -0.4316442

> qnorm(0.333,sd=3)

[1] -1.294933

> qnorm(0.75,mean=5,sd=2)

[1] 6.34898

> v = c(0.1,0.3,0.75)

> qnorm(v)

[1] -1.2815516 -0.5244005 0.6744898

> x <- seq(0,1,by=.05)

> y <- qnorm(x)

> plot(x,y)

> y <- qnorm(x,mean=3,sd=2)

> plot(x,y)

> y <- qnorm(x,mean=3,sd=0.1)

> plot(x,y)

La dernière fonction que nous allons voir pour la loi normale est la fonction "rnorm" qui peut générer des réalisations d'une variable aléatoire normale dont on spécifie la loi. On rentre en argument la taille de l'échantillon souhaité et on peut rentrer de manière optionnelle l'espérance et la variance, tout en gardant a l'esprit que si on ne précise pas ces quantité, la fonction considère bien évidemment la loi normale centrée réduite:

> rnorm(4)

[1] 1.2387271 -0.2323259 -1.2003081 -1.6718483

> rnorm(4,mean=3)

[1] 2.633080 3.617486 2.038861 2.601933

> rnorm(4,mean=3,sd=3)

[1] 4.580556 2.974903 4.756097 6.395894

> rnorm(4,mean=3,sd=3)

[1] 3.000852 3.714180 10.032021 3.295667

> y <- rnorm(200)

> hist(y)

> y <- rnorm(200,mean=-2)

> hist(y)

> y <- rnorm(200,mean=-2,sd=4)

> hist(y)

> qqnorm(y)

> qqline(y)

La distribution de Student

Comme pour le cas gaussien, il y a quatre fonctions associées à la loi de Student. Pour connaître toutes les fonctions, il suffit de taper:

> help(TDist)

Ces fonctions marchent exactement de la même manière que pour le cas de la distribution gaussienne. L'argument à spécifier pour utiliser cette fonction est le degré de liberté. Les noms de ces quatre commandes sont dt, pt, qt, et rt.

Donnons maintenant quelques exemples qui permettent d'illustrer l'utilisation de ces fonctions. Commençons par la fonction dt:

> x <- seq(-20,20,by=.5)

> y <- dt(x,df=10)

> plot(x,y)

> y <- dt(x,df=50)

> plot(x,y)

Ensuite, il y a la fonction qui donne la valeur de la fonction de répartition théorique:

> pt(-3,df=10)

[1] 0.006671828

> pt(3,df=10)

[1] 0.9933282

> 1-pt(3,df=10)

[1] 0.006671828

> pt(3,df=20)

[1] 0.996462

> x = c(-3,-4,-2,-1)

> pt((mean(x)-2)/sd(x),df=20)

[1] 0.001165548

> pt((mean(x)-2)/sd(x),df=40)

[1] 0.000603064

Puis nous avons les valeurs de la fonction quantile:

> qt(0.05,df=10)

[1] -1.812461

> qt(0.95,df=10)

[1] 1.812461

> qt(0.05,df=20)

[1] -1.724718

> qt(0.95,df=20)

[1] 1.724718

> v <- c(0.005,.025,.05)

> qt(v,df=253)

[1] -2.595401 -1.969385 -1.650899

> qt(v,df=25)

[1] -2.787436 -2.059539 -1.708141

>

Enfin, nous pouvons générer un échantillon d'une variable suivant la loi de Student de notre choix en procédant comme suit:

> rt(3,df=10)

[1] 0.9440930 2.1734365 0.6785262

> rt(3,df=20)

[1] 0.1043300 -1.4682198 0.0715013

> rt(3,df=20)

[1] 0.8023832 -0.4759780 -1.0546125

La distribution Binomiale

Comme vous commencez à en avoir l'habitude, il y a aussi quatre fonction associées à la loi Binomiale. Pour le vérifier, taper:

> help(Binomial)

La loi binomiale requiert deux paramètres: le nombre d'expériences réalisées et la probabilité de succès de chacune des expériences. Les commandes suivent les mêmes conventions que pour la loi normale et pour la loi de Student et sont appelées dbinom, pbinom, qbinom, et rbinom.

Voici quelques exemples ci-dessous. On commence par la fonction "dbinom":

> x <- seq(0,50,by=1)

> y <- dbinom(x,50,0.2)

> plot(x,y)

> y <- dbinom(x,50,0.6)

> plot(x,y)

> x <- seq(0,100,by=1)

> y <- dbinom(x,100,0.6)

> plot(x,y)

Puis voici un exemple d'utilisation de la fonction de répartition:

> pbinom(24,50,0.5)

[1] 0.4438624

> pbinom(25,50,0.5)

[1] 0.5561376

> pbinom(25,51,0.5)

[1] 0.5

> pbinom(26,51,0.5)

[1] 0.610116

> pbinom(25,50,0.5)

[1] 0.5561376

> pbinom(25,50,0.25)

[1] 0.999962

> pbinom(25,500,0.25)

[1] 4.955658e-33

Ensuite, la fonction quantile:

> qbinom(0.5,51,1/2)

[1] 25

> qbinom(0.25,51,1/2)

[1] 23

> pbinom(23,51,1/2)

[1] 0.2879247

> pbinom(22,51,1/2)

[1] 0.200531

Enfin, voici la génération d'un échantillon de données qui sont des réalisations de la loi binomiale:

> rbinom(5,100,.2)

[1] 30 23 21 19 18

> rbinom(5,100,.7)

[1] 66 66 58 68 63

>

La distribution du Chi-deux

Vous pouvez voir les quatre fonctions classiques associées à la loi du Chi-deux en tapant:

> help(Chisquare)

Comme pour la loi de Student, il suffit de spécifier les degrés de liberté pour pouvoir utiliser les fonctions associées à la loi du chi-deux. Les commandes sont dchisq, pchisq, qchisq, et rchisq.

Voici quelques exemples en commançant par la valeur de la densité de probabilité, "dchisq":

> x <- seq(-20,20,by=.5)

> y <- dchisq(x,df=10)

> plot(x,y)

> y <- dchisq(x,df=12)

> plot(x,y)

Puis la valeur de la fonction de répartition:

> pchisq(2,df=10)

[1] 0.003659847

> pchisq(3,df=10)

[1] 0.01857594

> 1-pchisq(3,df=10)

[1] 0.981424

> pchisq(3,df=20)

[1] 4.097501e-06

> x = c(2,4,5,6)

> pchisq(x,df=20)

[1] 1.114255e-07 4.649808e-05 2.773521e-04 1.102488e-03

Voici ensuite comment calculer les quantiles:

> qchisq(0.05,df=10)

[1] 3.940299

> qchisq(0.95,df=10)

[1] 18.30704

> qchisq(0.05,df=20)

[1] 10.85081

> qchisq(0.95,df=20)

[1] 31.41043

> v <- c(0.005,.025,.05)

> qchisq(v,df=253)

[1] 198.8161 210.8355 217.1713

> qchisq(v,df=25)

[1] 10.51965 13.11972 14.61141

Et finalement, voici comment simuler un échantillon dont les éléments sont des réalisations de la loi du chi-deux:

> rchisq(3,df=10)

[1] 16.80075 20.28412 12.39099

> rchisq(3,df=20)

[1] 17.838878 8.591936 17.486372

> rchisq(3,df=20)

[1] 11.19279 23.86907 24.81251