Installation. Notes de Cours sur le logiciel R. Plan. Au démarrage



Documents pareils
Introduction à R. Florence Yerly. Dept. de mathématiques, Université de Fribourg (CH) SP 2011

Introduction à MATLAB R

Initiation au logiciel R

Notes de cours Statistique avec le logiciel R

Lire ; Compter ; Tester... avec R

Plan. Notes de Cours sur le logiciel R. Documentations. Installation. Anne PHILIPPE. 26 septembre Documents sur le logiciel R :

Fiche d utilisation du logiciel. 1 - Installation. J. Thioulouse & D. Chessel

Introduction à la statistique non paramétrique

Cours 7 : Utilisation de modules sous python

MATLAB : COMMANDES DE BASE. Note : lorsqu applicable, l équivalent en langage C est indiqué entre les délimiteurs /* */.

Cours 1. I- Généralités sur R II- Les fonctions de R et autres objets III-Les vecteurs

Calcul Formel et Numérique, Partie I

distribution quelconque Signe 1 échantillon non Wilcoxon gaussienne distribution symétrique Student gaussienne position

INTRODUCTION AU LOGICIEL R

Introduction aux Statistiques et à l utilisation du logiciel R

TABLE DES MATIERES. C Exercices complémentaires 42

Introduction à l approche bootstrap

Simulation de variables aléatoires

Chapitre 3. Les distributions à deux variables

Une introduction. Lionel RIOU FRANÇA. Septembre 2008

Annexe commune aux séries ES, L et S : boîtes et quantiles

Table des matières. I Mise à niveau 11. Préface

1 Introduction - Qu est-ce que le logiciel R?

Exercices M1 SES Ana Fermin ( fermin.perso.math.cnrs.fr/ ) 14 Avril 2015

données en connaissance et en actions?

TP 1 Introduction à Matlab Février 2009

Séance 0 : Linux + Octave : le compromis idéal


Modèle de troncature gauche : Comparaison par simulation sur données indépendantes et dépendantes

Aide-mémoire de statistique appliquée à la biologie

Modèles pour données répétées

INTRODUCTION À L'ENVIRONNEMENT DE PROGRAMMATION STATISTIQUE R

Analyse discriminante et régression logistique: application au cas de l innovation pour les entreprises du Canton du Tessin

3.2. Matlab/Simulink Généralités

Calcul Formel et Numérique, Partie I

TABLE DES MATIÈRES. Bruxelles, De Boeck, 2011, 736 p.

R01 Import de données

1 Importer et modifier des données avec R Commander

Modélisation aléatoire en fiabilité des logiciels

TESTS PORTMANTEAU D ADÉQUATION DE MODÈLES ARMA FAIBLES : UNE APPROCHE BASÉE SUR L AUTO-NORMALISATION

TP 0 : INTRODUCTION À MATLAB

(51) Int Cl.: H04L 29/06 ( ) G06F 21/55 ( )

R - un exemple du succès des modèles libres

STAGE IREM 0- Premiers pas en Python

Programmes des classes préparatoires aux Grandes Ecoles

Analyse exploratoire des données

Etude des propriétés empiriques du lasso par simulations

Statistiques descriptives

TP 1. Prise en main du langage Python

Température corporelle d un castor (une petite introduction aux séries temporelles)

INTRODUCTION AU DATA MINING

I. Programmation I. 1 Ecrire un programme en Scilab traduisant l organigramme montré ci-après (on pourra utiliser les annexes):

Gestion obligataire passive

Python - introduction à la programmation et calcul scientifique

TP1 : LOGICIEL R ET PRÉDICTION DE L EFFLORESCENCE ALGALE

Tests d indépendance en analyse multivariée et tests de normalité dans les modèles ARMA

Une introduction au langage R

INITIATION AU LOGICIEL SAS

Exemples d application

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

PROBABILITES ET STATISTIQUE I&II

La Licence Mathématiques et Economie-MASS Université de Sciences Sociales de Toulouse 1

Aide - mémoire gnuplot 4.0

Logiciel XLSTAT version rue Damrémont PARIS

Corrigé des TD 1 à 5

Densité de population et ingestion de nourriture chez un insecte vecteur de la maladie de Chagas

Gnuplot. Chapitre Lancer Gnuplot. 3.2 Options des graphes

LABO 5 ET 6 TRAITEMENT DE SIGNAL SOUS SIMULINK

Filtrage stochastique non linéaire par la théorie de représentation des martingales

Méthodes de Simulation

MÉTHODE DE MONTE CARLO.

MODELE A CORRECTION D ERREUR ET APPLICATIONS

2010 Minitab, Inc. Tous droits réservés. Version Minitab, le logo Minitab, Quality Companion by Minitab et Quality Trainer by Minitab sont des

Un exemple de régression logistique sous

Déroulement d un projet en DATA MINING, préparation et analyse des données. Walid AYADI

Découverte du tableur CellSheet

NOTE SUR LA MODELISATION DU RISQUE D INFLATION

Maple: premiers calculs et premières applications

La place de SAS dans l'informatique décisionnelle

Manipulation de données avec SAS Enterprise Guide et modélisation prédictive avec SAS Enterprise Miner

La boucle for La boucle while L utilisation du if else. while (condition) { instruction(s) }

1 Complément sur la projection du nuage des individus

