Vous êtes sur la page 1sur 18

REPUBLIQUE DU BENIN

***********
MINISTERE DE L’ENSEIGNEMENT SUPERIEUR ET DE LA RECHERCHE SCIENTIFIQUE
***********
UNIVERSITE DE PARAKOU
***********
ECOLE NATIONALE DE STATISTIQUE, DE PLANIFICATION ET DE DEMOGRAPHIE
************

échantillonnage et ré-échantillonnage avec


R
Membre Groupe 2 : Sous la supervision de :
GAMBIALA Frank
Dr. Ir. SODJINOU Epiphane
GBADAMASSI Alassane
Agroéconomiste, Biostatisticien
IMOROU Bourhanou
OGOUTEGBE Terry

Aout 2023
Contenu
1. Commandes permettant de faire un échantillonnage aléatoire simple
avec remise

2. Commandes permettant de faire les rééchantillonnages (Bootstrap,


Jackkinfe, Test de permutation, Test de randimisation, Validation
croisée)

3. Cas pratique
Commandes permettant de faire un échantillonnage aléatoire simple avec
remise
Packages nécessaires : ggplot 2, tibble, tidyr, readr, purrr, dplyr, stringr,
forcats, Desc Tools, sampling,
Commandes disponibles : sample (), sample_n (), sample_frac (), strata (),
slice_sample()
Exemples d’utilisation :
• TAS1=Base[sample(nrow(Base), n, replace =TRUE),]
• TAS2=sample_n(Base, size=n, replace =TRUE)
• TAS3=sample_frac(Base, size=0,01, replace =TRUE)
• TAS4=slice_sample(df, n = 10, replace = TRUE) (nouvelle commande)
• TAS5=strata(base, stratanames, size, method=‘srswr ’)
Commandes permettant de faire les rééchantillonnages
(Bootstrap, Jackkinfe, Test de permutation, Test de
randomisation, Validation croisée)
Bootstrap

Package nécessaire :
bootstrap, mais boot offre plus de fonctionnalités
Commandes disponibles :
• library(boot)
• Définition d’une fonction pour le calcul de la statistique
• b=boot(object, statistic, R, sim, stype)
• summary(b)
• library(bootstrap)
• Utilisation différente de la fonction pour le calcul de la statistique
Bootstrap

Exemple :
• boot(data, statistic, R, sim=”ordinary”, stype=”i”, ...)
Les arguments
• data : vecteur ou table (observations sur les lignes)
• statistic : fonction retournant la valeur de la statistique
• R : nombre de réplicats
• sim : type de bootstrap (ordinary, parametric, ...)
• stype : dépend de la fonction utilisée
• indices : i, numéros des lignes sélectionnées (certains numéros plusieurs fois)
• fréquences (absolues) : f, un entier correspondant au nombre de sélection de chaque ligne
(somme est égale au nombre d’observations initiales)
• poids : w, un réel compris entre 0 et 1 (somme est égale à 1)
Bootstrap

Les sorties
• t0 : la statistique calculée sur les données
• t : les valeurs de la statistiques calculées sur les réplicats (R valeurs)
La fonction statistique : Elle est calculée par une fonction prenant au
moins 2 arguments : le premier les données et le second un vecteur
avec les indices/poids/fréquences des valeurs sélectionnées (par la
fonction boot).
• Si les données sont sous la forme de tableau, les indices représentent
les numéros de lignes. option des arguments qui seront passés via boot
Bootstrap

Exemples :
• Une fonction calculant la moyenne `a partir des indices :
statistic=function(valeurs,indices)
{ sum(valeurs[indices])/length(indices) }
boot(data, stat=statistic, R=1000, stype="i")
• Une fonction calculant la moyenne `a partir des fréquences :
statistic=function(valeurs,frequences)
{ sum(valeurs*frequences)/sum(frequences)) }
boot(data, stat=statistic, R=1000, stype="f")
Bootstrap

