Le bootstrap peut-il être considéré comme un «remède» pour la petite taille de l'échantillon?


71

Cette question a été déclenchée par quelque chose que j'ai lu dans ce manuel de statistiques de deuxième cycle et que j'ai entendu (indépendamment) lors de cette présentation lors d'un séminaire statistique. Dans les deux cas, la déclaration était dans les lignes de "parce que la taille de l'échantillon est assez petite, nous avons décidé d'effectuer une estimation via bootstrap au lieu de (ou avec) de cette méthode paramétrique ".X

Ils ne sont pas entrer dans les détails, mais sans doute le raisonnement est le suivant: la méthode suppose que les données suivent une certaine distribution paramétrique D . En réalité, la distribution n'est pas exactement D , mais c'est correct tant que la taille de l'échantillon est suffisante. Puisque dans ce cas, la taille de l'échantillon est trop petite, passons au bootstrap (non paramétrique) qui ne fait pas d'hypothèses de distribution. Problème résolu!XDD

À mon avis, ce n'est pas à cela que sert bootstrap. Voici comment je vois les choses: bootstrap peut donner un avantage lorsqu'il est plus ou moins évident qu'il y a suffisamment de données, mais il n'y a pas de solution de forme fermée pour obtenir des erreurs standard, des valeurs p et des statistiques similaires. Un exemple classique consiste à obtenir un CI pour le coefficient de corrélation à partir d’un échantillon d’une distribution normale bivariée: la solution sous forme fermée existe, mais elle est tellement compliquée que l’amorçage est plus simple. Cependant, rien n'implique que bootstrap puisse d'une manière ou d'une autre aider quelqu'un à s'en sortir avec un échantillon de petite taille.

Est-ce que ma perception est correcte?

Si vous trouvez cette question intéressante, voici une autre question plus spécifique sur le bootstrap:

Bootstrap: le problème de l'overfitting

PS Je ne peux pas m'empêcher de partager un exemple flagrant de la «méthode du bootstrap». Je ne divulgue pas le nom de l'auteur, mais il est l'un des «quants» de la génération la plus âgée qui a écrit un livre sur la finance quantitative en 2004. L'exemple est pris de là.

Considérez le problème suivant: supposons que vous avez 4 actifs et 120 observations de rendement mensuel pour chacun. L’objectif est de construire la cdf commune en 4 dimensions des déclarations annuelles. Même pour un seul actif, la tâche semble difficilement réalisable avec seulement 10 observations annuelles, sans parler de l’estimation de la cdf à 4 dimensions. Mais ne vous inquiétez pas, le «bootstrap» vous aidera: prenez toutes les observations à 4 dimensions disponibles, rééchantillonnez 12 avec remplacement et combinez-les pour construire un seul vecteur de déclaration annuelle à 4 dimensions «bootstrapped». Répétez cela 1 000 fois et, voilà, vous vous êtes procuré un «échantillon bootstrap» de 1 000 déclarations annuelles. Utilisez-le comme échantillon iid de taille 1000 aux fins de l'estimation de la cdf ou de toute autre inférence pouvant être tirée d'un historique de mille ans.


18
J'entends ou lis des sentiments similaires à votre premier paragraphe, mais j'ai tendance à être en désaccord. Généralement, je ne vois pas l'amorçage comme étant nécessairement utile dans les petits échantillons. Sa justification est asymptotique / grand échantillon et, dans de nombreux cas, ses performances en petits échantillons sont problématiques. la couverture des intervalles, par exemple, est souvent très différente du taux nominal. C'est un autre outil utile mais, comme beaucoup d'autres qui ont été annoncés au fil des ans, ce n'est pas la panacée que certains imaginent. Je ne pense vraiment pas que ce soit une solution pour de très petits échantillons.
Glen_b

Dans le livre de Simon Sheather (figure 3.40), il existe un diagramme de flux pour la régression qui suggère le bootstrap pour l'inférence lorsque la taille de l'échantillon n'est pas grande et que les erreurs ne sont pas distribuées normalement.
Tony Ladson

2
La réponse à la question du quatrième paragraphe est oui (ou du moins vous obtiendriez un crédit pour votre argument si vous donniez cette réponse à un test de ma classe). Avez-vous vérifié cette discussion ? Dans ma réponse , j'ai expliqué les approximations apportées par le bootstrap et fait référence au document «Coup pour le cerveau» que tout bootstrapper devrait lire pour être conscient des limites de la méthode. Il serait bien de voir des références aux livres / papiers / présentations qui ont déclenché votre question
StasK