MÉTHODES NUMERIQUES. Cours. Licence de Physique Année Universitaire : Licence Chimie, parcours Physique. Semestre S3

Présentation du logiciel

NON-LINEARITE ET RESEAUX NEURONAUX

Statistiques. Rappels de cours et travaux dirigés. Master 1 Biologie et technologie du végétal. Année

Évaluation de la régression bornée

Exemples d Analyses de Variance avec R

TSTI 2D CH X : Exemples de lois à densité 1

Tests non-paramétriques de non-effet et d adéquation pour des covariables fonctionnelles

Probabilités III Introduction à l évaluation d options

Données longitudinales et modèles de survie

FORMULAIRE DE STATISTIQUES

de calibration Master 2: Calibration de modèles: présentation et simulation d

Économetrie non paramétrique I. Estimation d une densité

Calculer avec Sage. Revision : 417 du 1 er juillet 2010

La survie nette actuelle à long terme Qualités de sept méthodes d estimation

Manipuler des données calendaires

L informatique en BCPST

Transcription:

Installation Notes de Cours sur le logiciel R Anne PHILIPPE Université de Nantes, UFR des Sciences et Techniques Laboratoire de Mathématiques Jean Leray email : Anne.philippe@math.univ-nantes.fr 1 er octobre 2008 Le logiciel R est un freeware disponible par exemple sur le site http ://cran.r-project.org/ Il existe des versions Windows MacOS X Linux... Disponible : Le programme de base Des librairies complémentaires Site consacré aux graphiques http ://addictedtor.free.fr/graphiques/ Au démarrage Plan Le logiciel se lance en tapant R dans une fenêtre de commande Linux : informations sur le logiciel les commandes élémentaires : Type "demo()" for some demos, "help()" for on-line help "help.start()" for a HTML browser interface to help. Type "q()" to quit R. >q() Save workspace image? [y/n/c]: le symbole > apparaît automatiquement en début de chaque ligne de commandes le symbole + apparaît en début de ligne si la précédente est incomplète Objets et Opérations Les vecteurs Les Matrices Listes Les fonctions Structures de contrôles et Itérations Autour des probabilités Les graphiques Autour de la régression Séries Chronologiques

Opérations élémentaires Créer des vecteurs Opérations élémentaires sur les scalaires :,, +, /, ˆ >2+4 6 Opérations avec affectation (avec ou sans affichage) >x=2+4 >x 6 >(x=2+4) 6 la fonction c( ) concatène des scalaires ou des vecteurs : > x=c(1,4,9) > y=c(x,2,3) > y [1] 1 4 9 2 3 Suites arithmétiques de raison 1 ou -1 : c(a :b). > c(1:4) # a<b raison 1 > c(4:1) # a>b raison -1 [1] 1 2 3 4 [1] 4 3 2 1 > c(1.4:7) # a-b n est pas un entier [1] 1.4 2.4 3.4 4.4 5.4 6.4 Créer des matrices Généralisation : seq(a,b,t) où a est premier terme, le dernier b et la raison t seq(from, to) la raison est 1 seq(from, to, by= ) on fixe la raison seq(from, to, length.out= ) on fixe le nombre de termes x=rep(y,n) pour créer un vecteur constitué de l élément y répété n fois. (y peut être un scalaire ou un vecteur) Les matrices sont créées avec la fonction matrix() à partir d un vecteur. On doit fixer le nombre de colonnes ncol et/ou le nombre de lignes nrow. > x = matrix(c(2,3,5,7,11,13),ncol=2) Par défaut la matrice est remplie colonne par colonne. Pour remplir ligne par ligne, on ajoute l argument byrow=t > y = matrix(c(2,3,5,7,11,13),ncol=2, byrow=t) > x > y [,1] [,2] [,1] [,2] [1,] 2 7 [1,] 2 3 [2,] 3 11 [2,] 5 7 [3,] 5 13 [3,] 11 13

Extraire des éléments Attention : si la dimension du vecteur n est pas égale au produit (ncol nrow) alors l opération effectuée est la suivante : > matrix(c(1:3), ncol=2,nrow=3) [,1] [,2] [1,] 1 1 [2,] 2 2 [3,] 3 3 > matrix(c(1:3), ncol=2) [,1] [,2] [1,] 1 3 [2,] 2 1 > vect=c(1.1:10.1) > mat=matrix(vect,ncol=3,nrow=3) > vect[1] > mat[2,1] [1] 1.1 [1] 2.1 > mat[,1] #1er colonne > mat[3,] # ligne n^^b0 3 [1] 1.1 2.1 3.1 [1] 3.1 6.1 9.1 > vect[c(2,4,8)] [1] 2.1 4.1 8.1 > mat[2:3,1:2] # sous matrice [,1] [,2] [1,] 2.1 5.1 [2,] 3.1 6.1 Concaténer des vecteurs 1. rbind 2. cbind > x=1:10 > y=x^2 > rbind(x,y) [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] x 1 2 3 4 5 6 7 8 9 10 y 1 4 9 16 25 36 49 64 81 100 > cbind(x,y) x y [1,] 1 1 [2,] 2 4 [3,] 3 9 [4,] 4 16 [5,] 5 25 [6,] 6 36 etc Opérations sur les Matrices/Vecteurs Les opérations + * - / entre 2 vecteurs ou matrices de même dimension sont des opérations terme à terme. > x=c(1:5) > y=c(rep(0,3),rep(1,2)) > x [1] 1 2 3 4 5 > y [1] 0 0 0 1 1 > x*y [1] 0 0 0 4 5 Le produit matriciel est obtenu avec % %

