• Aucun résultat trouvé

Statistiques non-paramétriques Ch. 2. Bootstrap 2017-18

N/A
N/A
Protected

Academic year: 2022

Partager "Statistiques non-paramétriques Ch. 2. Bootstrap 2017-18"

Copied!
24
0
0

Texte intégral

(1)

Statistiques non-paramétriques Ch. 2. Bootstrap 2017-18

Statistiques non-paramétriques Ch. 2. Bootstrap 2017-18

M2 CEE

Pr. Philippe Polomé, Université Lumière Lyon 2

(2)

Statistiques non-paramétriques Ch. 2. Bootstrap 2017-18 Définitions

Sommaire

Définitions Illustration

Commande sample

(3)

Statistiques non-paramétriques Ch. 2. Bootstrap 2017-18 Définitions

Motivation

I

En régression np, on n’a pas

I d’hyp. de normalité

I de coefficient dont on pourrait tester la significativité

I

Par contre, il faut pouvoir inférer

I L’effet d’un régresseurx sur une dépendantey,@y/@x, est-il significatif ?

I Peut-on calculer un IC ?

I Toute autre hyp moins simple

I

Dans les régressions np au ch suivant, bootstrap est la seule

technique d’inférence

(4)

Statistiques non-paramétriques Ch. 2. Bootstrap 2017-18 Définitions

Bootstrap

I

Hyp. “Principe de médiocrité” :

I Si on pouvaitré-échantillonner la pop.

I dans les mêmes conditions

I on obtiendrait un échantillon semblable à celui qu’on a déjà

I On ne peut pas ré-échantillonner

I Pas la même chose que représentativité

I

Principe : Traiter l’éch. comme une pop.

I Échantillonner l’échantillon originalavec remplacement

I Si on a une taillenau départ, on faitntirages avec remplacement

I Chaquei a une probabilité 1/nde sortir à chaque tirage

I On obtient unéchantillon Bootstrap(de taillen)

I oupseudo-échantillon

I Certaines obs. sont tirées pls fois, d’autres aucune

I Hyp. : ce pseudo-échantillon est semblable à ce qu’on aurait obtenu en ré-échantillonnant la pop.

(5)

Statistiques non-paramétriques Ch. 2. Bootstrap 2017-18 Définitions

Exemple notionel

I

Dans un tableur, plus intuitif

I

Soit un éch. de taille n d’une variable

z

I On numérote chaque obs. de 1 à n

I On crée une plage de n lignes x 1 col

I Chaque cellule est remplie de la fonctionrandbetween(1 ;n)

I Tire un naturel entre 1 et n

I On obtient n chiffres entre 1 et n

I certains sont répétés

I d’autres absents

I un pseudo-échantillon est généré en

I créant une nouvelle plage de n lignes x 1 col

I dans chaque cellule on associe l’observation original au chiffre trouvé

(6)

Statistiques non-paramétriques Ch. 2. Bootstrap 2017-18 Définitions

Exemple

Fichier “bootstrap.ods” sur page web

(7)

Statistiques non-paramétriques Ch. 2. Bootstrap 2017-18 Définitions

Exemple MCO

I

Échantillon original

<Y,X >

,

X

peut être une matrice

I B pseudo-échantillons

différents

<Yb,Xb>

I S’appelle “Bootstrap par paire” cary etX sont tirés ensemble

I N’est pas la seule façon

I p.e. on peut se baser sur les résidus I

Pour chaque pseudo-échantillon

I On prend le MRLY =X +✏

I On estime dans chaque pseudo-échantillon ˆb=⇣

Xb0Xb

1

Xb0Yb I Au total, une matrice ˆB deB vecteurs estimées ˆb

(8)

I

On prend un élément de , soit

i

I On aB estimations ˆib, on les mets en histogramme

50 échantillons 500 échantillons

5000 échantillons

1

échantillons

(9)

Statistiques non-paramétriques Ch. 2. Bootstrap 2017-18 Définitions

Exemple MCO et distribution empirique

I

La distribution empirique est représentée par les histogrammes

I LorsqueB! 1, et que les hypothèses bootstrap sont vérifiées

I alors la distribution empirique converge à la vraie distribution

I qui est normale pour un ˆMCO, mais ça n’est pas vrai pour p.e.

des stats de test

I

Deux moments de cette distribution empirique “bootstrap”

I ¯ˆi = B1 XB b=1

ˆib=E\⇣ ˆib

I var\⇣ ˆib

=B11 XB b=1

⇣ˆib ¯ˆi2

I

Intervalle de confiance, p.e. avec

B =

1000

I On ordonne ces 1000 estimations de la plus petite à la plus grande

I Alors les estimations numéro 25 et 975 sont les bornes inf et sup, respectivement, de l’intervalle de confiance à 95% de

(10)

Statistiques non-paramétriques Ch. 2. Bootstrap 2017-18 Définitions

Pourquoi est-ce intéressant ?

1.

Pas d’hypothèse sur la distribution des erreurs

1.1 Mais il ne peut y avoir de corrélation entre observations

