• Aucun résultat trouvé

Aide-mémoire du langage R

N/A
N/A
Protected

Academic year: 2022

Partager "Aide-mémoire du langage R"

Copied!
16
0
0

Texte intégral

(1)

Aide-mémoire du langage R

Table des matières

A Préliminaires 1

B Chargement de module 1

C Constantes et fonctions 2

D Vecteurs 2

E Matrice 3

F Tableau 5

G Facteur 5

H Caractère 6

I Table 6

J Liste 7

K Cadres de données 7

L Quelques commandes utiles 8

M Applications 9

N Structures de contrôle 10

O Lois de probabilité 10

P Statistique descriptive 11

Q Fonctions graphiques 12

R Graphiques tridimensionnel 13

S Divers 13

T Régression linéaire 14

U Utilisation de données 14

V En vrac 15

A Préliminaires

- L'aide sur un commande, par exemple solve, s'obtient par help(solve) ou?solve.

- Une autre façon d'obtenir de l'aide consiste à entrer RSiteSearch(”solve”) qui renvoie au site http://finzi.psych.upenn.edu/via le site du projet CRAN.

- Le caractère # neutralise la ligne qui le suit.

(2)

- L'aectation d'une variable x se supprime par rm(x).

- Une ligne de commandes entourée de parenthèses ache le résultat de cette ligne. On peut aussi, si besoin est, faire acher une ligne par les commandesprint ou print.def ault.

- Lorsqu'une commande porte sur un objet qui contient des valeurs N A(non avaible, i.e. non attribuées), on peut utiliser l'option na.rem=T pour supprimer ces valeurs.

- Les opérations sur les complexes sont Re, Im, M od,Arg etConj.

- is.vector(x) teste l'appartenance de l'objet x à la classe vector; tests analogues pour les classes matrix, list, array, table,character, data.f rame, f unction,..

- Adresses ocielles du logiciel R :

http://www.r-project.org/ ouhttp://cran.r-project.org

- Le code d'une commande s'obtient en entrant le nom de cette commande - On trouvera des codes sources à l'adresse suivante

http://svn.r-project.org/R/trunk/src/library/stats/R/

- Le site site suivant est consacré aux statistiques avec R. Il constitue une excellente illustration des possibilités graphiques du logiciel R.http://zoonek2.free.fr/UNIX/48_R/all.html

- On trouvera une liste des commandes de R sur le site http://nobelis.eu/photis/

B Chargement de module

Pour télécharger un module, par exemple le module ISwR qui contient des données statistiques, on uti- lise l'instruction install.packages(”ISwR”, .libP aths()[1]). L'instructionlibrary(ISwR)charge ensuite le module dans R.

On peut aussi charger un module en utilisant l'optionChargerlepackage... de le rubrique P ackagesde la barre de menu, en choisissant d'abord un site miroir, puis le module.

La liste de tous les modules, ainsi que les données contenues dans ces modules, s'obtient avec data(package=.packages(all.available=T RU E)).

C Constantes et fonctions

Constantes : pi, exp(1), 1i, TRUE, FALSE, Inf (inni)

Fonctions arithmétiques : n%/%(resp. n%%p) donne le quotient (resp. le reste) de la division euclidienne de n par p;f actorial(n) =n!