Objets booléens et instructions logiques ATTENTION Si les vecteurs ne sont pas de même longueur, le plus court est complété automatiquement. > x =c(1:5) > x x : 1 2 3 4 5 [1] 1 2 3 4 5 y : 1 2 1 2 1 > y =c(1,2) ----------------- > y x+y : 2 4 4 6 6 [1] 1 2 > x + y [1] 2 4 4 6 6 Les opérations logiques : <, >, <=, >=,!= [différent], == [égal] retournent TRUE ou FALSE. La comparaison entre deux vecteurs est une comparaison terme à terme. Si les vecteurs ne sont pas de même longueur, le plus court est complété automatiquement. > a= 1:5 ; b=2.5 > a<b [1] TRUE TRUE FALSE FALSE FALSE Il est possible de définir plusieurs conditions à remplir avec les opérateurs ET : & OU : Quelques fonctions usuelles Pour extraire les éléments dšun vecteur, on peut utiliser des instructions logiques. extraire les composantes >8 vect[vect>8] : vect>8 est un vecteur de TRUE et FALSE, on extrait les composantes affectées à TRUE. extraire les composantes >8 ou <2 vect[(vect>8) (vect<2)] extraire les composantes >8 et <10 vect[(vect>8) & (vect<10)] Si A = (a i,j ) est une matrice, alors exp(a) retourne une matrice constituée des éléments e a i,j. Idem pour les fonctions : sqrt square root abs absolute value sin cos tan trigonometric functions (radians) exp log exponential and natural logarithm log10 common logarithm gamma lgamma gamma function and its natural log