I Le ré-échantillonnage casserait cette corrélation

I En panels, on ré-échantillonne seulement suri en utilisant touteslesT périodes de chaquei sélectionné

1.2 Le bootstrap par paires<Yb,Xb>devrait produire des écarts types robustes à l’hétéroscédasticité

2.

On peut calculer des intervales de confiance

2.1 pour toute fonction des paramètres estimés, y-compris non-linéaire

2.2 pour des paramètres estimés de modèles sans propriétés d’échantillons finis connues

I comme semi-np

(11)

Statistiques non-paramétriques Ch. 2. Bootstrap 2017-18 Illustration

Sommaire

Définitions Illustration

Commande sample

(12)

Statistiques non-paramétriques Ch. 2. Bootstrap 2017-18 Illustration

Exemple du package AER, Journals

I

On veut calculer des écarts-types & des intervales de confiance

I

data("Journals")

I

journals <- Journals[, c("subs", "price")]

I

journals$citeprice <- Journals$price/Journals$citations

I

jour_lm <- lm(log(subs) ~ log(citeprice), data = journals)

I

Voir commandes bootstrap dans np2017.R

(13)

Statistiques non-paramétriques Ch. 2. Bootstrap 2017-18 Illustration

La commande boot( )

I

Le bootstrap dans R

I utilise la commandeboot( )du package boot

I Elle accepte pls arguments,

I desquels 3 sont requis : I

Data : les données

I

Statistic : une fonction à définir qui renvoie la stat à

“bootstrapper”

I avec 2 arguments

I Les données (une nouvelle fois !)

I Un vecteur index qui donne les indices des obs à inclure dans l’échantillon bootstrap

I

R : le nombre de réplication

I B dans la présentation théorique

(14)

Statistiques non-paramétriques Ch. 2. Bootstrap 2017-18 Illustration

Construction de la fonction pour l’arg. “statistic” de boot( )

refit <- function(data, i)

I

Se rappeler que dans une

fonction

il ne faut qu’énoncer les arguments

I Ce que la fonction fait est décrit en dessous

I

coef(lm(log(subs) ~ log(citeprice), data = data[i,]))

I refitest définie juste pour les besoins deboot( )

I sur les données et sur un index i des données

I Icirefitrenvoie lescoefficients MCO delog(subs) ~ log(citeprice)

I et utilise comme indexile num. de la ligne des données

I pas MCO sur la lignei

I Donc, la fonctionboot( )prend icomme index du bootstrap

I Dans chaque réplication bootstrap, un nouvel éch. extrait des lignes dedata

Tout ça n’est pas très intuitif,

I

mais c’est le format de boot( )

(15)

Statistiques non-paramétriques Ch. 2. Bootstrap 2017-18 Illustration

Appeler boot( )

I

library("boot")

I boot est le package recommandé pour le bootstrap

I

set.seed(123)

I

jour_boot <- boot(journals, refit, R = 999)

I boot : 3 arg – données, fonction, B

I

jour_boot montre comme résultats :

I Les coef du lm original

I La différence avec la moyenne des coeffissus du bootstrap

I appelé “biais”

I Les écarts-types de ces derniers

I Pour calculer des t-stats bootstrappés il vaut mieux extraire les t-stats de lm plutôt que les coef

I voir np2017.R

I

Peu de différence avec la sortie standard coeftest(jour_lm)

(16)

Statistiques non-paramétriques Ch. 2. Bootstrap 2017-18 Illustration

Autres éléments de boot

I

t0 est la stat originale sur laquelle on réalise le bootstrap

I jour_boot$t0pour l’extraire

I

t l’ensemble des R stat bootstrappées

I Ici, intercept (col 1) et pente (col 2)

I On peut calculer directement un CI à partir de t avec la fonction quantile

I quantile(jour_boot$t[,2], probs = c(.025,.975))

I on prend [,2] pour le 2nd élément des coef = pente de la régression

I

Pour calculer un IC des t-stat, voir np2017.R

I

Exercice : IC du

R2

de cette régression

I LeR2peut être extrait de summary

(17)

Statistiques non-paramétriques Ch. 2. Bootstrap 2017-18 Illustration

Exemple test de Kruskal Walis

I

kruskal.test(Ozone ~ Month, data = airquality)

I

retest <- function(data, i)

I (kruskal.test(Ozone ~ Month, data = data[i,]))$statistic

I

air_boot <- boot(airquality, retest, R = 999)

I

Exercice :

I Donnez un IC pour la p-valeur en utilisant la fonction boot.ci

(18)

Statistiques non-paramétriques Ch. 2. Bootstrap 2017-18 Commande sample

Sommaire

Définitions Illustration

Commande sample

(19)

Statistiques non-paramétriques Ch. 2. Bootstrap 2017-18 Commande sample

Commande sample

I

sample(x, size, replace = FALSE)

I

Permet de prendre un sous-échantillon de x de taille size

I avec ou sans remplacement

I

En prenant un sous-éch. de la même taille que l’éch.

I avec remplacement

I on fait un éch. bootstrap

I