Fonctions réelles :exp,log,log10,log2,cos,sin,tan,acos,asin,atan,gamma(=f actorial(n+1),f loor(partie entière),ceiling (plus petit entier supérieur ou égal)

Combinatoire : f actorial(n) =gamma(n+1) (=n! si n entier), choose(n, p) (=Cnp), f ields.pochdown(n, p) (né- cessite le module "elds", =Apn=n!/(n−p)!= (n)p, falling factorial en anglais), f ields.pochup(n, p)(nécessite le module "elds", =(n+p−1)!/(n−1)! = (n)p, fonction de Pochhammer, ascending factorial en anglais), pochhammer(n, p)(nécessite le module "orthopolynom", =(n+p−1)!(n−1)!)

Fonctions logiques : & (vectoriel),&& (non vectoriel) (et) ;∣ (vectoriel),∣∣ (non vectoriel) (ou) ; !(négation) ; ==

(égal) ;!= (diérent)

Remarque Quand T RU E (resp. F ALSE) est utilisé dans un calcul algébrique, T RU E (resp. F ALSE) prend la valeur 1(resp. 0) :4∗T RU E=4, T RU E∗F ALSE=0.

(3)

D Vecteurs

Création

- a=c(7,−8,3,−4,6) engendre le vecteur 7, -8, 3, -4, 6

- 2.5∶6et seq(2.5,6) engendrent le vecteur 2.5, 3.5, 4.5, 5.5 (le pas implicite est 1) - seq(5) équivaut à 1 :5

- 6.3∶2.5 engendre le vecteur 6.3 5.3 4.3 3.3

- seq(1.2,3,0.4)engendre le vecteur, de pas 0.4, 1.2, 1.6, 2, 2.4, 2.8 - seq(1.2,3, length=100)engendre 100 réels équirépartis entre 1,2 et 3

- data.entry(x)ouvre un éditeur de données qui permet de modier le vecteur x - par=c(esp= −2, var=5), par retourne esp var-2 5

Extraction

- Si a est le vecteur c(7,-8,3,-4,6) - a[2] donne l'élément -8

- a[−2] donne le vecteur 7, 3 -4 6 - a[2∶4]donne le vecteur -8, 3, -4 - a[4∶2]donne le vecteur -4, 3, -8 - a[a<5] donne le vecteur -8, 3, -4 - a[a< −2] donne le vecteur -4 - a[a< (−2)] donne le vecteur 8, -4

- Si b=c(2,1,3,2,4,1), a[b] donne le vecteur -8, 7, 3, -8, -4,7 - Si d=c(T, T, F, T, F), a[d] retourne [1] 7 -8 -4

Répétition - Si a=1∶4

- rep(a,3) donne le vecteur 1 2 3 4 1 2 3 4 1 2 3 4

- rep(1∶4, each=2)et rep(1∶4, c(2,2,2,2)) donne le vecteur 1 1 2 2 3 3 4 4 - rep(1∶4, c(2,1,3,1)) donne le vecteur 1 1 2 3 3 3 4

- rep(1∶4, each=2, len=4) donne le vecteur 1 1 2 2

- rep(1∶4, each=2, len=10) donne le vecteur 1 1 2 2 3 3 4 4 1 1

- rep(1∶4, each=2, times=3) donne le vecteur 1 1 2 2 3 3 4 4 1 1 2 2 3 3 4 4 1 1 2 2 3 3 4 4 Opérations unaires

Sia est un vecteur de longueur n : - length(a) donne la longueurn du vecteura

- a[−i], 1≤i≤n, donne le vecteur de longueur n−1 obtenu en supprimant la ie composante

- rev(a) est le vecteur dont les composantes sont dans l'ordre inverse de celui de a (équivaut à a[n∶1]) - sum(a) : somme des éléments de a, cumsum(a) somme cumulée des éléments de a

- prod(a) : produit des éléments, cumprod(a) produit cumulé - sort(a) donne le vecteur réordonné croissant

- order(a) donne la statistique de rang : sia=c(2,5,2,1,2,3,2), order(a) donne le vecteur c(4,1,3,5,7,6,2) - which.min(a) (resp. which.max(a)) donne le plus petit indice correspondant au minimum (resp.maximum) - range(a) donne la plus petite valeurmin(a)et la plus grande valeur max(a)

(4)

- table(a) donne le tableau des eectifs de a, i.e. l'ensemble des valeurs des éléments da a, et en dessous d'une valeur le nombre d'occurrence de cette valeur dans a

- matrix(a) transformea en une matrice n×1, et t(a) transforma a en une matrice 1×n

- Si f est une fonction, f(a) renvoie le vecteur dont les élément sont les images par f des éléments de a - di(a, p)renvoie le vecteur de longueur n−p (a[1] −a[1+p], ...,(a[n−p] −a[n])

- duplicatedsi a=c(3,1,3,2,4,3,1,5), duplicated(a) retourne [1] FALSE FALSE TRUE FALSE FALSE TRUE TRUE FALSE - uniquesi a=c(3,1,3,2,4,3,1,5), unique(a) retourne [1] 3 1 2 4 5

Opérations binaires - Si x=c(4,6,9) ety=c(2,4,3)

c(x, y)donne le vecteur c(4,6,9,2,4,3) obtenu par concaténation de x ety - x∗y donne le vecteur 8, 24, 27 obtenu par produit élément par élément - x%∗%y donne le produit scalaire de xet y, dont la valeur est 59 - x/y le vecteur 8, 9, 27 obtenu par quotient élément par élément

Attributs

Sia=c(2−4i,−5+2i) :class(a) =”complex”, typeof(a) =”complex” etmode(a) =”complex”.

E Matrice

Création

- Si x=1∶6, dim(x) =c(2,3)transforme x en la matrice de même nom( 1 3 5 2 4 6 )

- matrix(x,2),matrix(x, nrow=2) et cbind(c(1,2), c(3,4), c(4,6))crée la matrice ( 1 3 5 2 4 6 ) - matrix(x,2, byrow=T) etrbind(c(1,2,3), c(4,5,6))crée la matrice ( 1 2 3

4 5 6 ) - Si u=c(1,2,3) etv =c(4,5,6), cbind(u, v)crée la matrice

- diag(n) crée la matrice unité de dimension n

- diag(a, n, p) crée la matrice de dimensionn×p dont les éléments diagonaux sont égaux àa - Si v =c(a1, ..., an), diag(v) crée la matrice n×n diag(a1, ..., an)

- matrix(a< −2,3,5) crée une matrice3×5 dont tous les éléments sont égaux à 2, et aecte la valeur 2 àa - data.entry(A) ouvre un éditeur de données qui permet de modier la matrice A. Le moyen le plus commode

de créer une matrice consiste à créer d'abord une matrice quelconque aux dimensions voulues, par exemple A=diag(0, n, p), puis d'utiliser la commandedata.entry(A)pour entrer les éléments de A

Opérations unaires - Si A= ( 1 2 3

4 5 6 ), as.vector(A) convertit A en le vecteurc(1,4,2,5,3,6).

- dim(A) est le vecteur des dimensions de la matrice A - dim(A)[1] et nrow(A) donnent le nombre de lignes deA - dim(A)[2] et ncol(A)donne le nombre de colonnes de A

- rowSums(A) (resp.colSums(A)) renvoie le vecteur des sommes des lignes (resp. des colonnes) - Si A est une matrice n×p, diag(A) renvoie la suiteA[1,1], A[2,2], ...., A[min(n, p), min(n, p)]

- t(A) désigne la transposée de la matriceA

(5)

- Conj(A)désigne la matrice conjuguée de A - det(A) calcule le déterminant deA

- solve(A) donne l'inverse de la matrice A - qr(A) donne la décomposition QR de A

- Si A est une matrice symétrique, eigen(A) donne les valeurs propres et les vecteurs propres de A

- Si Aest une matrice symétrique dénie positive, chol(A)fournit la factorisation de Choleski de A, i.e. la matrice triangulaire supérieure B telle quetB×B =A.

- svd(A) donne la décomposition en valeurs singulières de A svd(A) est une liste à trois éléments

- svd(A)$d : racine carrée desq valeurs propres communes àAA et AA, avec q=inf(n, p) - svd(A)$u : vecteurs propres de AA

- svd(A)$v : vecteurs propres de AA Opérations binaires

- Si A= (aij) et B= (bij) sont des matrices de même dimension, A∗B donne la matrice de terme général (aijbij) - Si les dimensions de A etB sont compatibles, A%∗%B désigne la produit matriciel usuel

- Si A est une matricen×p etv un vecteur de longueur n, A∗v ouv∗A donne la matrice obtenue en multipliant élément par élément chaque colonne de A par v

- Si A= (aij)est une matrice n×p,a un réel etv =c(v1, ..., vn)un vecteur de longueur n, A+aretourne la matrice (aij+a) etA+v retourne la matrice (aij+vi)

- Si A est une matrice n×n inversible et v un vecteur de longueur n, solve(A, v) donne le vecteurA−1v Extraction

- A[i, j] donne l'élément aij, A[i,]la ime ligne et A[, j]le jme colonne, A[2∶4, j] le vecteur a2j, a3ja4j - A[,−i]donne la matrice obtenue en supprimant la ie colonne

- A[−i,]donne la matrice obtenue en supprimant la ie ligne

- Plus généralement si Aest une matrice p×q, {i1, .., ik}est une partie de [1..p],{j1, .., jl} est une partie de[1..q], et si l'on posea=c(−i1, ..,−ik)et b=c(−j1, ..,−jl)

A[a,] est la matrice obtenue en supprimant les lignes i1, .., ik A[, b]est la matrice obtenue en supprimant les colonnes j1, .., jl

A[a, b]est la matrice obtenue en supprimant les lignes i1, .., ik et les colonnes j1, .., jl Nommer les colonnes ou les lignes

1. Si a est une matrice 3×4, rownames(a) = letters[1 ∶ 3] associe aux lignes les labels a, b et c, tandis que colnames(a) =LET T ERS[1∶4]associe aux colonnes les labels A, B, C etD.

2. Si a=c(1,2,3) etb=c(4,5,6),cbind(a, b)retourne

[1,] a b1 4 [2,] 2 5 [3,] 3 6 etrbind(a, b)retourne

[1,] [2,] [3,]

a 1 2 3

b 4 5 6

Remarque

Bien qu'un vecteur ne possède pas de dimension, il se comporte comme une matrice s'il y a compatibilité des dimensions. Par exemple six=c(2,−1,3)etAest une matrice3×3, on adim(x) =N U LL; mais dans le produit x%∗%A (resp. A%∗%x) x se comporte comme une matrice 1×3 (resp. 3×1).

Si de plus y = c(4,2,−5) le produit x%∗%y donne le produit scalaire du vecteur (2,−1,3) avec le vecteur (4,2,−5) i.e. 2×4−2−15= −9.

(6)

Par ailleurst(x) convertit xen la matrice 1×3 (2 −1 3).

Attributs

Sia= ( 2−3i 2 4 5+1i )

length(a) =4, class(a) =”matrix”, typeof(a) =”complex” et mode(a) =”complex”

F Tableau

Un tableau (array) est l'analogue multidimensionnel d'un matrice.

Exemple : ar = array(1 ∶ 48,dim = c(2,3,4,2)) ou ar = 1 ∶ 48; dim(a) = c(2,3,4,2) crée un tableau ar de dimension dim(ar) =c(2,3,4,2).

L'extraction se fait comme pour les matrices : a[1, ,2,]est la matrice ⎛

⎜⎝

7 31 9 33 11 35

⎞⎟ Siaetb sont des tableaux de même dimension ⎠

-a+b et a∗b calcule les sommes et les produits terme à terme -a%∗%b etsum(a∗b) donne la somme des produits terme à terme.

Attributs

Pour le tableauar ci-dessus

length(ar) =48, class(ar) =”array”, typeof(ar) =”integer” etmode(ar) =”numeric”

G Facteur

Les facteurs, objets de classe”f actor”, permettent de créer des niveaux (levels) et de les disposer dans un ordre donné.

Création Exemple 1

Pour créer les quatre niveaux do, si, la, sol et les disposer dans l'ordre do si la si sol la si do on procède comme suit :

or=c(0,1,2,1,3,2,1,0 ordre

cho=f actor(or, level=0∶3) création du facteur et déclaration du nombre de niveaux levels(cho) =c(”do”,”si”,”la”,”sol”) aectation des niveaux

Exemple 2

La commande gl(3,2,11, labels = c(”temprature”, pression”,”volume”)) crée un facteur à 3 niveaux, où des blocs de 2 niveaux identiques sont répétés de façon cyclique de de façon à obtenir la suite de 11 facteurs température température pression pression volume volume température température pression pression volume

Exemple3

La commande gl(4,3,20) renvoie le facteur de suite 1 1 1 2 2 2 3 3 3 4 4 4 1 1 1 2 2 2 3 3 et de niveaux 1,2,3,4

Attributs

Sif =gl(3,2,11, labels=c(”temprature”, pression”,”volume”))

length(f) =11, class(f) =”f actor” ,typeof(f) =”integer” etmode(f) =”numeric”

(7)

H Caractère

Un caractère, objet de classe”character”, est une suite de caractères typographiques entourés de guillemets ; exemple ”a5@]”

Création

Sia=c(exp(1), sqrt(2),1i),b=y a+n (b est de classe ”f ormula”)et c==matrix(c(1−5i,2,3,4+5i),2) - as.character(a) renvoie "2.71828182845905+0i" "1.4142135623731+0i" "0+1i" et

deparse(a) renvoie "c(2.71828182845905+0i, 1.4142135623731+0i, 0+1i)"

- as.character(b) renvoie "∼" "y" "a + n" et deparse(b) renvoie "y ∼ a + n"

- as.character(c) renvoie "1-5i" "2+0i" "3+0i" "4+5i"

Attributs

Sic=as.character(a)

length(f) =3, class(f) =”character”, typeof(f) =”character” etmode(f) =”character”

I Table

- Si l = letters[1 ∶ 6], table(sample(l,100, replace = T)) renvoie le tableau en lignes des eectifs des lettre dans sample(l,20, replace=T)

- Sil=letters[1∶6],x=sample(l,100, replace=T)ety=sample(l,100, replace=T),table(x, y)renvoie le tableau de contingence croisantx ety

Extraction

Si avec les notations précédentes z=table(x, y)

- z[i, j] renvoie l'eectif situé à l'intersection de la ligne iet de la colonne j

- z[i,] renvoie la ligne a b c d e f sous laquelle se trouve laie ligne des eectifs de z - z[, j] renvoie la ligne a b c d e f sous laquelle se trouve laje colonnes des eectifs de z

Remarque

La commande table s'applique plus généralement à des tableaux. Si t est un tableau, la ligne des eectifs de table(t)est donné par la commande tabulate(t), qui renvoie un vecteur.

Attributs

Six=table(sample(l,20, replace=T))

length(x) =6,class(x) =”table”, typeof(x) =”integer”et mode(x) =”numeric”

J Liste

Création Sia1,a2,...,ap sont des objets vecteurs, matrices, tableaux, et même listes), et n1, .., np des noms, lis=list(n1=a1, ..., np=ap) crée une liste dont l'objet ai s'obtient par lis $ ni.

names(lis)donne la liste des composants de lis Exemple

Si a = 1 ∶ 5, b = matrix(1 ∶ 12,3); c = c(”A”,”B”), d = rpois(100,2) et lis = list(vecteur = a, matrice = b, lettres=c) , on a

- length(lis) =3

- lis$lettres donne ”A” ”B”, tandis que lis[3] renvoie $lettres[1]”A””B”

- mean(li$vecteur) =3

- los=list(liste=lis, poisson=d) - $ los $ lis $vecteur donne 12345

Attributs

length(lis) =3, class(lis) =”list”, typeof(lis) =”list” etmode(lis) =”list”

(8)

K Cadres de données

Un cadre de données (data frame) est une structure permettant de lier des données en vue de leur traitement statistique.

Création

Voici sur des exemples les façons les plus courantes de créer un cadre de données ; dans tous ces exemples la matrice des données est identiques.

Première méthode

Création de la liste horizontale M atieres=c(”Analyse”,”P roba”,”AnaN um”,”Alg”) Création de la liste verticale Etudiants=c(”Einstein”,”F ermi”,”Bose”)

Création de la matrice des données N otes=matrix(c(4,2,1,0,5,2,1,3,1,2,4,2),3) Création de la liste des noms dimnames(N otes) =list(Etudiants, M atieres)

Création du cadre de données N obels=data.f rame(N otes) Deuxième méthode

Création de la matrice des données N otes=matrix(c(4,2,1,0,5,2,1,3,1,2,4,2),3) Nom des colonnes colnames(N otes) =c(”Analyse”,”P roba”,”AnaN um”,”Alg”) Nom des lignes rownames(N otes) =c(”Einstein”,”F ermi”,”Bose”)

Création du cadre de données N obels=as.data.f rame(N otes) Troisième méthode

Création des colonnes Analyse=c(4,2,1);P roba=c(0,2,5);AnaN um=c(1,3,1);Alg =c(2,4,2) Création du cadre de données N obels=data.f rame(cbind(Analyse, P roba, AnaN um, Alg)) Les lignes sont numérotées de 1 à 3.

Quatrième méthode

Création des lignes Einstein=c(4,2,1,0), F ermi=c(5,2,1,3), Bose=c(1,2,4,3) Création du cadre de données N obels=data.f rame(rbind(Einstein, F ermi, Bose)) Les colonnes ont pour nom "X1" "X2" "X3" "X4".

- La commande summary(N obels) donne un résumé des principaux paramètres des colonnes..

- Les colonnes ne sont accessibles individuellement (par exemple pour calculer mean(P roba)) qu'après avoir entré la commande attach(N obels), qui de plus fait apparaître Nobels dans la partie search.path qu'on visualise par search(); la commande inverse estdetach().

- Les lignes ne sont pas accessibles.

Extraction

Il faut tenir compte dans ce qui suit du noms des lignes pour la troisième méthode et du noms des colonnes pour la quatrième méthode.

1. N obels$ P roba renvoie le vecteur correspondant à la colonne ”P roba”

2. names(N obels),colnames(N obels) etdimnames(nol)[[2]]renvoient "Analyse" "Proba" "AnaNum" "Alg"

3. rownames(N obels)et dimnames(N obels)[[1]]renvoient "Einstein" "Fermi" "Bose"

4. nrow(N obels)(resp. ncol(N obels)) donne le nombre de lignes (resp. de colonnes) 5. colnames(N obels)[2]et dimnames(N obels)[[2]][2] renvoient "Proba"

6. rownames(N obels)[3] etdimnames(N obels)[[1]][3] renvoient "Bose"

(9)

Extraction de tableaux de contingence

1. La commande with(N obels, table(Alg)) crée le tableau Alg 2 4 2 1 2. La commande with(N obels, table(P roba, Alg))crée le tableau

AnaN um

P roba 1 3

0 1 0

2 1 0

5 0 1

3. La commande with(N obels, table(P roba, Alg, Analyse)) crée de façon analogue un tableau de dimension 2 3 3.

4. Si tab=with(N obels, table(P roba, Alg)), les eectifs marginaux relatifs à la variable P roba s'obtiennent par margin.table(tab,1), et ceux relatifs à la variableAnaN um s'obtiennent par margin.table(tab,2).

Attributs

length(N obels) =4, class(N obels) =”data.f rame”, typeof(N obels) =”list” etmode(N obels) =”list”

L Quelques commandes utiles

replace

replace(x, a, b) renvoie l'objet obtenu à partir de xen remplaçant dans x l'objet a par l'objet b apply

SiAest une matricen×p, etf unune application à un argument s'appliquant à des vecteurs,apply(A,1, f un) (resp.apply(A,2, f un)) donne un vecteur de longueurn(resp.p) obtenu en appliquant à chaque ligne (resp. colonne) l'application f un.

Si l'applicationf unpossèdeq>1arguments, ces commandes s'écriventapply(A,1, f un, a2, ..., aq)etapply(A,2, f un, a2, ..., aq), où a2, ..., aq sont les arguments supplémentaires de f un

sweep

Six= (xij)est une matrice de taille n×p,u un vecteur de longueurn,w un vecteur de longueurp etf est une application à deux arguments

- sweep(x,1, u)renvoie la matrice obtenue à partir de la matricexen soustrayant de chaque colonne dexle vecteur u

- sweep(x,2, w)renvoie la matrice obtenue à partir de la matricex en soustrayant de chaque ligne de x le vecteur le vecteur w

- sweep(x,2, u,”/”) ou sweep(x,2, u, F U N =”/”) renvoie la matrice obtenue à partir de la matrice x en divisant les lignes dex élément par élément par le vecteur u

- Si f est une application à deux arguments, sweep(x,1, u, F U N=”f”) renvoie la matrice (f(xij, ui)) any et all

Six est un objet de classe vecteur, matrice ou tableau - any(x)renvoie T RU E si l'un des éléments de l'objet xest T RU E - all(x) renvoie F ALSE si l'un des éléments de l'objetx estF ALSE

Si x n'est pas de type booléen, mais de type entier ou réel, les valeurs non nulles sont converties en TRUE et les valeurs nulles en FALSE.

Exemple Si x = c(1,−2,3,0), any(x) = T RU E, all(x) = F ALSE, x < 0 renvoie FALSE TRUE FALSE FALSE, any(x<0) =T RU E

(10)

M Applications

Exemples de dénition d'applications

-gil=f unction(x)(xˆ2∗exp(−0.5∗xˆ2))/sqrt(2∗pi))

