Cours 3 IX – Importation et exportation de fichiers ASCII X- Lois de probabilités et simulation d’échantillons XI- Statistiques descriptives IX – Importation et exportation de fichiers ASCII IX- 1 Importer des fichiers ascii Rgui Chargement de fichiers textes (Ascii) stockés en externe : Avec la fonction read.table(). La sortie est un data.frame. read.table(file= ,sep= ,header= ) - file = nom du fichier - sep= séparateur utilisés dans « file » (espace par défaut) - header= T si le fichier « file » contient le nom des colonnes (en tête), F sinon (dans ce cas R utilise les noms de variables par défaut V1,…). header=F par défaut. >p=read.table("C:/Documents and Settings/R_bbsg/donnees/pollution.txt", header=T);is.data.frame(p); IX- 1 Importer des fichiers ascii Rgui Fonction file.choose(): permet de choisir le fichier de façon interactive >f=file.choose(); #choisir le fichier >f [1] "C:\\Documents and Settings\\R-bbsg\\donnees\\pollution.txt " >read.table(f); read.csv(), read.delim(), read.fwf() : Variantes de read.table() R peut lire des fichiers dans d’autres formats (Excel,SAS,SPSS) mais les fonctions nécessaires ne sont pas dans le package base. IX- 2 Exporter des fichiers ascii Fonction write.table() : exporte un fichier créé dans R dans le répertoire de travail write.table(x, file=, append=, col.names=,row.names=) - x : nom du data.frame créé sous R - file= nom du fichier dans lequel on veut écrire - append= si TRUE ajoute au fichier éventuellement existant, si FALSE écrase le fichier existant (F par défaut) - col.names= si TRUE écrit les noms de colonnes - row.names= idem pour les lignes >write.table(f,file= "C:/Documents and Settings/R_bbsg/donnees/pollution2.txt", row.names=T,col.names=T) Fonction write(): équivalent à write.table() mais moins d’options Rgui Rgui IX-3 Sauvegarder des objets R et les restaurer On peut sauver des objets crées dans R dans un fichier, en binaire ou en Ascii: dump(): sauve en ascii des objets R source(): recharge les objets sauvés par dump() save(): sauve en binaire des objets R load(): recharge les objets sauvés par source() >dump(ls(), file="C:/Documents and Settings/R_bbsg/donnees/object.txt") >source("C:/Documents and Settings/donnees/ R_bbsg/object.txt") X- Lois de probabilités X-0 Rappels Densité de la loi normale N(0,1) Répartition de 1000 réalisations de loi N(0,1) X-0 Rappels • Loi normale : X suit une loi N(m,σ) ssif ( x ) = 1 σ 2π − 1 ( x−m)² e 2σ ² ∀x ∈ R • Loi uniforme: X suit une loi U[a,b] ssi f ( x ) = 1 si x ∈ [ a, b ] , 0 sinon b−a • Loi de Poisson: X suit une loi P(λ) ssi P ( X = x) = e −λ λx x! , ∀x ∈ N • Loi binomiale X suit une loi B(n,p)P ( X = x) = Cnx p x (1 − p ) n− x , ∀x ∈ [ 0, n ] X-1 Lois de probabilité, distributions Lois classiques : *norm(),*binom(),*chisq(),*unif,()*pois,(),*t,(), *exp(), ……. R permet d’évaluer les quantités probabilistes suivantes sur les lois classiques: Préfixe p : Fonctions de répartition (F(x)=P(X<=x)) >pnorm(3); pnorm(3,2,1); pbinom(3,10,0.5); pt(6,5) Préfixe d : Densité (P(X=x) ou f(x)) >dnorm(4); dt(7,2); dpois(4,5) Préfixe q : Quantiles d’ordre q (plus petite valeur x telle que P(X<=x)>=q >qnorm(0.4,2,1); qbinom(0.5,10,0.5); qchisq(0.1,8) Préfixe r : Simulations (construction d’échantillons) >runif(50,0,2); rpois(20,3); X-2 Exemples dbinom(k, n, p) : Valeur de P(X=k) lorsque X suit une loi B(n,p). >dbinom(3,10,0.2) [1] 0.2013266 rbinom(k,n,p): k réalisations d’une variable aléatoire de loi B(n,p) [1] 5 2 3 2 4 0 4 2 0 2 >rbinom(10,10,0.2) pbinom(k,n,p) : Valeur de P(X<=k) (fdr de X en k) lorsque X suit une loi B(n,p) >pbinom(1,10,0.2) [1] 0.3758096 > pbinom(2,10,0.2) [1] 0.6777995 qbinom(q,n,p): Quantile d’ordre q, c’est-à-dire la plus petite valeur x telle que P(X<=x)>=q >qbinom(0.5,10,0.2) [1] 2 >qchisq(0.1,8) [1] 3.489539 X-2 Exemples >x=rbinom(100,5,1/3) > barplot(table(x)) >barplot(dbinom(0:5,5,1/3),add= T,col=2) XI- Statistiques descriptives XI-1 Caractéristiques d’une série statistique Soit (x,y) deux séries statistiques (vecteurs ou data.frame) table(x) : compte les fréquences des valeurs de x (x discrète ou caractère) summary(x) : renvoie un résumé statistique du contenu de x, avec le min, 1er quartile, moyenne, médiane, 3 ième quartile et max ( x numérique) mean(x), median(x), var(x), sd(x) : moyenne, médiane, variance , ecart-type (x numérique) quantile(x, probs=) : renvoie les quantiles de la série x (x numérique) correspondant au vecteur de probabilité donné (% de population). Par défaut renvoie les quartiles cor(x,y) : Donne la matrice de corrélations entre x et y (x et y numeriques) cov(x,y) : Donne la covariance entre x et y (x et y numeriques) XI-1 Caractéristiques d’une série statistique >age=c(18, 15, 12, 16, 20, 17); poids=c(55, 57, 46, 54, 60,57); nom=c("a","b","c","a") > table(poids) >table(nom) Poids nom 46 54 55 57 60 abc 1 1 1 2 1 211 > summary(poids) >summary(nom) Min. 1st Qu. Median Mean 3rd Qu. Max. Length Class Mode 46.00 54.25 56.00 54.83 57.00 60.00 4 character character >mean(poids) >quantile(age) [1] 54.83333 0% 25% 50% 75% 100% 12.00 15.25 16.50 17.75 20.00 > quantile(poids) 0% 25% 50% 75% 100% > cor(age, poids) 46.00 54.25 56.00 57.00 60.00 [1] 0.860365 >quantile(poids,prob=0.25) 25% 54.25 >quantile(age,probs=c(0.1,0.4)) 10% 40% 13.5 16.0 XI-2 Visualisation d’une série statistique hist(x) : trace l’histogramme de la série x (x continue) density(x): construit l’estimateur par noyau de la densité de x (x continue). plot(density(x)) le trace. ecdf(x) : construit la fonction de répartition empirique de x. plot(ecdf(x) ) la trace. barplot(x): diagramme en bâtons de la série x (x discrète) stem(x): arbre des valeurs de x (x discrète) boxplot(x): boxplot (boite à moustaches) des valeurs de x qqnorm(x): trace les quantiles de x/ quantiles de la loi normale qqplot(x,y) : trace les quantiles de x /ceux de y plot(x) plot(x,y): nuage des points de coordonnées (x,y) XI-3 Exemples : estimation de la fonction de répartition par la fonctionde répartion empirique (ecdf()) La fonction de répartition empirique associée une série d'observations ayant les valeurs x1 ,....xn est la fonction en escalier entre les points (x(i), i/n) nombre de x i ≤ x 1 n Fn ( x) = = ∑1xi ≤ x n n i =1 Si x1 ,....xn sont des réalisations d’une variable aléatoire X, Fn ( x) est une estimation de la fonction de répartition de X: F ( x) = P( X ≤ x) Au plus n est grand, au plus Fn ( x) est proche de F en tout point. XI-3 Exemples : estimation de la fonction de répartition (ecdf()) d’une loi > essai=rnorm(10);essai # x1….x10 [1] 0.38981636 -0.21302926 0.03082812 -1.30205952 0.18251605 -1.93613408 -0.55674645 0.67634396 1.85267654 1.87018196 > sort(essai) #x(1)….x(10) [1] -1.93613408 -1.30205952 -0.55674645 -0.21302926 0.03082812 0.18251605 0.38981636 0.67634396 1.85267654 1.87018196 >ecdf(essai) Empirical CDF Call: ecdf(essai) x[1:10] = -1.9361, -1.3021, -0.55675, ..., 1.8527, 1.8702 >plot(ecdf(essai)) >essai=rnorm(n); > plot(ecdf(essai),main="fdre pour n- fdr") > curve(pnorm, add=T) XI-3 Exemples: estimation d’une loi discrète (stem(), barplot()) Pour une série discrète x1 ,....xn , on peut représenter la proportion des observations qui prennent chaque valeur x de la série (diagramme en bâtons de la série). nombre de x i = x 1 n pn ( x) = = ∑1xi = x n n i =1 Si x1 ,....xn sont des réalisations d'une variable aléatoire X à valeurs discrètes dans E, pn ( x) est une approximation de la loi de probabilité de X (la séquence P(X=x), x ∈ E ). Le diagramme en bâtons de la série estime le graphe de la loi de X. Au plus n est grand au meilleure est l’estimation. XI-3 Exemples: estimation d’une loi discrète (stem(), barplot()) >essai=rbinom(10, 10,0.3); essai [1] 4 4 4 5 4 4 4 3 1 3 >t=table(essai) essai 1345 1261 >stem(essai) 1|0 2| 3 | 00 4 | 000000 5|0 >barplot(z/length(essai),main ="diagramme des frequences") XI-3 Exemples: estimation d’une loi discrète (stem(), barplot()) >essai=rbinom(n,10,0.3);t=table(essai); barplot(t/length(essai), main="n="); x=0:10; barplot(dbinom(x,10,0.3),col="red" ,add=T); XI-3 Exemples: estimation de la densité d’une loi continue (hist(), density()) La densité f d’une variable continue X Peut être approchée par histogramme : soit I l’intervalle d’observation de la série et I j j ≤ kune partition de I en k classes. L’histogramme basé sur cette partition est la fonction en escaliers valant, dans chaque classe la proportion des observations tombant dans cette classe renormalisée par l’amplitude de la classe. les amplitudes l j des classes doivent être choisies afin de rendre le mieux possible compte de la distribution réelle des observations. ( ) ˆf ( x ) = nombre de xi ∈ I j ∑ n nl j j =1 k 1x∈I j Généralement les classes sont choisies de même amplitude, déterminée par le nombre de classes choisies, R le fait tout seul ou on utilise cut() ˆ Au plus l’échantillon et grand au plus f n est proche de f. XI-3 Exemples: estimation de la densité d’une loi continue (hist(), density()) hist(x, breaks = , prob=, right =,col =, main =, xlab =, ylab=,…) - x: série - breaks: un vecteur donnant les « breakpoints » des classes ou un nombre donnant le nombre de classes+1 ou une fonction pour calculer le nombre de classes. Par défaut , la détermination du nombre k de classes se fait par la règle de Sturges: k = 1 + 1,322log10 n - prob : si F, histogramme des fréquences; si T, histogramme des fréquences relatives (probas). Le défaut est F. -right : si T les classes de l’histogrammes sont fermées à dte, ouvertes à gauche. F par défaut - col=couleur - main, xlab, ylab: titres. XI-3 Exemples: estimation de la densité d’une loi continue (hist(), density()) >x=rnorm(100); hist(x, prob=T, breaks=12) > t=hist(x, prob=T,breaks=12) > names(t) [1] "breaks" "counts" "intensities" "density" "mids" [6] "xname" "equidist" > t$breaks [1] -2.5 -2.0 -1.5 -1.0 -0.5 0.0 0.5 1.0 1.5 2.0 2.5 3.0 > t$density [1] 0.02 0.08 0.24 0.26 0.40 0.44 [7] 0.22 0.18 0.04 0.08 0.04 > t$counts [1] 1 4 12 13 20 22 11 9 2 4 2 >essai=rnorm(50); >hist(essai) #n’estime pas la densité >hist(essai, prob=T, main="histogramme des probabilités") >essai=rnorm(n); >hist(essai, prob=T, main="n"); >curve(dnorm,add=T); XI-3 Exemples: estimation de la densité d’une loi continue (hist(), density()) Peut être approchée par un estimateur à noyau : l’idée est d’approcher la densité de X par celle d’un estimateur de la fonction de répartition de X. La « dérivée » de la fonction de répartition empirique, estimateur classique de la fonction de répartition n’existe pas. Mais en un point x de I, elle vaut à peu près avec h petit : Fˆn ( x + h) − Fˆn ( x − h) nombre de xi tombant dans [ -hx, hx ] 1 n = = 1 xi − x ∑ 2h 2nh 2nh i =1 −1< h ≤1 Prendre cet estimateur revient à considérer que les observations sont uniformément réparties autour de chaque xi. Au lieu de considérer une approximation uniforme, on peut utiliser une distribution plus lisse, de densité K. noyau au point x= somme pondérés des contributions de chaque xi. h est appelé paramètre de lissage, sa valeur détermine la qualité d’estimation. n 1 x − xi fɶn ( x) = K ∑ nh i =1 h XI-3 Exemples: estimation de la densité d’une loi continue (hist(), density()) d=density(x, bw = , kernel =, …) - x: série - bw: taille de la fenêtre de lissage. Définie par un chiffre ou une règle. Automatique par défaut. - kernel: une chaine de caractères donnant le noyau utilisé (gaussien, rectangulaire…). Gaussien par défaut. L’output sort des statistiques sur la série x ainsi que des statistiques sur les valeurs y de la densité estimée en ces points. plot(density(d)) permet d’obtenir le graphe XI-3 Exemples: estimation de la densité d’une loi continue (hist(), density()) • Importance de la fenêtre de lissage: au plus elle est grande, au plus l’estimation est lisse et biaisée, au plus elles est petite, au plus l’estimation est bruitée. >plot(density(essai, bw=0.1)) >plot(density(essai, bw=0.5)) XI-3 Exemples: estimation d’une densité > essai=rnorm(50) > density(essai) Call: density(x = essai) Data: essai (50 obs.); Bandwidth 'bw' = 0.476 x y Min. :-3.80115 Min. :0.0001951 1st Qu.:-1.91420 1st Qu.:0.0167786 Median :-0.02725 Median :0.1253643 Mean :-0.02725 Mean :0.1323521 3rd Qu.: 1.85970 3rd Qu.:0.2431201 Max. : 3.74665 Max. :0.2861070 > plot(density(essai), main="estimateur à noyaux de la densité de essai") >essai=rnorm(n); >plot(density(essai), main="n" ,ylim=c(0,0.4)); >curve(dnorm,add=T); XI-3 Exemples: estimation de la densité d’une loi continue (hist(), density()) >plot(density(essai), main="n=10000"); >hist(essai, prob=T, add=T); XI-3 Exemples: caractéristiques d’une série (boxplot(),qqnorm()) Le boxplot permet de visualiser La fonction qqnorm( ) permet de les caractéristiques d’une série comparer la distribution d’une série à (points aberrants, symétrie, la distribution gaussienne standard. dispersion) >x=c(1,1,2,2,2,3,4); summary(x) >boxplot(formula) Min. 1st Qu. Median Mean 3rd Qu. Max. 1.000 1.500 2.000 2.143 2.500 4.000 >boxplot(x) Formula : série x ou formule y~ grp, avec y série à diviser en groupe selon la variable grp (donne 1 boxplot par groupes ) XI-3 Exemples: caractéristiques d’une série (boxplot(),qqnorm()) XI-3 Exemples: caractéristiques d’une série (boxplot(),qqnorm())