• 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

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é

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

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