-gul=f unction(x){if (x<0)r=0 else r=sin(x);return(r)}

qui peut aussi se dénir par

gul=f unction(x){(x>=0) ∗sin(x)}

-g =f unction(x){if (x<2) 4else 2} Intégration

integrate(gul,−1,3) donne l'intégrale ∫−13 gul(x)dx Racine

- Si P(x) = ∑ni=1aixi est un polynôme, ses racines s'obtiennent par polyroot(c(a0, a1, ..., an)).

- Sifdésigne une application, et sia<bsont des réels tels quef(a)etf(b)sont de signes opposés,uniroot(f, c(a, b)) ou uniroot(f, lower=a, upper =b) détermine, si elles existent, les racines deg entre situées entre a etb.

Exemple d'application possédant un argument facultatif et deux paramètres par défaut g=f unction(x, op=N U LL, par=3, cons=2){if(is.null(op)) −x∗par∗conselseop∗x∗par∗cons} - g(1) = −6,g(1,2) =12, g(1,2,4) =16, g(1,2,4,3) =48

- g(1,2, ,6) =g(1,2, cons=6) =g(1,2, con=6) =g(1,2, co=6) =g(1,2, c=6) =36 Courbe de niveau

Pour tracer les courbes de niveau de l'applicationf(x, y) =x2−y2−4, il faut entrer les instructions suivantes : x=seq(−5,5, length=100)