Ces fonctions retournent un scalaire : soit x un vecteur de dimension n sum() (somme i x i), prod() (produit i x i), mean() (moyenne 1 n n i=1 x i ) max(), min() length(), ncol(), nrow() Ces fonctions retournent un vecteur : cumsum() (sommes cumulées (x 1, x 1 + x 2,..., n i=1 x i), cumprod() (produits cumulés), sort (tri), order, unique remarque : sort(x) = x[order(x)] fft() (transformé de Fourier) which(condition ) à la valeur TRUE retourne les indices des coordonnées égales > x=(1:10)^2 > x [1] 1 4 9 16 25 36 49 64 81 100 > which(x== 25) [1] 5 > which(x > 21) [1] 5 6 7 8 9 10 Cas particulier : which.max(x) (ou which.min) retourne which(x==max(x)) Construire un tableau croisé Importer/exporter des données La fonction outer retourne une matrice de la forme où x et y sont des vecteurs M(i, j) = f (x i, y j ) f une fonction de deux variables f : (x, y) f (x, y) f=function(x,y) sin(x+y^4) x=seq(0,2*pi,0.1) y=seq(0,pi,0.1) M=outer(x,y, f ) 1. Importer une suite : x=scan("data.dat") : pour créer un vecteur à partir de données stockées dans un fichier, ici data.dat. 2. Importer un tableau : x=read.table("data.dat") ou x=read.table("data.dat", header=true) LŠinstruction header=true permet de préciser que la première ligne du fichier contient le nom des colonnes du tableau. 3. Exporter : write, write.table

Définition d une liste Opérations sur les listes C est une structure qui regroupe des objets (pas nécessairement de même type). On crée les listes avec la fonction list Pour obtenir une liste (appelée rnd) contenant un vecteur dans serie un scalaire dans taille une chaîne de caractères dans type la syntaxe est la suivante >rdn=list(serie=c(1:100),taille=100,type="arithm") Pour visualiser les composantes d une liste >names(rdn) [1] "serie" "taille" "type" > summary(rdn) Length Class Mode serie 100 -none- numeric taille 1 -none- numeric type 1 -none- character Pour atteindre les composantes d une liste >rdn$taille OU >rnd[[2]] [1] 100 [1] 100 Plan Pour créer des objets R à partir d une liste (extraire les composantes d une liste) >attach(rdn) "serie" "taille" "type" supprimer les objets créés avec la fonction attach : >detach(rdn) Objets et Opérations Les vecteurs Les Matrices Listes Les fonctions Structures de contrôles et Itérations Autour des probabilités Les graphiques Autour de la régression Séries Chronologiques

Structure générale pour créer des fonctions Exemple La structure générale d une fonction est >myname=function(liste_des_param^^e9tres) { commandes objets_retourn^^e9 } Les accolades { et } définissent le début et la fin de la fonction. La dernière instruction contient le nom de lšobjet retourné par la fonction. Exécuter la fonction : >myname(...) On peut donner des valeurs par défaut aux paramètres >exemple=function(n) { sample=runif(n) # m = mean(sample) ; v =var(sample) list(serie=sample,moyenne=m, variance=v) } >exemple(10) OU exemple(n=10) $serie [1] -1.1532544-1.0295700-0.9065778... [7] -1.0301214 1.0690254-0.2276646 0.1753657 $moyenne [1] -0.2267737 $var [1] 0.7674006 >sortie = exemple(10) >sortie$serie [1] -1.1532544-1.0295700... Exemple : utilisation des paramètres par défaut Plan >exemple2=function(n=10) { sample=runif(n) # m = mean(sample) ; v =var(sample) list(serie=sample,moyenne=m, variance=v) } Les trois commandes suivantes >exemple(10) OU exemple(n=10) OU exemple() retournent le même résultat Objets et Opérations Les vecteurs Les Matrices Listes Les fonctions Structures de contrôles et Itérations Autour des probabilités Les graphiques Autour de la régression Séries Chronologiques

Instructions conditionnelles Boucles La syntaxe if (condition) {instructions} permet de calculer les instructions uniquement si la condition est vraie. if (condition) { A } else {B} calcule les instructions A si la condition est vraie et les instructions B sinon. Par exemple, if (x>0) y=x*log(x) else y=0 Remarque : Si les instructions se limitent à un seul calcul on peut utiliser ifelse Par exemple, y=ifelse(x>0,x*log(x),0) Les 3 structures suivantes sont équivalentes > for ( i in 1:10) ou while (i< 11) ou > repeat + { + { + { + print(i) + print(i) + print(i) + } + i=i+1 + if (i <10 ) +} + {i=i+1} else + { break} + } La fonction apply La fonction apply() permet d effectuer des opérations sur les lignes ou les colonnes d une matrice. Cette fonction retourne un vecteur. > data(nottem) > nottem Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec 1920 40.6 40.8 44.4 46.7 54.1 58.5 57.7 56.4 54.3 50.5 42.9 39.8 1921 44.2 39.8 45.1 47.0 54.1 58.7 66.3 59.9 57.0 54.2 39.7 42.8 etc > x=matrix(nottem,ncol=12,byrow=t) > apply(x,1,mean) # moyenne sur les lignes [1] 48.89167 50.73333 47.27500 47.81667 48.72500 etc > apply(x,2,mean) # moyenne sur les colonnes [1] 39.695 39.190 42.195 46.290 52.560 58.040 61.900 60. etc La fonction sapply,lapply On applique la même fonction sur chacune des coordonnées d un vecteur ou sur chacune des composantes d une liste. > cars speed dist 1 4 2 2 4 10 3 7 4 etc >pts <- list(x=cars[,1], y=cars[,2]) >lapply(x, mean) $x $y [1] 15.4 [1] 42.98 >lapply(x, quantile, probs = 1:3/4) $x 0% 25% 50% 75% 100% 4 12 15 19 25 $y 0% 25% 50% 75% 100% 2 26 36 56 120

Quelques commandes Plan > ls() liste des variables et des fonctions > source( nom.com ) pour exécuter les commandes dans le fichier nom.com > remove(a) supprimer l objet a > rm(list=ls()) pour effacer l ensemble des objets créés > # débute une ligne de commentaires > readline() pour faire une pause > browser() interrompre le programme pour inspecter les variables locales Objets et Opérations Les vecteurs Les Matrices Listes Les fonctions Structures de contrôles et Itérations Autour des probabilités Les graphiques Autour de la régression Séries Chronologiques Les lois Loi nom paramètres beta beta shape1 shape2 ncp binomial binom size prob Cauchy cauchy location scale chi-squared chisq df ncp exponential exp rate F f df1 df1 ncp gamma gamma shape scale geometric geom prob hypergeometric hyper m n k package: stats Loi nom paramètres log-normal lnorm meanlog sdlog logistic logis location scale negative binomial nbinom size prob normal norm mean sd Poisson pois lambda Student t t df ncp uniform unif min max Weibull weibull shape scale Wilcoxon wilcox m n

package: stats Simulation de variables aléatoires suivant les lois disponibles : runif(taille,min=0,max=1), rpois(taille, a), rnorm(taille, mean=0, sd=1), rbinom(taille, n,p) etc.. Simulation de va iid suivant une loi discrète à support fini : p(x = x i ) = p i avec i = 1..k sample(x, size, replace=false, prob) En remplaçant r par d, p ou q on obtient respectivement la densité la fonction de répartition son inverse Exemple : on simule des variables aléatoires iid suivant la loi normale standard (i.e. moyenne 0 et variance 1) > x=rnorm(1000,0,1) Statistiques descriptives (sur les valeurs simulées x) > median(x) [1] -0.0584617 > mean(x) [1] -0.04102906 > range(x) > var(x) [1] -3.427918 2.847309 [1] 0.9918595 >quantile(x, probs=c(5,50,95)/100) Plan la fonction centrale : plot() Objets et Opérations Les vecteurs Les Matrices Listes Les fonctions Structures de contrôles et Itérations Autour des probabilités Les graphiques plot : pour tracer la première courbe package: graphics points ou lines : pour ajouter une ligne ou un nuage de points Autour de la régression Séries Chronologiques

x< rexp(50,1) plot(x) y< rexp(50,1) plot(y, type="l",col=3,lty=2) Quelques arguments de la fonction plot : type="p" (points) ou "l" (ligne) : pour tracer une ligne ou un nuage de points. pch : type de points lty type de lignes. x 0 1 2 3 4 5 0 10 20 30 40 50 Index plot(x,y) y 0.0 1.0 2.0 3.0 0 10 20 30 40 50 Index col : couleur pour fixer les limites des axes : ylim=c(1,10) et xlim=c(1,10) y 0.0 1.0 2.0 3.0 0 1 2 3 4 5 x plot(x,type="l") plot(x,type="p") superposer des courbes x 0 1 2 3 4 5 x 0 1 2 3 4 5 0 10 20 30 40 50 0 10 20 30 40 50 Index Index > x=rnorm(20) > y=rexp(20) x 0 1 2 3 4 5 plot(x,type="h") 0 10 20 30 40 50 x 0 1 2 3 4 5 plot(x,type="s") 0 10 20 30 40 50 > plot(x,y) #nuage de points > points(x+.1,y+.1, pch=2) #ajouter un nuage de points > lines(sort(x),y, lty=2) #ajouter une ligne > text(1,5,"text") #texte > abline(h=3) #ajouter une ligne horizontale >title("texte") # ajouter un titre Index Index

Autour de la fonction plot texte y 0 1 2 3 4 > methods(plot) [1] "plot.data.frame" "plot.default" [3] "plot.density" "plot.factor" [5] "plot.formula" "plot.function" [7] "plot.histogram" "plot.lm" [9] "plot.mlm" "plot.mts" [11] "plot.new" "plot.posixct" [13] "plot.posixlt" "plot.table" [15] "plot.ts" "plot.window" [17] "plot.xy" 2 1 0 1 2 x Quelques exemples sur une fonction (par ex sin) > plot(sin,xlim=c(-pi,pi)) sur un tableau > x=rpois(1000,1) > y=table(x) > y x 0 1 2 3 4 5 352 371 203 55 18 1 > plot(y) sin (x) 1.0 0.0 1.0 3 1 0 1 2 3 x Histogram of r y 0 100 300 0 1 2 3 4 5 x density(x = r) sur un histogramme ou une densité >r=rnorm(100,1) > z=hist(r,plot=f) > plot(z) >w=density(r) >plot(w) Frequency 0 10 20 30 2 0 1 2 3 4 r Density 0.00 0.15 0.30 2 0 2 4 N = 100 Bandwidth = 0.3615

Quelques graphiques Pour sauvegarder un graphique dans un fichier PostScript dev.print(postscript, file="essai.ps") voir aussi la fonction postscript() La fenêtre graphique peut être fractionnée en utilisant par(mfrow=c(n,m)), on obtient alors n*m graphiques sur une même page repartis sur n lignes et m colonnes split.screen(m,n) puis screen(i) ou screen(i,false) pour ajouter, erase.screen() close.screen(all = TRUE) > x=rpois(20,1) > par(mfrow=c(2,2)) >plot(x) hist, boxplot > hist(x) > boxplot(x) barplot > barplot(x) pairs Les graphiques obtenus Utilisation des biplots Histogram of x >data(iris) >iris x 0.0 1.0 2.0 3.0 0.0 1.0 2.0 3.0 5 10 15 20 Index Frequency 0 2 4 6 8 0.0 1.0 2.0 3.0 0.0 1.0 2.0 3.0 x Sepal.Length Sepal.Height Petal.Length Petal.Height Species 1 5.1 3.5 1.4 0.2 setosa 2 4.9 3.0 1.4 0.2 setosa 3 4.7 3.2 1.3 0.2 setosa 4... 52 6.4 3.2 4.5 1.5 versicolor 53 6.9 3.1 4.9 1.5 versicolor 54 5.5 2.3 4.0 1.3 versicolor 55 6.5 2.8 4.6 1.5 versicolor... 147 6.3 2.5 5.0 1.9 virginica 148 6.5 3.0 5.2 2.0 virginica

pairs(iris[1:4]) 2.0 2.5 3.0 3.5 4.0 0.5 1.0 1.5 2.0 2.5 > summary(iris) Sepal.Length Sepal.Height Petal.Length Petal.Height Min. :4.300 Min. :2.000 Min. :1.000 Min. :0.100 1st Qu.:5.100 1st Qu.:2.800 1st Qu.:1.600 1st Qu.:0.300 Median :5.800 Median :3.000 Median :4.350 Median :1.300 Mean :5.843 Mean :3.057 Mean :3.758 Mean :1.199 3rd Qu.:6.400 3rd Qu.:3.300 3rd Qu.:5.100 3rd Qu.:1.800 Max. :7.900 Max. :4.400 Max. :6.900 Max. :2.500 Species setosa :50 versicolor:50 virginica :50 2.0 2.5 3.0 3.5 4.0 0.5 1.0 1.5 2.0 2.5 Sepal.Length Sepal.Width Petal.Length Petal.Width 4.5 5.5 6.5 7.5 1 2 3 4 5 6 7 4.5 5.5 6.5 7.5 1 2 3 4 5 6 7 pairs(iris[1:4], main = "Anderson s Iris Data -- 3 species", pch = 21, bg = c("red", "green3", "blue")[codes(iris$species)]) Quelques outils de la statistique classique Anderson s Iris Data 3 species 2.0 2.5 3.0 3.5 4.0 0.5 1.0 1.5 2.0 2.5 package: stats Sepal.Length 4.5 5.5 6.5 7.5 Estimation de la densité par l estimateur à noyau (voir l aide pour le choix du noyau, la vitesse de fermeture de la fenêtre etc.) 2.0 2.5 3.0 3.5 4.0 0.5 1.0 1.5 2.0 2.5 Sepal.Width Petal.Length Petal.Width 1 2 3 4 5 6 7 par(mfrow=c(1,2)) x_rnorm(10000) #echantillon N(0,1) y_density(x) #estimateur ^^e0 noyau plot(y) #repr^^e9sentation graphique hist(x, proba=t) #histogramme lines(y) #superpose estimateur ^^e0 noyau z_seq(min(x),max(x),0.01) lines(z,dnorm(z,0,1),lty=2) #superpose densit^^e9 th^^e9orique 4.5 5.5 6.5 7.5 1 2 3 4 5 6 7

Exemple : mélange de lois density(x = x) Histogram of x On considère la densité de probabilité suivante Density 0.0 0.1 0.2 0.3 0.4 Density 4 0 2 4 N = 10000 Bandwidth = 0.1429 0.0 0.1 0.2 0.3 0.4 4 0 2 4 x f (x) = 1 4 Pour simuler suivant f 1 e 1 2 (x 5)2 + 3 1 e 1 2 (x+5)2 2π 4 2π w_rbinom(50,1,1/4) sample _ w*rnorm(50,5) +(1-w) * rnorm(50,-5) Estimation de la densité f >(kernels = eval(formals(density)$kernel)) [1] "gaussian" "epanechnikov" "rectangular" etc >plot(density(sample, n = 2^13)) >for (i in 2:length(kernels)) + lines(density(sample, kern = kernels[i], n = 2^13), col = i) Fonction de répartition empirique (ecdf) density(x = sample, n = 2^10) Density 0.00 0.05 0.10 0.15 0.20 0.25 ˆF n (t) = 1 n n 1 ] t] (X i ) F (t) i=1 > x= rnorm(100) >Fn=ecdf(x) >plot(fn) #on trace la cdf empirique > z=seq(min(x),max(x),0.01) # ajoute la cdf theorique > lines(z,pnorm(z), col=3,lwd=2) 10 5 0 5 N = 50 Bandwidth = 0.8079

