Vous êtes sur la page 1sur 90

Économétrie 2

Centre de Techniques de Planification et d’Économie


Appliquée

(CTPEA)

L’économétrie avec R

Économétrie 2 1 / 90
Introduction

Objets dans R

R utilise des fonctions ou des opérateurs qui agissent sur des objets (vecteurs, matrices,
data frame, liste, etc.)

Création et affichage de variable

Il arrive de vouloir garder en mémoire les résultats, pour cela on créera un objet dans
lequel sera stocké le résultat souhaité.
Trois opérateurs peuvent être utilisés pour créer un objet " <-“,”=“,”->" en donnant un
nom à l’objet.
On note que “=” et “==” sont utilisés différemment dans R. “==” est un opérateur
binaire qui permet de tester l’égalité entre deux objets (A==B est équivalent à A est égal
à B).

Économétrie 2 2 / 90
Création de l’objet x dans lequel sera stocké log 2

x <- log(2) # crée l'objet x


y <- x # l'objet y reçoit x
x = y # l'objet x reçoit y
y -> x # l'objet x reçoit y

Le symbole “#” indique que tout ce qui vient après sera considéré dans R comme étant
des commentaires.
Dans le cadre de cours on utilisera le symbole “<-” pour la création d’objet dans R.
Pour afficher la valeur stockée dans l’objet x on utilisera la commande print()

Économétrie 2 3 / 90
print(x)

[1] 0.6931472

ou plus simplement

[1] 0.6931472

Économétrie 2 4 / 90
Mode d’un objet

Les différents mode des objets de R sont les suivants:


null (objet vide), noté: NULL.
logical (booléen): TRUE, FALSE ou T, F.
numeric (réel,entier): 1, 2.456, pi, 1e-10.
complex (nombre complexe): 2+0i, 3i
character (chaîne de caractères): “hello,” “économétrie”
Pour connaitre le mode d’un objet il suffit d’exécuter la commande

mode(x)

[1] "numeric"

Économétrie 2 5 / 90
On peut aussi l’appartenance de l’objet à un mode particulier

is.null(x)

[1] FALSE

is.logical(x)

[1] FALSE

is.numeric(x)

[1] TRUE

Économétrie 2 6 / 90
is.complex(x)

[1] FALSE

is.character(x)

[1] FALSE

Économétrie 2 7 / 90
On peut convertir un objet x d’un mode à un autre de façon explicite en utilisant les
commandes suivantes:

as.logical(x)

[1] TRUE

as.numeric(x)

[1] 0.6931472

Économétrie 2 8 / 90
as.complex(x)

[1] 0.6931472+0i

as.character(x)

[1] "0.693147180559945"

Économétrie 2 9 / 90
Un objet a deux attributs intrinsèques: son mode mode et sa longueur length
Il existe d’autres attributs selon l’objet: dim, dimnames, class, names.

attributes(x)

NULL

Économétrie 2 10 / 90
Valeur manquante
Généralement les données collectées présentent des valeurs manquantes, c’est-à-dire des
données qui ne sont pas disponibles pour l’utilisateur.
R les note NA “Not Available”

x <- NA
print(x+1)

[1] NA

Pour déterminer où se trouve les valeurs manquantes d’un objet x, on écrit:

is.na(x)

[1] TRUE
Économétrie 2 11 / 90
Opérations de base

On rappelle que “==” permet de tester l’égalité entre deux objets

Opérateurs de comparaison - égal à : == - différent de: != - supérieur à/ inférieur à : > <


- supérieur ou égal à/ inférieur ou égal à : >= <=
Opérateurs logiques - AND &

Économétrie 2 12 / 90
L’opérateur AND retourne TRUE si les propositions comparées retournent TRUE

x <- 1:10
y <- 10:1
x>y & x>5

[1] FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE TRUE

Économétrie 2 13 / 90
OR |

L’opérateur OR retourne TRUE si au moins l’une des propositions comparées retourne TRUE

x == y | x != y