y=seq(−5,5, length=100) z =outer(x∗ ∗2, y∗ ∗2,”−”) f illed.contour(z−4)

N Structures de contrôle

1. if

- if [else]

- if else if...else if [else]

- ifelse(condition,expr1 (si condition satisfaite) expr2 (si condition non satisfaite) Exemples

a) a=if(k<0) 7 renvoie 7 si k<0 et NULL sinon

b) if(k>0) a=1 ;b=2 mais if(k>0) { a=1 ;b=2 }else {a=7 ;b=6 } ou if(k>0) {a=1 ;b=2}else a=7 ;b=6 c) ifelse(k<0,1,7) mais ifelse(k<0,{ a=1 ;b=2 } ,{ a=7 ;b=9 } )

d) ifelse(0,"avec","sans") retourne "sans" et ifelse(a,"avec","sans") retourne "avec" si a ≠0 2. for

Exemple

plot.new() ; par(usr=c(-2,2,-2,2)) ; a=seq(0.001,7,length=100) for(j in a) abline(1/sin(j),-cos(j)/sin(j),col=6)

3. while Exemple

a=2 ; i=0 ; b=3 ;while(abs(b-a)>0.0001) {a=b ; b=a/2+1/a ; i=i+1}

4. repeat Exemple

a=3 ; i=0 ; repeat {i=i+1 ; b=a/2+1/a ; if(abs(b-a)<0.0001) break ; a=b }