Illustration de la convergence p.s. c(0:(n 1))/n 0.0 0.2 0.4 0.6 0.8 1.0 3 2 1 0 1 2 3 sort(x) Soit X 1,..., X n une suite de variables aléatoires iid, si E X 1 < alors 1 n X i E(X 1 ) n n_50000 par(mfrow=c(2,1)) #loi gaussienne x_rnorm(n,0,1) y_cumsum(x)/(1:n) plot(y, type= l ) abline(h=0) i=1 # loi d Cauchy xx_rt(n,0,1) yc_cumsum(xc)/(1:n) plot(yc, type= l ) moyenne empirique : cas gaussien Quelques librairies y[m] 0.08 0.00 0 10000 20000 30000 40000 50000 m Pour la liste des librairies library() On charge une librairie avec la fonction library(nom-de-la-librairie). Quelques librairies base, stats, graphics, etc sont chargées au lancement de R yc[m] 1 1 moyenne empirique : cas cauchy 0 10000 20000 30000 40000 50000 m base The R Base Package graphics The R Graphics Package boot Bootstrap R (S-Plus) grid The Grid Graphics Package Functions (Canty) MASS Main Package of Venables class Functions for and Ripley s MASS Classification stats The R Stats Package foreign Read data stored by stats4 Statistical functions Minitab, S, SAS, SPSS, using S4 classes Stata,...