Le bootstrap ne vous donne-t-il pas simplement un terme supplémentaire dans une extension Edgeworth - comme une approximation normale avec un terme de correction?
probabilitéislogique

Réponses:


34

nn1nn

simfun <- function(n=5) {
    x <- rnorm(n)
    m.x <- mean(x)
    s.x <- sd(x)
    z <- m.x/(1/sqrt(n))
    t <- m.x/(s.x/sqrt(n))
    b <- replicate(10000, mean(sample(x, replace=TRUE)))
    c( t=abs(t) > qt(0.975,n-1), z=abs(z) > qnorm(0.975),
        z2 = abs(t) > qnorm(0.975), 
        b= (0 < quantile(b, 0.025)) | (0 > quantile(b, 0.975))
     )
}

out <- replicate(10000, simfun())
rowMeans(out)

Mes résultats pour une course sont:

     t      z     z2 b.2.5% 
0.0486 0.0493 0.1199 0.1631 

α


6
Votre dernière phrase m'a rendu curieux, alors j'ai essayé avec votre exemple. J'ai utilisé le bootpaquet et je lui ai demandé de fournir tous les intervalles possibles: l'intervalle d'approximation normal du premier ordre, l'intervalle d'amorçage de base, l'intervalle d'amorçage studentisé, l'intervalle de centile d'amorçage (que votre code fournit déjà) et le centile d'amorçage ajusté (BCa). intervalle. Les résultats étaient pratiquement tous identiques (taux de rejet d'environ 0,16 à 0,17), à l'exception de l'intervalle de Student, qui présentait un taux de rejet nominal (0,05) (ce qui est logique, car il ressemble davantage au test t standard).
Wolfgang

2
@ Wolfgang, merci d'avoir fait les simulations supplémentaires. Je suis un peu surpris que les autres intervalles ne fassent pas un peu mieux, mais pas qu'ils ne rencontrent pas le niveau de 0,05.
Greg Snow

1
Oui, j'ai été un peu surpris aussi! Parfois, notre intuition échoue. C'est pourquoi il est si merveilleux de pouvoir écrire un petit script en R en quelques minutes, de le faire exécuter des 10,000 \times 10,000itérations (cela a pris quelques minutes de plus) et de pouvoir vérifier les choses. Et votre exemple montre bien que le bootstrap peut très mal fonctionner avec de petits échantillons même lorsque les choses sont "agréables" (c'est-à-dire que les données sont en fait normales).
Wolfgang

En fait, le problème observé dans cette simulation est exactement celui sur lequel je viens de poser des questions et auquel j'ai répondu dans les commentaires de @whuber: stats.stackexchange.com/questions/323455/… . Par conséquent, je ne pense pas que le problème réside dans la taille de l'échantillon, mais dans la violation de l'indépendance pour l'inférence paramétrique au sein de chaque échantillon.
demi-passe le

2
zt

14

Si vous disposez d'un échantillon de petite taille (comme lumière latérale, ce qui est "petit" semble dépendre d'une règle coutumière sous-jacente dans chaque domaine de recherche), aucun bootstrap ne fera la magie. En supposant qu'une base de données contienne trois observations pour chacune des deux variables à l'étude, aucune inférence n'aura de sens. D'après mon expérience, le bootstrap non paramétrique (1 000 ou 10 000 réplications) remplace bien le test t lorsque les distributions d'échantillons (au moins 10 à 15 observations chacune) sont asymétriques et que, par conséquent, les conditions préalables du test t habituel ne sont pas remplies. En outre, quel que soit le nombre d'observations, le bootstrap non paramétrique peut être un choix obligatoire lorsque les données sont positivement asymétriques, comme cela se produit toujours pour les coûts des soins de santé.


1
bootstrap peut être un choix obligatoire lorsque les données sont positivement asymétriques - pourquoi ne pas utiliser plutôt une distribution asymétrique lognormale ou similaire? SAS et R ont beaucoup de choix.
James

1
La réponse de James mérite réflexion. Cependant, le problème habituel auquel je suis confronté avec les données de coûts de journalisation est la transformation en arrière en métrique avant de présenter les résultats aux décideurs. Vous pouvez éviter ce problème avec un bootstrap non paramétrique.
Carlo Lazzaro

Carlo, étant donné que vous avez de l'expérience dans la transformation des journaux, vous voudrez peut-être répondre à une autre question (il existe une prime de 50 points): stats.stackexchange.com/a/111932/54099
James

James, j'ai donné une réponse tentante à votre question il y a quelques minutes.
Carlo Lazzaro

tχ12

13

D'autres réponses critiquent les performances des intervalles de confiance bootstrap , et non pas les bootstrap eux-mêmes. C'est un problème différent.

Si votre contexte remplit les conditions de régularité pour la convergence de la distribution bootstrap (convergence en termes de nombre d'échantillons bootstrap), alors la méthode fonctionnera si vous utilisez un échantillon bootstrap suffisamment grand.

Si vous souhaitez vraiment résoudre les problèmes liés à l’utilisation de bootstrap non paramétrique, voici deux problèmes:

(1) Problèmes de rééchantillonnage.

L’un des problèmes liés au bootstrap, que ce soit pour les échantillons de petite taille ou de grande taille, est l’étape de ré-échantillonnage. Il n'est pas toujours possible de ré-échantillonner tout en conservant la structure (dépendance, temporelle, ...) de l'échantillon. Un exemple de ceci est un processus superposé .

Supposons qu’il existe un certain nombre de sources indépendantes dans chacune desquelles des événements se produisent de temps en temps. Les intervalles entre les événements successifs d'une source sont supposés être des variables aléatoires indépendantes ayant toutes la même distribution, de sorte que chaque source constitue un processus de renouvellement d'un type connu. Les sorties des sources sont combinées en une sortie groupée.

Comment voulez-vous rééchantillonner tout en conservant la structure de dépendance inconnue ?

(2) Échantillons bootstrap étroits et intervalles de confiance bootstrap pour les petits échantillons .

Dans les petits échantillons, le minimum et le maximum des estimateurs de chaque sous-échantillon peuvent définir un intervalle étroit, puis les extrémités extrêmes droite et gauche de tout intervalle de confiance seront très étroites (ce qui est contre-intuitif compte tenu du petit échantillon!) Dans certains modèles.

x1,x2Exp(λ)λ>0

set.seed(1)
x <- rexp(2,1)
# Maximum likelihood estimator
1/mean(x)

# Profile likelihood: provides a confidence interval with right-end point beyond the maximum inverse of the mean
Rp <- Vectorize(function(l) exp(sum(dexp(x,rate=l,log=T))-sum(dexp(x,rate=1/mean(x),log=T))))

curve(Rp,0,5)
lines(c(0,5),c(0.147,0.147),col="red")

λλ^=2/(x1+x2)

library(boot)
set.seed(1)
x <- rexp(2,1)
1/mean(x)
# Bootstrap interval: limited to the maximum inverse of the mean
f.boot <- function(data,ind) 1/mean(data[ind])
b.b <- boot(data=x, statistic=f.boot, R=100000)
boot.ci(b.b, conf = 0.95, type = "all")
hist(b.b$t)

x1x2


6

Bootstrap fonctionne bien dans la petite taille des échantillons en assurant l'exactitude des essais (par exemple , que le niveau de signification de 0,05 nominal est proche de la taille réelle du test), mais le bootstrap ne pas vous accorder la puissance supplémentaire par magie. Si vous avez un petit échantillon, vous avez peu de pouvoir, à la fin de l'histoire.

Les régressions paramétriques (modèles linéaires) et semiparamétriques (GEE) tendent à avoir de médiocres propriétés de petit échantillon ... le premier en raison d'une forte dépendance à des hypothèses paramétriques, le second en raison du grossissement d'estimations d'erreur standard robustes dans de petits échantillons. L’amorçage (et d’autres tests basés sur le ré-échantillonnage) fonctionne vraiment bien dans ces circonstances.

Pour la prédiction, l’amorçage vous donnera de meilleures estimations (plus honnêtes) de la validité interne que la validation d’un échantillon fractionné.

n


2
(Par exemple, le niveau de signification nominal de 0,05 est proche de la taille réelle du test), - mais dans le code R ci-dessus, nous venons de voir que le bootstrap ne préserve pas la taille du test, n'est-ce pas?
James

Je vois que vous faites référence à la réponse fournie par Greg Snow. J'ai été surpris par ce résultat. Je devrai revérifier mes faits et modifier ma réponse. Merci.
AdamO
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.