5. next L'instruction next interrompt une boucle et augmente l'indice de la boucle d'une unité.

(11)

6. break L'instruction break dans un structure f or, while ourepeat interrompt une boucle et en sort.

7. stop Interromp en livrant un message d'erreur Exemple

a=3 ; i=0 ; repeat {i=i+1 ; b=a/2+1/a ; if(abs(b-a)<0.0001) stop("Précision atteinte") ; a=b } on obtient le message Erreur : Précision atteinte

8. switch

Exemples - switch(2,-1 ,9 ,7) renvoie 9

- switch("cas1", cas1=-1 , cas2= 9 , cas3 = 7) renvoie -1 - switch("nabi", cas1=-1 , 7) renvoie 7

O Lois de probabilité

Loi normale

Sih(x) = (2π)−1/2exp{−12x2}, Φ(t) = ∫−∞t (2π)−1/2exp{−12x2}dx, sia=c(a1, .., an)et n∈N - dnorm(a) fournit la suite h(a1), ..., h(an)

- pnorm(a) fournit la suiteΦ(a1), ...,Φ(an)et pnorm(a, lower.tail=F)fournit la suite 1−Φ(a1), ...,1−Φ(an) - qnorm(a)fournit la suite Φ−1(a1), ...,Φ−1(an), à condition que pour tout i 0<ai<1

- rnorm(n) fournit n nombres pseudo-aléatoires distribués selon la loi N (0,1) - dnorm(x, m) désigne la valeur enx de la densité de la loi de N (m,1)

- dnorm(x, m, σ) désigne la valeur enx de la densité de la loi N (m, σ2) Autres lois disponibles

- dbinom(x, n, p) : loi binomiale de paramètres n etp; choose(n, p) donne le coecient binomial Cnp - dpois(x, λ): loi de Poisson de paramètre λ

- dexp(x, p): loi géométrique de paramètre pGp - dunif(x, a, b) : loi uniforme sur l'intervalle [a, b] - dexp(x, λ) : loi exponentielle de paramètre λ - dchisq(x, n): loi du khi-deux à n degrés de liberté - dt(x, n): loi de Student à n degrés de liberté

- df(x, n, p) : loi de Fisher-Snedecor à n et pdegrés de liberté - dgamma(x, a, b) : loi gamma γ(a, b)

- dbeta(x, a, b) : loi bêta β(a, b) Simulation

Six est une suite

- sample(x, n)simule n tirages sans remis de x

- sample(x, n, replace=T) simule n tirages avec remise de x

- sample(N, n),1≤n≤N, simule n tirages sans remise parmi les entiers de 1à N.

P Statistique descriptive

1) Histogramme

L'histogramme de surface 1correspondant à la série continue [1,5[ [5,6[ [6,8[