Tests classiques : Exemple : Test de Student t.test() package: stats X 1,..., X n iid N (1, 1) et Y 1,..., Y m iid E(1) Test H 0 : E(X ) = E(Y ) vs H 1 : E(X ) E(Y ) t.test(x,mu=5,alt="two.sided") t.test(x,y,alt="less", conf=.95) var.text(x,y) cor.test(x,y) chisq.test(x,y) Box.test(z, lag = 1) shapiro.test(x) ks.test(x,"pnorm") ks.test(x,y) #student # comparaison variance # non correlation #independance #non correlation #normalit^^e9 #normalit^^e9 K-S # m^^eame distribution > x = rnorm(100,1,1) > y = rexp(200,1) > t.test(x,y) Welch Two Sample t-test data: x and y t = -0.2178, df = 178.446, p-value = 0.8278 alternative hypothesis: true difference in means is not equal to 0 95 percent confidence interval: -0.2648092 0.2121608 sample estimates: mean of x : 0.9544127 mean of y : 0.9807369 Test d ajustement Performance de l algorithme On simule une loi normale en utilisant le TCL sur des variable iid suivant la loi uniforme. Méthode de simulation non exacte... U = 1,..., U n iid suivant la loi uniforme n 12 (Ū n 1 2 ) X N(0, 1) Ū n = 1 n La générateur s écrit simu<-function(taille,size) { y = matrix(runif(taille*size),ncol=size) (apply(y,1,mean)-1/2)*sqrt(taille/12) } n i=1 U i Pour différentes valeurs de n = 1, 5, 10 X = simu(1000,n) test=ks.test(x,"pnorm",0,1)$p.value test2 = shapiro.test(x)$p.value plot(sort(x),(1:size)/size, type="s", col="orange") lines(seq(-3,3,.1),pnorm(seq(-3,3,.1)),col="red") title(paste("n=",n," et pvalue(ks)=",floor(c(test)*100)/100)) hist(x,col="orange", xlim=c(-3,3), proba=t,main="") lines(seq(-3,3,.1),dnorm(seq(-3,3,.1)),col="red") title(paste("pvalue(shapiro)=",floor(c(test2)*100)/100))