En mettant ça dans une boucle R fois

I et en pratiquant l’analyse désirée à chaque fois

I on obtient une alternative à la commandeboot

I

Quel intérêt ? permet de spécifier des groupes

I x est soit une variable dans le dataframe

I ou un index compatible

I p.e. en panel, on pourrait avoir i=pays et t=année

I on veut faire un bootstrap sur les seuls

(20)

Statistiques non-paramétriques Ch. 2. Bootstrap 2017-18 Commande sample

Bootstrap avec sample

I

package plm

I

Estimation panel effet fixe

I grun.fe <- plm(inv~value+capital, data = Grunfeld, model =

"within")

I En panel, svt het. & autocor. => calculer le t-stat par bootstrap

I

Ensuite, il faut définir une “function” pour définir un éch.

bootstrap

I Puis une boucle “for” pour appeler cette function R fois

(21)

FUN

I

myfunc <- function(n,df) {

I définit function (n et df sont dans l’appel de la fonction + bas)

I n est Grunfeld$firm lors de l’appel de myfunc

I df est le dataframe

I Grunfeld unique_firm <- unique(n)

I firme unique (help : unique renvoie un vecteur ou data frame comme son arg x mais en enlevant les lignes doublons, dans ce cas définies sur firm)

I sample_firm <- sample(unique_firm, size=length(unique_firm), replace=T )

I choisit sur firm unique, au hasard avec remplacement, de la taille de "size" (help sample)

I new_df <- do.call(rbind, lapply(sample_firm, function(x) df[df$firm==x,] ))

I va chercher toutes les années de chaque Etat choisi aleatoirement et rbind c’est-a-dire empile en ligne

I }

(22)

Bootstrap avec sample

I

do.call

I construit & execute une fonction : do.call(what, args)

I what : soit une fonction ou une chaine de caracteres nommant une fonction a appeler - rbind "row bind" lier des lignes

I args : lapply(X, FUN, ...) : Appliquer une Function FUN sur un vecteur ou une liste X et renvoie une liste de meme longueur que X, chaque element de cette liste est le resultat d’appliquer FUN a l’element correspondant de X

I Donc creation d’une 2eme function a l’interieur de lapply qui va chercher les lignes correspondantes aux états dans

"sample_firm"

I

a <- myfunc(Grunfeld$firm, Grunfeld)

I exécute la function, on voit que le résultat a la même taille que Grunfeld

I Mais certaines firmes sont dupliquées, d’où message d’erreur de plm

I pour éviter ca, re-créer un index des firmes

I On sait qu’on a 20 obs par firme, 10 firmes

I On va creer une sequencea$E <- rep(1 :10, each = 20)

I On teste :coef(plm(inv~value+capital, data = a, index = c("E","year"), model = "within"))ok !

(23)

Boucle for de 1 a R

I

R=99

I

c <- coef(plm(inv~value+capital, data = Grunfeld, model =

"within"))

I Estimation initiale (peut etre part du bootstrap), coef est un vector

I

for(i in 1 :R) {

I a <- myfunc(Grunfeld$firm, Grunfeld)# A chaque i on relance le bootstrap & les estimations

I a$E <- rep(1 :10, each = 20)

I c <- cbind(c,coef(plm(inv~value+capital, data = a, index = c("E","year"), model = "within")))

I cree une matrice avec tous les 1ers coefs sur la 1ere ligne, tous les 2nds sur la seconde et ainsi de suite pour l’ensemble des coef du modele (ici 2)

I }

(24)

Statistiques non-paramétriques Ch. 2. Bootstrap 2017-18 Commande sample

Sorties

I

colMeans(t(c))

I moyenne sur chaque coef

I

sqrt(apply(t(c), MARGIN = 2, var))

I ecarts-types par coef

I MARGIN = 2 indique à apply de calculer var sur les col de t(c) (transposée de c)

I

apply(t(c), MARGIN = 2, quantile, probs=c(.025, .975))

I 95% CI over coef value

Exercice. Répliquer cet exemple en groupant par year au lieu de firm

Références

Documents relatifs

Déterminer les coordonnées du point H, projeté orthogonal du point A sur la droite (

Le tableau de variation d’une fonction f résume les variations de la fonction en partageant l’ensemble de définition de la fonction en intervalles sur lesquels la fonc- tion

Des techniques qui ne supposent pas que le modèle est fixe dans tout l’échantillon. I Le nombre de paramètres du modèle grandit avec la taille

I Mais la médiane et les quantiles (percentiles, déciles...) bien I Les tests applicables au nominal sont applicables à l’ordinal...

connue sont estimés I dans le sens où ils résultent d’une estimation I alors le test n’est pas valable. I Une généralisation à un cas

I Donc, la fonction boot( ) prend i comme index du bootstrap. I Dans chaque réplication bootstrap, un

Test d’hypothèses Qualité de l’ajustement Modèles à données de panel Modèles

Modèles semiparamétriques Extensions du modèle linéaire Modèles à index unique LOESS.. Économétrie non-paramétrique 2017-18 Estimation de fonction de densité