2 5 3

(12)

se construit en répétant la suite des centrescen=c(3,5.5,7)selon les eectifs correspondantsef =c(2,5,3)grâce à l'instruction x=rep(cen, ef), en précisant les limites des classes dans lim=c(1,5,6,8) et en appelant nalement hist(x, breaks=lim).

2) Création de tableau statistique et diagramme en bâtons

- Si x est une liste ou une matrice, table(x) crée un tableau (de classe ”table”), dont la première ligne donne la liste des diérentes valeurs gurant dansx, et la deuxième ligne donne sous chaque valeur de la première ligne le nombre de fois où cette valeur apparaît dansx. Si m est une matrice, table(m)équivaut à table(as.vector(m)).

- tabulate(x)donne un vecteur correspondant à la seconde ligne de table(x) - barplot(table(x)) crée le diagramme en bâtons correspondant à la série table(x).

- plot(sort(x),(1 ∶ length(x))/length(x), type = ”s”, ylim = c(0,1)) trace la fonction de répartition de la série discrètex

3) Diagramme en boîte

Si a est une liste, boxplot(a) trace un diagramme en boîte identique à celui obtenu par BoîtMoustMod (ou ModBoxPlot en anglais) de la calculatrice Voyage 200, i.e. :

- la base inférieure de la boîte correspond au premier quartile Q1; la boîte est séparée en deux parties par un trait correspondant à la médiane ; la base supérieure de la boîte correspond au troisième quartile Q3

- la barre inférieure correspond au plus petit élément de a supérieur ou égal à Q1 −1,5(Q3 −Q1) et la barre supérieure au plus grand élément de a inférieur ou égal à Q3+1,5(Q3−Q1)

- les valeurs situées en dehors de l'intervalle[Q1−∆, Q3+∆], où∆=1,5(Q3−Q1), sont représentées individuel- lement au-delà des barres.

4) Paramètres

Soit x est une liste de réels de longueurn etf une liste d'eectifs ou de fréquences de même longueur a) Moyenne

mean(x) = sum(x)/n est la moyenne de x et weighted.mean(x, f) est la moyenne de x pondérée par f, soit

sum(f1 )ni=1fixi.

S'il y a des valeurs manquantes, l'option na.rm=T supprime ces valeurs manquantes, et calcule la moyenne sur les valeurs restantes.

b) Variance

var(x) est la variance calculée avec un dénominateur égal àn−1, sd(x) est l'écart-type correspondant.

c) Ecart absolu moyen (nécessite le module FactoMineR)

meanabsdev(x)donne l'écart absolu moyen de x, i.e. n−1ni=1∣xi−x∣ d) Médiane

median(x) est la médiane ; lorsque l'ensemble des médianes est un intervalle, median(x) retourne le milieu de l'intervalle.

e) Quantiles

- quantile(x) donne la listemin(x), Q1(x), median(x),Q3(x),max(x)

- quantile(x, α) est le quantile d'ordre α de x; lorsque l'ensemble des quantiles d'ordre α est un intervalle, quantile(x, α) et quantile(x, α, type=2) retournent le milieu de l'intervalle et quantile(x, α, type=1)retourne l'extrémité gauche de l'intervalle

f) Variance-covariance

Si x=c(x1, ..., xn)et y=c(y1, ..., yn)sont des listes :

- var(x)donne la variance n−11ni=1(xi−x)2= n−1n [n1(∑ni=1x2i) −x2]; l'écart-type associé est sd(x) - var(x, y) etcov(x, y) donnent la covariance n−11ni=1xiyi−xy

Résultats similaires si x et y sont des matrices colonne ; dans var(x, y) et cov(x, y) on peut mélanger liste et matrice.

g) Covariance et covariance pondérées

Si x est une matrice ou un data frame de dimension p×n, dont les colonnes sont constituées par les vecteurs v1, ..., vn, et si f =c(f1, ..., fp)est une suite de réels positifs :

- var(x)et cov(x)donnent la matrice des covariances C = (cij)i,j=1,...,n, avec cij =cov(vi, vj)

(13)

- cov.wt(x, f, method=”M L”) donne la matrice des covariances pondérées C = (cij), avec cij = sum(f)1pk=1fk(vki −vi)(vjk−vj) = sum(f1 )pk=1fkvikvjk−vivj,

où vi = (v1i, ..., vpi) etvi =sum(f)1pk=1fkvki.

Cette même commande fournit de plus la liste (v1, ..., vn) des moyennes (center), la valeur p (n.obs) et la liste f/sum(f) des fréquences associées à f (wt).

h) Le coecient de corrélation linéaire d'un couple (x, y)est donnée par cor(x, y)

Q Fonctions graphiques

1) Si x=c(x1, ..., xn) ety=c(y1, ..., yn)

plot(x, y, pch=i, cex=j, lwd=l) représente le nuage des points (xi, yi), i=1, ..., n à l'aide de gures indiquées par pch=i, i∈ [0..18] dont la taille est déterminée par cex=j; lwdcontrôle la largeur du trait.

Correspondance entre valeur de pch et forme :

0 : ◻, 1 : ○, 2 : △, 3 : +, 4 : ×, 5 : ◇6 : ▽, 7 : ⊠, 8 : ∗, 9 : |, 10 : ⊕, 11 : , 12 : ⊞, 15 : ∎, 16 : ●, 17 :▲, 18 : ◆ Les autres paramètres graphiques sont décrits dans l'aide?par; parmi ces paramètres :

- type détermine le type de tracé : p pour point, l pour ligne continue, s pour tracé en escalier, h pour histogramme diagramme en bâtons), n pour ne rien tracer

-lty=i, i∈ [0..6] détermine le type de discontinuité du graphique -axes=T ajoute les axes des coordonnées

-xaxs=”i”(resp. yaxs=”i” ) trace le graphe exactement entre la plus petite et la plus grande valeur précisée pour x (resp. pour y)

-xlab=”XX”ajoute le texte XX (qui peut être vide) sous l'axe de abscisses

-ylab=”XX” ajoute le texte XX (qui peut être vide) verticalement à gauche de l'axe des ordonnées -sub=”Y Y” ajoute le texte Y Y en bas du graphique