(1:size)/size 0.0 0.8 n= 1 et pvalue(ks)= 0 (1:size)/size 0.0 0.8 n= 5 et pvalue(ks)= 0.01 2 1 0 1 2 3 1.5 0.5 0.5 1.0 1.5 sort(x) sort(x) Density 0.00 pvalue(shapiro)= 0 Density 0.0 0.4 pvalue(shapiro)= 0.03 3 2 1 0 1 2 3 3 2 1 0 1 2 3 X X n= 10 et pvalue(ks)= 0.81 Plan (1:size)/size 0.0 0.8 3 2 1 0 1 2 sort(x) Objets et Opérations Les vecteurs Les Matrices Listes pvalue(shapiro)= 0.18 Les fonctions Density 0.0 0.3 3 2 1 0 1 2 3 Structures de contrôles et Itérations Autour des probabilités X Les graphiques Autour de la régression Séries Chronologiques

Régression linéaire Le modèle le plus simple package: stats Y 1 2 3 4 5 6 5 0 5 10 regression$resid 1.5 0.0 1.0 5 10 15 y i = ax i + b + ɛ i X Index où (ɛ i ) i est une suite de variables aléatoires non corrélées. Pour réaliser une régression linéaire, par la méthode des moindres carrés, on utilise la fonction lm : Si les données sont sous la forme de 2 vecteurs X et Y (de même taille) > regression=lm(y~x) > regression Coefficients: (Intercept) X 2.7679 0.3511 Frequency Histogram of regression$resid 0 2 4 6 2.0 1.0 0.0 1.0 regression$resid Visualisation : Si les données sont disponibles sous la forme d une liste : par exemple la liste cars contient speed dist cars > par(mfrow=c(2,2)) > plot(x,y) # nuage > lines(regression$fitted.values) > plot(regression$residuals) # residus > hist(regression$resid) dist 0 20 40 60 80 100 120 5 10 15 20 25 speed > data(cars) > fit = lm(dist ~ speed, cars)

Visualisation dist Frequency 0 60 120 5 10 15 20 25 speed Histogram of fit$resid Series fit$resid 0 5 15 ACF 0.2 0.6 > split.screen(c(2,1)) [1] 1 2 > split.screen(c(1,2), screen = 2) [1] 3 4 > screen(1) > plot(cars, col="pink") > abline(fit) > screen(3) > hist(fit$resid) > screen(4) > acf(fit$resid) 20 0 20 40 fit$resid 0 5 10 15 Lag Lissage package: stats dist 0 20 40 60 80 100 120 >data(cars) >attach(cars) >plot(speed, dist) >lines(ksmooth(speed, dist, "normal", bandwidth=2), col=2) >lines(ksmooth(speed, dist, "normal", bandwidth=5), col=3) >lines(ksmooth(speed, dist, "normal", bandwidth=10), col=4) 5 10 15 20 25 speed

Polynômes Locaux package: stats dist 0 20 40 60 80 100 120 >data(cars) >cars.lo = loess(dist ~ speed, cars) >p = predict(cars.lo, data.frame(speed = seq(5, 30, 1)), se = TRUE) >plot(cars) >lines(seq(5, 30, 1),p$fit,col="green3") 5 10 15 20 25 speed Plan régression multiple lm(v v1 + v2 + v3) régression linéaire généralisée glm etc Objets et Opérations Les vecteurs Les Matrices Listes Les fonctions Structures de contrôles et Itérations Autour des probabilités Les graphiques Autour de la régression Séries Chronologiques

Exemple package: stats L objet série chronologique est une liste qui contient les valeurs observées, la fréquence des observations, la date de la première observation la date de la dernière, etc... > data(usaccdeaths) > USAccDeaths Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov D 1973 9007 8106 8928 9137 10017 10826 11317 10744 9713 9938 9161 89 1974 7750 6981 8038 8422 8714 9512 10120 9823 8743 9129 8710 86 1975 8162 7306 8124 7870 9387 9556 10093 9620 8285 8466 8160 80 1976 7717 7461 7767 7925 8623 8945 10078 9179 8037 8488 7874 86 1977 7792 6957 7726 8106 8890 9299 10625 9302 8314 8850 8265 87 1978 7836 6892 7791 8192 9115 9434 10484 9827 9110 9070 8633 92 >plot(usaccdeaths) USAccDeaths 7000 8000 9000 10000 11000 Pour créer une série chronologique, on utilise la fonction ts >bruit.blanc=ts(rnorm(100), frequency = 1, start = c(1), end=c(100)) >data=c(bruit.blanc) #r^^e9cup^^e8re les observations # dans le vecteur data >plot(bruit.blanc) >acf(bruit.blanc, type="correlation") #ou type="covariance" ou type="partial" 1973 1974 1975 1976 1977 1978 1979 Time