Autres fonctions
• Censboot : fonction de bootstrap pour données ”right-censored”
• tsboot : fonction de bootstrap pour des s´eries temporelles (d´ecoupage
• en blocs)
• tilt.boot fonction de bootstrap bas´ee sur un ”importance resampling”
• empinf retourne l’influence empirique des valeurs sur la statistique
• étudiée à partir d’un objet boot
• boot.array retourne un tableau n ∗ nb avec les fr´eq. de chaque individu `a
• partir d’un objet boot
• jack.after.boot effectue un jackknife sur un objet boot.
Jackkinfe
Package nécessaire :
bootstrap permet également de faire du jackknife
• La fonction pour calculer la statistique à partir des indices
functionCor=function(val, removed)
{ cor( val[ -removed,1] , val[ -removed,2] ) }

• Jackknife
jackCor=vector(length=l)
for (ind in 1 :l) {
jackCor[ind]=functionCor(tabac, ind) }
Jackkinfe
library(bootstrap)
• Définition de la fonction pour le calcul de la statistique
• Ex: myCor <- function(indice, data){ cor(data[indice,1],data[indice,2])
• j=jackknife( 1 :l, myCor, data=tabac)
• summary(j)
Jackkinfe
Utiliser le package bootstrap
Les arguments :
• x : le vecteur de valeurs
• theta : la fonction calculant la statistique. La fonction theta reçoit le vecteur x privé
du i ème élément comme argument
• Attention : la fonction theta du package bootstrap ne fonctionne pas comme celle
du package boot.
 les sorties
• jack.se : déviation standard de la statistique
• jack.bias : biais de la statistique
• jack.values : les n valeurs obtenues en retirant successivement les n individus
Jackkinfe
Le jackknife pour identifier les valeurs abérrantes
• j=jackknife( 1:l, myCor, data=tabac)}\only{ plot(j$jack.values)
Le jackknife après le bootstrap Objectif : identifier des valeurs abérrantes
parmis les nb bootstraps library(boot) jack.after.boot(b)
• Cette fonction calcule les valeurs d’influence jackknife à partir d’un objet de
sortie bootstrap et trace le tracé jackknife-after-bootstrap correspondant.
• Ex: jack.after.boot(boot.out, index = 1, t = NULL, L = = TRUE, stinf =
TRUE, alpha = NULL, main = "", ylab = NULL, ...)
boot.out : Un objet de classe "boot" qui serait normalement créé par un appel à
boot. Il devrait représenter un bootstrap non paramétrique. Pour des résultats
fiables, boot.out$R doit être raisonnablement grand.
Jackkinfe
• Index : L’indice de la statistique d’intérêt dans la sortie de boot.out$statistic.
• t : Un vecteur de longueur boot.out$R donnant les répliques bootstrap de la statistique
d’intérêt. Ceci est utile si la statistique d’intérêt est une fonction de la sortie bootstrap
calculée. Si elle n’est pas fournie, la valeur par défaut est boot.out$t[,index].
• L : Les valeurs empiriques d’influence pour la statistique d’intérêt. Elles ne sont utilisées
que si useJ est FALSE. S’ils ne sont pas fournis et sont nécessaires, ils sont calculés par
un appel à empinf. Si L est fourni alors on suppose qu’ils sont les valeurs de jackknife
infinitésimal.
• useJ : Une variable logique indiquant si les valeurs d’influence de jackknife calculées à
partir des répliques bootstrap doivent être utilisées. Si FALSE, les valeurs d’influence
empiriques sont utilisées. La valeur par défaut est TRUE.
• Stinf : Variable logique indiquant s’il faut normaliser les valeurs de jackknife avant de les
tracer. Si TRUE, les valeurs de jackknife utilisées sont divisées par leur erreur standard.
Test de permutation

Les tests de permutation sont des approches robustes, basées sur l’aléatoire et le
rééchantillonnage. Elles permettent de réaliser les tests ‘’Classiques’’, notamment des
procédures paramétriques, sans que la validité des résultats ne reposent sur des distributions
théoriques.

Les packages nécessaires les plus utilisés : coin, lmPerm et pgirmess

Commandes :

• library(coin)

• Oneway_test(VarDep~VartFact, data=NomBase, distribution= ‘’exact’’)


Validation croiée
Package nécessaire : doMC, tidyverse, caret, ISLR
Commandes :
• train_control <- trainControl(method = "cv", number = 10)
• model <- train(y~., data = dataset, trControl = train_control, method = « lm")
• Evaluer les performances du modèle
Comme mentionné dans l’algorithme de K-fold, ce modèle est testé par rapport
à chaque pli (ou sous-ensemble) unique de l’ensemble de données et dans
chaque cas, l’erreur de prédiction est calculée et enfin, la moyenne de toutes les
erreurs de prédiction est traitée comme la performance finale note du modèle.
• Print(model)
Test de randOmisation
• birds <- read.csv("../data/Bumpus_data.csv");

• bird_t_test <- t.test(birds[,5] ~ birds[,2], alternative = "less");

• print(bird_t_test);

• iter <- 9999; # Total iterations (+1 for observed data = 10k)

• diff <- NULL; # To add difference between groups

• N_birds <- dim(birds)[1]; # Total number of birds


Test de randOmisation

for(i in 1:iter){
bird_samp <- sample(x = birds[,2], size = N_birds, replace = FALSE);
samp_alive <- which(bird_samp == "alive");
samp_dead <- which(bird_samp == "dead");
mn_samp_a <- mean(birds[samp_alive, 5]);
mn_samp_d <- mean(birds[samp_dead, 5]);
diff[i] <- mn_samp_a - mn_samp_d; }
diff

Vous aimerez peut-être aussi