-text(a, b,”T T”)ajoute le texte T T centré au point de coordonnées (a, b) -col : il y a trois façons de choisir la couleur d'un tracé :

a) col =i, i∈ [0..8], avec les valeurs suivantes (que l'on peut faire apparaître par palette()) 0=couleur du fond, 1=noir 2=rouge, 3=vert, 4=bleu foncé, 5=bleu turquoise (cyan), 6= mauve (magenta), 7=jaune, 8=gris.

b)col=”nom”, où nom est l'un des 657 noms de couleurs donnés par colors() c)col=”#RRGGBB”,RR, GG etBB étant des entiers hexadécimaux de 00à F F.

2)lines(x, y, type=”l”) ajoute à un graphique la ligne brisée joignant dans l'ordre les points(xi, yi), i=1, ..., n title(”XX”) ajoute le texte XX en haut du graphique

abline(b, a)trace la droite d'équation y=ax+b abline(v =a) trace la droite verticale d'équationx=a abline(h=a) trace la droite horizontale d'équationy=a

segments(x1, y1, x2, y2) trace le segment de droite entre les points (x1, y1) et(x2, y2)

3)curve(sin,0,10) oucurve(sin, xlim=c(0,10)) trace le graphe de la fonction sinus entre 0et 10 4) La superposition de deux graphiques s'eectue avec la commande add=T ; exemple :

x=rnorm(1000); curve(dnorm,−4,4);hist(x, f req =F, breaks=seq(−4,4,0.3), add=T), où l'option f req=F équivaut ici à probability =T.

5) Exemple de superposition de courbes : u=seq(−10,10, length=400)

v=sin(u); w=cos(u)

plot(u, v, axes=T, type=”l”, xlab=”x”, ylab=”y”, lwd=2, lty=2, ylim=c(−1.2,1.2)) lines(u, w, lwd=4)

a=seq(−10,9);axis(1, at=a, labels=a, pos=0) b=seq(−1,1,0.1);axis(2, at=b, labels=b, pos=10.8) abline(v =0, lty=1);abline(h=0, lty=1)

title(”Graphe des applications sinus et cosinus”) Les lignes 3 et 4 peuvent être remplacées par

curve(sin,−10,10, axes=T, type=”l”, xlab=”x”, ylab=”y”, lwd=2, lty=2, ylim=c(−1.2,1.2)) curve(add=T, cos, lwd=4)

(14)

R Graphiques tridimensionnel

Sixest un vecteur de composantesx1, x2, ..., xp,y un vecteur de composantesy1, y2, ..., yq etf une fonction de deux variables

-outer(x, y, f) crée la matrice, de dimension p×q, (f(xi, yj))i=1..., p, j=1, ..q.

- persp(x, y, z, theta = 40, phi = 40, expand = 0.6, col = ”lightblue”, shade = 0.2, xlab = ”X”, ylab = ”Y”, zlab =

”Z”)

trace le graphe de l'applicationf, avec les paramètres suivants : -theta : angle horizontal

-phi : inclinaison verticale -expand : expansion verticale -shade : degré d'ombrage

S Divers

- letters est le vecteur des26lettres minuscules de l'alphabet latin.

- LET T ERS est le vecteur des 26lettres majuscules de l'alphabet latin.

- Si x est un vecteurs composé d'entiers de 1 à26, letters[x]renvoie les lettres correspondant à ces entiers

- LET T ERS==”R”est le vecteur de longueur 26dont toutes les composantes sont occupées parF ALSE sauf la 18ime qui occupée par T RU E

- which(LET T ERS==”R”) renvoie l'entier 18

- which(c(T RU E, F ALSE, T RU E, N A, F ALSE, F ALSE, T RU E)) renvoie le vecteur 1 3 7 correspondant aux occurrences deT RU E.

- which((1∶12)%%2==0) renvoie le vecteur 2 4 6 8 10 12 des entiers pairs entre 1 et12. - date() donne la date et l'heure en anglais

T Régression linéaire

SiX, X1, ..., Xnsont des variables dénies sur un certain nombre d'individus (entrées sous forme de vecteurs de même longueur), on peut chercher la combinaison linéaire des Xi la plus proche de X au sens des moindres carrées (la variable constante est automatiquement rajoutée dans la liste desXi, et intercept (ordonnée à l'origine) représente son coecient dans la combinaison linéaire). L'instruction

lm(X∼X1+X2+...+Xn) exécute la régression linéaire (lm signie linear model).

Si l'on ne veut pas l'ordonnée à l'origine on écrit lm(X∼X1+X2+...+Xn−1).

Plus généralement on peut introduire des fonctions des variables X1, X2, ..., Xn, qu'il faut faire précéder de I; exemple : lm(X∼I(X1ˆ2) +I(cos(X2))).

Exemple Exécutons successivement les trois instructions library(datasets)

attach(swiss)

re=lm(Agriculture∼Examination+Education) Nous obtenons

Agriculture=80.746−1.333×Examination−0.738×Education+erreure.

Si l'on veut plus de renseignements (coecients de corrélation linéaire, tests,...) on utilise l'instruction summary(re).

(15)

-f itted(re) donne le vecteur des valeurs prédites -residuals(re)donne le vecteur des résidus

- les diérents coecients peuvent s'obtenir globalement parcoef(re), et individuellement parre$coef f icients[1] oucoef(re)[1](Intercept, 80.7457),re $coef f icients[2](Examination,−1.333250), re$coef f icients[3](Educa- tion, −0.7379441)

Attributs

class(re) donne”lm”, typeof(re)donne ”list”

U Utilisation de données

1) Données contenues dans un paquet R

Des paquets contenant des données sont disponibles sur R. Voici des noms de tels paquets :”datasets”,”ISwR”,”survival”.... On peut trouver des explications sur ces données en consultant les chiers”00index.html”qui se trouvent dans les

répertoires des paquets. Par exemple pour le paquets ”datasets”, il faut chercher le chier dans le répertoire

”C ∶ /P rogramF iles/R/rw2011/library/datasets/html”.

Pour utiliser les données du paquet survival tapez l'instruction library(survival)