Filtre bruit.blanc 2 0 20 40 60 80 100 Time Premier exemple de filtre : (I L p ) d, on utilise la fonction diff >diff(x,lag=p,differences=d) La fonction filter permet d appliquer des filtres linéaires : ACF 0.2 Series bruit.blanc 0 5 10 15 20 Lag y=filter(x,sides= 1, method = convolution,filter=c(2,3)) # y[i] = 2*x[i] + 3*x[i-1] y=filter(x,sides= 2, method = convolution,filter=c(2,3,4)) # y[i] = 2*x[i-1] + 3*x[i] +4]*x[i+1] y=filter(x,method = recurcive,filter=c(2,3)) #y[i] = x[i] + 2*y[i-1] + 3*y[i-2] Ces fonctions permettent en particulier de créer un générateur de processus ARMA. Étude préliminaire de la série USAccDeaths Series USAccDeaths Series USAccDeaths { } periodogram = function(traj) n = length(traj) freq = 1:(n %/% 2)/(n) periodogram = Mod(fft(traj))[2:(n %/% 2 + 1)]^ 2/(2 * pi * n) plot(freq, periodogram, type = "l") ACF periodogram 0.4 0.2 0.6 1.0 0 1500000 0.0 0.5 1.0 1.5 Lag Partial ACF 0.4 0.0 0.4 0.2 0.6 1.0 1.4 Lag >acf(usaccdeaths) >pacf(usaccdeaths) >periodogram(usaccdeaths) 0.0 0.1 0.2 0.3 0.4 0.5 freq

modélisation et prévision AR La fonction ar permet d estimer les paramètres d un modèle AR A p (L)X [t] = e[t] Si l ordre p n est pas précisé, le meilleur modèle AR pour le critère AIC est sélectionné. >data(lh) >ar(lh) Call:ar(x = lh) Coefficients: 1 2 3 0.6534-0.0636-0.2269 Order selected 3 sigma^2 estimated as 0.1959 >ar(lh, aic = FALSE, order.max = 4) # on fixe p=4 Call: ar(x = lh, aic = FALSE, order.max = 4) Coefficients: 1 2 3 4 0.6767-0.0571-0.2941 0.1028 Order selected 4 sigma^2 estimated as 0.1983 ATTENTION x doit être une série chronologique (x=ts(x)) Autour des modèles ARMA Modèle ARMA : Estimation ARMAacf pour le calcul des covariances théorique d un modèle ARMA ARMAtoMA pour le développement en MA infinie d un modèle ARMA arima.sim pour simuler des trajectoires d un modèle ARMA ou ARIMA La fonction ar permet d estimer les paramètres d un processus AR. Pour les modèles ARMA d ordre (p,q) X [t] = a[1]x [t 1]+...+a[p]X [t p]+e[t]+b[1]e[t 1]+...+b[q]e[t q] on utilise la fonction arima, la syntaxe est out=arima(x,order=c(p,0,q)) la sortie out est une liste contenant : out$coef : estimation des coefficients, out$resid : estimation des résidus e[t] ATTENTION x doit être une série chronologique (x=ts(x))

modélisation et prévision SARIMA Plus généralement, la fonction arima permet d estimer les paramètres d un modèle SARIMA A p (L)α P (L s )Y [t] = β Q (L s )B q (L)e[t] avec Y [t] = (I L) d (I L s ) D X [t] la syntaxe est la suivante : out=arima(x,order=c(p,d,q), seasonal=list(order=c(p,d,q),period=s)) la sortie est une liste contenant : out$coef : estimation des coefficients, out$aic : critère AIC, out$resid : estimation des résidus e[t] option : include.mean=f ou T Exemple : data(usaccdeaths) a = c(usaccdeaths) USAcc= ts(a[1:60],frequency=12,start=c(1973,1)) fit = arima(usacc, order=c(0,1,1), seasonal=list(order=c(0,1,1))) Call: arima(x = USAcc, order = c(0, 1, 1), seasonal = list(order = c(0,1, 1))) Coefficients: ma1 sma1-0.4343-0.4419 Approx standard errors: ma1 sma1 0.1368 0.0122 sigma^2 estimated 114276: log likelihood = -341.73, aic = 687.46 USAccDeaths 7000 8000 9000 10000 11000 1973 1974 1975 1976 1977 1978 1979 Prévision pour des modèles SARIMA Pour prévoir à l horizon h, on utilise la fonction predict >out=arima0(...) > p=predict(out,h) p$pred #contient les pr^^e9visions p$se #erreurs de pr^^e9vision ( ^^e9cart type ) Exemple : p = predict(fit, n.ahead=12) plot(usaccdeaths, col="orange") lines(p$pred,col="red3") lines(p$pred+1.96*p$se, col="blue2") lines(p$pred-1.96*p$se, col="blue2") Plus généralement : la fonction predict package: stats > methods(predict) [1] "predict.ar" "predict.arima" [3] "predict.loess" "predict.ppr" [5] "predict.smooth.spline" "predict.smooth.spline.fit" [7] "predict.glm" "predict.lm" [9] "predict.mlm" Time

lissage exponentiel Holt Winters filtering La méthode de lissage de Holt & Winter est disponible sous R. Les fonctions s appelle HoltWinters et predict.holtwinters. Exemple : sur la série data(co2) data(co2) m = HoltWinters(co2) p = predict(m, 50, prediction.interval = TRUE) plot(m, p) cette fonction peut aussi être utilisée pour des modèles multiplicatifs #lissage # prevision Observed / Fitted 320 330 340 350 360 370 1960 1970 1980 1990 2000 le lissage simple si l on impose les coefficients. Time