[1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE

Économétrie 2 14 / 90
NOT !

L’opérateur NOT est utilisé pour la négation d’une proposition

!x > y

[1] TRUE TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE

Économétrie 2 15 / 90
Les vecteurs

x <- c(5.6,-2,78,42.3) # vecteur de numériques à 4 éléments


x
x <- c(x,3,c(12,8)) # vecteur à 7 éléments
x
x <- 2 # vecteur de longueur 1
x

Économétrie 2 16 / 90
1:6

[1] 1 2 3 4 5 6

seq(1,6,by=0.5)

[1] 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0

seq(1,6,length=5)

[1] 1.00 2.25 3.50 4.75 6.00

Économétrie 2 17 / 90
rep(1,4)

[1] 1 1 1 1

rep(c(1,2),each=3)

[1] 1 1 1 2 2 2

Économétrie 2 18 / 90
A = rep(1,1000) # création d’un vecteur de 1
typeof(A)

[1] "double"

object.size(A)

8048 bytes

Économétrie 2 19 / 90
object.size(as.integer(A))

4048 bytes

typeof(as.integer(A)+1)

[1] "double"

object.size(as.integer(A)+1)

8048 bytes

Économétrie 2 20 / 90
typeof(as.integer(A)+1L)

[1] "integer"

object.size(as.integer(A)+1L)

4048 bytes

Économétrie 2 21 / 90
A = rep(1L,1000) # vecteur de 1 stocké en entiers
object.size(A)

4048 bytes

Économétrie 2 22 / 90
x <- c("A","BB","C1")
x

[1] "A" "BB" "C1"

x <- rep('A',5)
x

[1] "A" "A" "A" "A" "A"

Économétrie 2 23 / 90
paste("X",1:5,sep="-")

[1] "X-1" "X-2" "X-3" "X-4" "X-5"

paste(c("X","Y"),1:5,"txt",sep=".")

[1] "X.1.txt" "Y.2.txt" "X.3.txt" "Y.4.txt" "X.5.txt"

paste(c("X","Y"),1:5,sep=".",collapse="+")

[1] "X.1+Y.2+X.3+Y.4+X.5"

Économétrie 2 24 / 90
substr("livre",2,5)

[1] "ivre"

txtvec <- c("arm","foot","lefroo", "bafoobar")


grep("foo", txtvec)

[1] 2 4

gsub("foo", txtvec, replacement = "DON")

[1] "arm" "DONt" "lefroo" "baDONbar"

Économétrie 2 25 / 90
1>0

[1] TRUE

x>13

[1] TRUE TRUE TRUE TRUE TRUE

x <- c(-1,0,2)
test <- x>1
(1+xˆ2)*test

[1] 0 0 5

Économétrie 2 26 / 90
all(x>1)

[1] FALSE

any(x>1)

[1] TRUE

Économétrie 2 27 / 90
v <- 1:100
v[6] # donne le sixième élément de v

[1] 6

v[6:8] # donne les 6ème, 7ème et 8ème éléments de v

[1] 6 7 8

v[c(6,6,1:2)] # donne les 6ème, 6ème, 1er et 2ème éléments de v

[1] 6 6 1 2

Économétrie 2 28 / 90
v[10:1] # donne les 10ème, 9ème, ..., 1er éléments de v

[1] 10 9 8 7 6 5 4 3 2 1

v[-(1:5)] # donne v sans ses 5 premiers éléments

[1] 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
[20] 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
[39] 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
[58] 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
[77] 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 1

Économétrie 2 29 / 90
v[-c(1,5)] # donne v sans le premier et le cinquième élément

[1] 2 3 4 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
[20] 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
[39] 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
[58] 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
[77] 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
[96] 98 99 100

Économétrie 2 30 / 90
v <- 1:15
print(v)

[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

v[(v<5)]

[1] 1 2 3 4

v[(v<5)&(v>=12)] # & signifie "et"

integer(0)

v[(v<5)|(v>=12)] # | signifie "ou"

[1] 1 2 3 4 12 13 14 15
Économétrie 2 31 / 90
T <- c(23, 28, 24, 32)
O3 <- c(80, 102, 87, 124)
O3[T>25]

[1] 102 124

Économétrie 2 32 / 90
x[is.na(x)] <- 0 # les éléments NA de x reçoivent la valeur 0
y[y<0]<- -y[y<0]
y <- abs(y)

which.min(x)

[1] 1

which(x==min(x))

[1] 1

Économétrie 2 33 / 90
Les matrices

m <- matrix(c(1,17,12,3,6,0),ncol=2)
m

[,1] [,2]
[1,] 1 3
[2,] 17 6
[3,] 12 0

m <- matrix(1:8,nrow=2,byrow=TRUE)
m

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


[1,] 1 2 3 4
[2,] 5 6 7 8
Économétrie 2 34 / 90
m <- matrix(1:4,nrow=3,ncol=3)

Warning in matrix(1:4, nrow = 3, ncol = 3): data length [4] is not a sub-
multiple or multiple of the number of rows [3]

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


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

Économétrie 2 35 / 90
un <- matrix(1,nrow=2,ncol=4)
un

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


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

Économétrie 2 36 / 90
x <- seq(1,10,by=2)
x

[1] 1 3 5 7 9

as.matrix(x)

[,1]
[1,] 1
[2,] 3
[3,] 5
[4,] 7
[5,] 9

Économétrie 2 37 / 90
m[1,]

[1] 1 4 3

m[1,,drop=FALSE]

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


[1,] 1 4 3

m[,c(2,2,1)]

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


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

m[-1,] # matrice m sans sa première ligne


Économétrie 2 38 / 90
A <- matrix(1:4,ncol=2)
B <- matrix(c(5,7,6,8),ncol=2)
D <- A%*%t(B)
D

[,1] [,2]
[1,] 23 31
[2,] 34 46

Économétrie 2 39 / 90
eig <- eigen(D)
eig

eigen() decomposition
$values
[1] 68.9419802 0.0580198

$vectors
[,1] [,2]
[1,] -0.5593385 -0.8038173
[2,] -0.8289393 0.5948762

eig$vectors[,1]

[1] -0.5593385 -0.8289393


Économétrie 2 40 / 90
V <- c(1,2)
solve(D,V)

[1] -4 3

X <- matrix(1:6,ncol=3)
X

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


[1,] 1 3 5
[2,] 2 4 6

Économétrie 2 41 / 90
ncol(X)

[1] 3

nrow(X)

[1] 2

dim(X)

[1] 2 3

Économétrie 2 42 / 90
cbind(c(1,2),c(3,4))

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

apply(X,MARGIN=2,sum) # sommes par colonne

[1] 3 7 11

apply(X,1,mean) # moyennes par ligne

[1] 3 4

Économétrie 2 43 / 90
Les facteurs

sexe <- factor(c("M","M","F","M","F","M","M","M"))


sexe

[1] M M F M F M M M
Levels: F M

sexe <- factor(c(2,2,1,2,1,2,1),labels=c("femme","homme"))


sexe

[1] homme homme femme homme femme homme femme


Levels: femme homme

Économétrie 2 44 / 90
niveau <- ordered(c("novice","novice","champion","champion",
"moyen","moyen","moyen","champion"),
levels=c("novice","moyen","champion"))
niveau

[1] novice novice champion champion moyen moyen moyen champion


Levels: novice < moyen < champion

Économétrie 2 45 / 90
salto <- c(1:5,5:1)
salto

[1] 1 2 3 4 5 5 4 3 2 1

salto.f <- as.factor(salto)


salto.f

[1] 1 2 3 4 5 5 4 3 2 1
Levels: 1 2 3 4 5

levels(salto.f)

[1] "1" "2" "3" "4" "5"

nlevels(salto.f)

[1] 5
Économétrie 2 46 / 90
table(salto.f)

salto.f
1 2 3 4 5
2 2 2 2 2

x <- factor(c(10,11,13))
as.numeric(x)

[1] 1 2 3

Économétrie 2 47 / 90
as.numeric(as.character(x))

[1] 10 11 13

Économétrie 2 48 / 90
Les listes

vecteur <-
seq(2,10,by=3)
matrice <-
matrix(1:8,ncol=2)
facteur <-
factor(c("M","M","F","M","F","M","M","M"))
ordonne <-
ordered(c("novice","novice","champion",
"champion","moyen","moyen","moyen","champion"),
levels=c("novice","moyen","champion"))
maliste <- list(vecteur,matrice,facteur,ordonne)
length(maliste)

[1] 4

Économétrie 2 49 / 90
mode(maliste)

[1] "list"

names(maliste)

NULL

names(maliste) <- c("vec","mat","sexe","ski")


names(maliste)

[1] "vec" "mat" "sexe" "ski"

Économétrie 2 50 / 90
maliste[[3]]

[1] M M F M F M M M
Levels: F M

maliste[[1]]

[1] 2 5 8

maliste$sexe

[1] M M F M F M M M
Levels: F M

Économétrie 2 51 / 90
maliste[["sexe"]]

[1] M M F M F M M M
Levels: F M

maliste[c(1,3)]

$vec
[1] 2 5 8

$sexe
[1] M M F M F M M M
Levels: F M

Économétrie 2 52 / 90
X <- matrix(1:12,nrow=4,ncol=3)
nomligne <- c("ligne1","ligne2","ligne3","ligne4")
nomcol <- c("col1","col2","col3")
dimnames(X) <- list(nomligne,nomcol)
X

col1 col2 col3


ligne1 1 5 9
ligne2 2 6 10
ligne3 3 7 11
ligne4 4 8 12

Économétrie 2 53 / 90
X[c("ligne4","ligne1"),c("col3","col2")]

col3 col2
ligne4 12 8
ligne1 9 5

dimnames(X) <- list(NULL,dimnames(X)[[2]])


X

col1 col2 col3


[1,] 1 5 9
[2,] 2 6 10
[3,] 3 7 11
[4,] 4 8 12

Économétrie 2 54 / 90
Les data-frames

vec1 <- 1:5


vec2 <- c("a","b","c","c","b")
df <- data.frame(nom.var1 = vec1, nom.var2 = vec2)

Économétrie 2 55 / 90
La classe d’un objet
df <- data.frame(x = 1:2, y = c(3, 5))
print(df)

x y
1 1 3
2 2 5

print.default(df)

$x
[1] 1 2

$y
[1] 3 5
Économétrie 2 56 / 90
Les fonctions

set.seed(13) # fixe la graine du générateur


rnorm(n=3)

[1] 0.5543269 -0.2802719 1.7751634

set.seed(13) # fixe la graine du générateur


rnorm(n=4,mean=5,sd=0.5)

[1] 5.277163 4.859864 5.887582 5.093660

Économétrie 2 57 / 90
args(rnorm)

function (n, mean = 0, sd = 1)


NULL

args(plot)

function (x, y, ...)


NULL

Économétrie 2 58 / 90
Les packages

set.seed(45) # fixe la graine du générateur aléatoire


require(MASS) # ou library(MASS)
mvrnorm(3,mu=c(0,1),Sigma=matrix(c(1,0.5,0.5,1),2,2))

[,1] [,2]
[1,] 0.6681649 0.92211747
[2,] -0.1600569 -0.05816423
[3,] -0.1612923 0.50391363

Économétrie 2 59 / 90
set.seed(45) # fixe la graine du générateur aléatoire
MASS::mvrnorm(3,mu=c(0,1),Sigma=matrix(c(1,0.5,0.5,1),2,2))

[,1] [,2]
[1,] 0.6681649 0.92211747
[2,] -0.1600569 -0.05816423
[3,] -0.1612923 0.50391363

Économétrie 2 60 / 90
if (!require(rpart)) install.packages("rpart") # installe rpart si besoin
require(rpart)

update.packages(ask=FALSE)
packs = as.data.frame(installed.packages(.libPaths()[1]),
stringsAsFactors = F)
install.packages(packs$Package) ## réinstallation des packages

Économétrie 2 61 / 90
Importation d’un fichier texte

decath <- read.table("decathlon.csv",


sep=";",dec=".",header=T,row.names=1)
tab <- read.table("donnees2.csv",sep=" ",header=TRUE,
na.strings = ".")

Économétrie 2 62 / 90
summary(tab)

individu.taille.poids.pointure.sexe
Length:3
Class :character
Mode :character

data(iris)

Économétrie 2 63 / 90
Manipuler les variables

X <- c(rep(10,3),rep(12,2),rep(13,4))
X

[1] 10 10 10 12 12 13 13 13 13

is.factor(X)

[1] FALSE

is.numeric(X)

[1] TRUE

Économétrie 2 64 / 90
summary(X)

Min. 1st Qu. Median Mean 3rd Qu. Max.


10.00 10.00 12.00 11.78 13.00 13.00

Xqual <- factor(X)


Xqual

[1] 10 10 10 12 12 13 13 13 13
Levels: 10 12 13

summary(Xqual)

10 12 13
3 2 4
Économétrie 2 65 / 90
## conversion avec recodage des modalités
as.numeric(Xqual)

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

## conversion sans recodage des modalités : 2 étapes


provisoire <- as.character(Xqual)
provisoire

[1] "10" "10" "10" "12" "12" "13" "13" "13" "13"

as.numeric(provisoire)

[1] 10 10 10 12 12 13 13 13 13

Économétrie 2 66 / 90
set.seed(654) ## fixe la graine du générateur pseudo-aléatoire
X <- rnorm(15,mean=0,sd=1)
X

[1] -0.76031762 -0.38970450 1.68962523 -0.09423560 0.09530146 0.81727228


[7] 1.06576755 0.93984563 0.74121222 -0.43531214 -0.10726012 -0.83816833
[13] -0.98260589 -0.82037099 -0.87143256

Économétrie 2 67 / 90
Xqual <- cut(X,breaks=c(min(X),-0.2,0.2,max(X)),include.lowest=TRUE)
Xqual

[1] [-0.983,-0.2] [-0.983,-0.2] (0.2,1.69] (-0.2,0.2] (-0.2,0.2]


[6] (0.2,1.69] (0.2,1.69] (0.2,1.69] (0.2,1.69] [-0.983,-0.2]
[11] (-0.2,0.2] [-0.983,-0.2] [-0.983,-0.2] [-0.983,-0.2] [-0.983,-0.2]
Levels: [-0.983,-0.2] (-0.2,0.2] (0.2,1.69]

table(Xqual)

Xqual
[-0.983,-0.2] (-0.2,0.2] (0.2,1.69]
7 3 5

Économétrie 2 68 / 90
Xqual

[1] [-0.983,-0.2] [-0.983,-0.2] (0.2,1.69] (-0.2,0.2] (-0.2,0.2]


[6] (0.2,1.69] (0.2,1.69] (0.2,1.69] (0.2,1.69] [-0.983,-0.2]
[11] (-0.2,0.2] [-0.983,-0.2] [-0.983,-0.2] [-0.983,-0.2] [-0.983,-0.2]
Levels: [-0.983,-0.2] (-0.2,0.2] (0.2,1.69]

decoupe <- quantile(X,probs=seq(0,1,length=4))


Xqual <- cut(X,breaks=decoupe,include.lowest=TRUE)
table(Xqual)

Xqual
[-0.983,-0.544] (-0.544,0.311] (0.311,1.69]
5 5 5

Économétrie 2 69 / 90
levels(Xqual) <- c("niv1","niv2","niv3")
Xqual

[1] niv1 niv2 niv3 niv2 niv2 niv3 niv3 niv3 niv3 niv2 niv2 niv1 niv1 niv1 niv
Levels: niv1 niv2 niv3

levels(Xqual) <- c("niv1+3","niv2","niv1+3")


Xqual

[1] niv1+3 niv2 niv1+3 niv2 niv2 niv1+3 niv1+3 niv1+3 niv1+3 niv2
[11] niv2 niv1+3 niv1+3 niv1+3 niv1+3
Levels: niv1+3 niv2

Économétrie 2 70 / 90
X <- c(1,1,2,2,2,3)
Xqual <- factor(X,label=c("classique","nouveau","placebo"))
Xqual

[1] classique classique nouveau nouveau nouveau placebo


Levels: classique nouveau placebo

Xqual2 <- relevel(Xqual,ref="placebo")


Xqual2

[1] classique classique nouveau nouveau nouveau placebo


Levels: placebo classique nouveau

Économétrie 2 71 / 90
Xqual3 <- factor(Xqual,levels=c("placebo","nouveau","classique"))
Xqual3

[1] classique classique nouveau nouveau nouveau placebo


Levels: placebo nouveau classique

facteur <- factor(c(rep("A",3),"B",rep("C",4)))


facteur

[1] A A A B C C C C
Levels: A B C

facteur2 <- facteur[-4]


facteur2

[1] A A A C C C C
Levels: A B C
Économétrie 2 72 / 90
facteur2 <- as.character(facteur2)
facteur2 <- factor(facteur2)
facteur2

[1] A A A C C C C
Levels: A C

facteur3 <- facteur[-4,drop=TRUE]


facteur3

[1] A A A C C C C
Levels: A C

Économétrie 2 73 / 90
Manipuler les individus

set.seed(23)
variable <- rnorm(10,mean=0,sd=1)
variable[c(3,4,6)] <- NA
select <- is.na(variable)
select

[1] FALSE FALSE TRUE TRUE FALSE TRUE FALSE FALSE FALSE FALSE

which(select)

[1] 3 4 6

Économétrie 2 74 / 90
variable2 <- variable[!select]
variable2

[1] 0.19321233 -0.43468211 0.99660511 -0.27808628 1.01920549 0.04543718


[7] 1.57577959

variable3 <- variable[-which(select)]


all.equal(variable2,variable3)

[1] TRUE

Économétrie 2 75 / 90
varqual <- factor(c(rep("M",3),NA,NA,rep("F",5)))
don <- cbind.data.frame(variable,varqual)
don

variable varqual
1 0.19321233 M
2 -0.43468211 M
3 NA M
4 NA <NA>
5 0.99660511 <NA>
6 NA F
7 -0.27808628 F
8 1.01920549 F
9 0.04543718 F
10 1.57577959 F

Économétrie 2 76 / 90
summary(don)

variable varqual
Min. :-0.4347 F :5
1st Qu.:-0.1163 M :3
Median : 0.1932 NA’s:2
Mean : 0.4454
3rd Qu.: 1.0079
Max. : 1.5758
NA’s :3

Économétrie 2 77 / 90
select <- is.na(don)
select

variable varqual
[1,] FALSE FALSE
[2,] FALSE FALSE
[3,] TRUE FALSE
[4,] TRUE TRUE
[5,] FALSE TRUE
[6,] TRUE FALSE
[7,] FALSE FALSE
[8,] FALSE FALSE
[9,] FALSE FALSE
[10,] FALSE FALSE

Économétrie 2 78 / 90
aeliminer <- apply(select,MARGIN=1,FUN=any)
aeliminer

[1] FALSE FALSE TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE

don2 <- don[!aeliminer,]


don2

variable varqual
1 0.19321233 M
2 -0.43468211 M
7 -0.27808628 F
8 1.01920549 F
9 0.04543718 F
10 1.57577959 F
Économétrie 2 79 / 90
which(is.na(don),arr.ind=TRUE)

row col
[1,] 3 1
[2,] 4 1
[3,] 6 1
[4,] 4 2
[5,] 5 2

Économétrie 2 80 / 90
library(rpart)

data(kyphosis)
boxplot(kyphosis[,"Number"])

resultat <- boxplot(kyphosis[,"Number"])


8
6
4
2

Économétrie 2 81 / 90
valaberrante <- resultat$out
valaberrante

[1] 9 10

which(kyphosis[,"Number"]%in%valaberrante)

[1] 43 53

Économétrie 2 82 / 90
X <- data.frame(C1=c("a","b","b","a","a"),C2=c(1,2,2,3,1))
X

C1 C2
1 a 1
2 b 2
3 b 2
4 a 3
5 a 1

Économétrie 2 83 / 90
unique(X)

C1 C2
1 a 1
2 b 2
4 a 3

duplicated(X)

[1] FALSE FALSE TRUE FALSE TRUE

Économétrie 2 84 / 90
X[duplicated(X),]

C1 C2
3 b 2
5 a 1

Économétrie 2 85 / 90
Concaténer des tableaux de données

X <- matrix(c(1,2,3,4),2,2)
rownames(X) <- paste("ligne",1:2,sep="")
colnames(X) <- paste("X",1:2,sep="")
X
Y <- matrix(11:16,3,2)
colnames(Y) <- paste("Y",1:2,sep="")
Y
Z <- rbind(X,Y)
Z
Xd <- data.frame(X)
Yd <- data.frame(Y)
colnames(Yd) <- c("X2","X1")

Économétrie 2 86 / 90
rbind(Xd,Yd)
X <- matrix(c(1,2,3,4),2,2)
rownames(X) <- paste("ligne",1:2,sep="")
Y <- matrix(11:16,2,3)
cbind(data.frame(X),Y)

Économétrie 2 87 / 90
age <- c(7,38,32)
prenom <- c("arnaud","nicolas","laurent")
ville <- factor(c("rennes","rennes","marseille"))
indiv <- cbind.data.frame(age,prenom,ville)
indiv
population <- c(200,500,800)
caractvilles <- cbind.data.frame(c("rennes","lyon","marseille"),population)
names(caractvilles) <- c("ville","pop")
caractvilles
merge(indiv,caractvilles,by="ville")

Économétrie 2 88 / 90
Tableau croisé

tension <- factor(c(rep("Faible",5),rep("Forte",5)))


tension
laine <- factor(c(rep("Mer",3),rep("Ang",3),rep("Tex",4)))
laine
don <- cbind.data.frame(tension,laine)
don
table(don$tension,don$laine)
tabcroise <- xtabs(~tension+laine,data=don)
tabcroise
tabframe <- as.data.frame(tabcroise)
tabframe

Économétrie 2 89 / 90
Références

Pierre-André Cornillon, François Husson, Arnaud Guyader. 2018. R Pour La Statistique Et La


Science Des Données. Presses Universitaires de Rennes.

Économétrie 2 90 / 90

Vous aimerez peut-être aussi