Ce paquet contient un chier de données intitulé kidney. En tapant l'instruction

kidney

les données du chier kidney s'achent.

Pour certain paquet il faut aussi exécuter l'instruction data(kidney)

pour avoir accès au contenu du chier. Ce chier est composé de plusieurs colonnes ayant des noms id”,”time etc ; la première colonne correspond simplement au numéro des lignes.

Pour accéder aux colonnes du chier tapez attach(kidney).

Une fois cette instruction exécutée, vous pouvez voir le contenu de la colonne id en tapant id

Chaque colonne de kidney est maintenant chargée dans R comme une variable de type liste. Attention si vous tapez

id=id∗id

la liste id sera changée. Le chier kidney ne sera pas changé ; on pourra donc toujours revenir à l'état initial en quittant R.

2) Données contenu dans un chier texte

R peut lire des chiers textes grâce à l'instruction read.table. Ces chiers doivent être sous une forme précise pour que R puisse les lire. Chaque ligne du chier doit correspondre aux données relatives à un même individu, les diérentes données sont séparées par un caractère d'espacement . Le nombre de données par ligne doit être constant. Seule la première ligne peut avoir une nature diérente : elle peut contenir le nom de chaque colonne et cela est vivement recommander. Pour utiliser le chier on tape par exemple

bidule=read.table(”C∶..../ISwR/theusen.txt”, header=T)

On crée ainsi un dataf rame appelé bidule contenant les données thuesen.txt. En tapant bidule

les données s'achent. L'instruction facultative header=T” signale à R que la première ligne contient le nom des colonnes.

Vous pouvez créer votre propre chier de données en utilisant un éditeur de texte comme leblocnote, wordpad, .... 3) Utilisation d'une partie des données contenues dans une variable

Supposons que la variable X soit une liste de données. Pour accéder à la 5me donnée il faut utiliser X[5] .

La variable X[5∶8] contient les données consécutives de 5 à8.

(16)

La variable X[c(3,7,12)] ouX[3,7,12] contient les données 3, 7 et12.

On peut également supprimer certaines données : X[−c(3,5,7)] supprime les données 3,5 et7.

Plus généralement, on peut sélectionner une partie de la liste par une condition. Par exemple si X et Y sont deux variables, X[Y >3] contient uniquement les X[i] tels que Y[i] >3 . La condition peut être dénie à l'aide des opérateurs<, >, <=, >=, !=(diérent),== (égalité) ; les symboles logiques&(et),∣ (ou) et!(négation) peuvent aussi être utilisés.

V En vrac

- names crée une association entre un objet et un nom

sico=c(47,7), no=c(”lat”,”lon”) etnames(co, no),co renvoie lat lon

47 7

- paste concatène des vecteurs après les avoir convertis en caractère paste(c("a","b","c"),1 :2, 1 :5, sep = "@ Ÿ") renvoie

"a@ Ÿ1@ Ÿ1" "b@ Ÿ2@ Ÿ2" "c@ Ÿ1@ Ÿ3" "a@ Ÿ2@ Ÿ4" "b@ Ÿ1@ Ÿ5"

paste(c("a","b","c"),1 :2, 1 :5, sep = "@ Ÿ",collapse="ZZZ") renvoie

"a@ Ÿ1@ Ÿ1ZZZb@ Ÿ2@ Ÿ2ZZZc@ Ÿ1@ Ÿ3ZZZa@ Ÿ2@ Ÿ4ZZZb@ Ÿ1@ Ÿ5"

- cat renvoie les objets concaténés ; l'argument facultatif " \n" entraîne un saut de ligne sia=2

- cat("iteration = ", a <- a + 1) ; cat("iteration = ", a<-a+2 ) renvoie iteration = 3iteration = 5 - cat("iteration = ", a <- a + 1,"\n") ; cat("iteration = ", a<-a+2, ) renvoie

iteration = 3 iteration = 5

- substitute Si xest un objet,substitue(x)crée un objet, de classe”name”et de type symbol”, qui fait référence au nom dex

Exemple Sis=f unction(x){ substitute(x) }, s(az) renvoie az ets(c(0,1))renvoie c(0,1)

- complete.cases renvoie un vecteur logique indiquant FALSE si dans une position se trouve NA, et TRUE sinon Exemple

Si x = c(”a”,NA,3) et y = c(NA,4,0), complete.cases(x) renvoie TRUE FALSE TRUE, complete.cases(x, y) renvoie FALSE FALSE TRUE etcomplete.cases(y<0) renvoie FALSE TRUE TRUE

S'applique à des tableaux, des cadres de données, etc.

- match.arg

a) Dans une fonction Si

f=function(x,cho=c("deux","trois","quatre")){ a=match.arg(cho) ; if(a=="deux") x*2 else if(a=="trois") x*3 else x*4}

- f(2),f(2,”d”), f(2,”de”), f(2,”deu”)et f(2,”deux”) renvoient 4 - f(2,”t”), f(2,”tr”), f(2,”tro”), f(2,”troi”) et f(2,”trois”) renvoient 6 - f(2,”qu”), f(2, cho=”qu”), f(2, ch=”qu”)et , f(2, c=”qu”)renvoie 8

b)

- match.arg(”g”, c(”algèbre",”géométrie”,”probabilité”)) renvoie "géométrie"

- match.arg(c(”g”,”pro”), c(”algèbre",”géométrie”,”probabilité”)) est fautif

- match.arg(c(”g”,”pro”), c(”algèbre",”géométrie”,”probabilité”), several.ok=T) renvoie "géométrie" "probabi- lité"

Références

Documents relatifs

Quel est le d´ eveloppement en s´ erie enti` ere de la fonction x 7→ e x?. Pr´ eciser le rayon de

Écris, en fonction de x , le prix en euros de deux croissants et d'une

Écris, en fonction de x , le prix en euros de deux croissants et d'une

Complète l'expression précédente avec des radicaux de manière à ce que le résultat du calcul soit égal à 9.. Fais de même pour que le résultat

[r]

Coloriage sur la table de multiplication X 1.. Date

Correction sur la table de multiplication X 1.. Date

En déduire le tableau de variations complet de f ..4. Résultats