Comment comparer les pentes de régression bootstrapées?


13

Supposons que j'ai deux ensembles de données avec n observations de paires de données de variable indépendante x et de variable dépendante y chacune. Supposons en outre que je souhaite générer une distribution des pentes de régression pour chaque ensemble de données en amorçant les observations (avec remplacement) N fois et en calculant la régression y = a + bxchaque fois. Comment comparer les deux distributions pour dire que les pentes sont significativement différentes? Un test U pour tester la différence entre les médianes des distributions dépendrait fortement de N, c'est-à-dire que plus je répète le bootstrap, plus la différence sera significative. Comment dois-je calculer le chevauchement entre les distributions pour déterminer une différence significative?

Réponses:


19

Le bootstrap est effectué pour obtenir une image plus robuste de la distribution d'échantillonnage que celle qui est supposée par la théorie des grands échantillons. Lorsque vous démarrez, il n'y a en fait aucune limite au nombre d'échantillons de démarrage que vous prenez; en fait, vous obtenez une meilleure approximation de la distribution d'échantillonnage plus vous prenez d'échantillons de démarrage. Il est courant d'utiliser bootsamples, bien qu'il n'y ait rien de magique de ce nombre. De plus, vous n'exécutez pas de test sur les exemples de démarrage; vous avez une estimation de la distribution d'échantillonnage - utilisez-la directement. Voici un algorithme:B=10,000

  1. prendre un échantillon de démarrage d'un ensemble de données en échantillonnant observations de démarrage avec remplacement. [En ce qui concerne les commentaires ci-dessous, une question pertinente est de savoir ce qui constitue une «observation de démarrage» valide à utiliser pour votre échantillon de bottes. En fait, il existe plusieurs approches légitimes; J'en mentionnerai deux qui sont robustes et vous permettent de refléter la structure de vos données: lorsque vous avez des données d'observation (c'est-à-dire que les données ont été échantillonnées dans toutes les dimensions, une observation de démarrage peut être un n-tuple ordonné (par exemple, une ligne Par exemple, si vous avez une variable prédictive et une variable de réponse, vous échantillonnerez n 1 ( x , y )n1n1 (x,y)paires ordonnées. D'un autre côté, lors de l'utilisation de données expérimentales, les valeurs des variables prédictives n'ont pas été échantillonnées, mais des unités expérimentales ont été affectées aux niveaux prévus de chaque variable prédictive. Dans un cas comme celui-ci, vous pouvez échantillonner valeurs y à l'intérieur de chacun des j niveaux de votre variable prédictive, puis associer ces y s à la valeur correspondante de ce niveau prédicteur. De cette manière, vous n'échantillonneriez pas sur X. ]n1j yjyX
  2. adapter le modèle de régression et de stocker l'estimation de la pente (appelons- ß 1 )β^1
  3. prendre un échantillon de démarrage de l'autre ensemble de données en échantillonnant observations de démarrage avec remplacementn2
  4. adapter à l'autre modèle de régression et de stocker l'estimation de la pente (appelons- ß 2 )β^2
  5. former une statistique à partir des deux estimations (suggestion: utiliser la différence de pente β 1 - β 2 )β^1β^2
  6. stocker les statistiques et vider les autres informations pour ne pas perdre de mémoire
  7. répéter les étapes 1 - 6, foisB=dix,000
  8. trier la distribution d'échantillonnage bootstrap des différences de pente
  9. calculer le% du bsd qui chevauche 0 (le plus petit des deux, le% de queue droit ou le% de queue gauche)
  10. multipliez ce pourcentage par 2

La logique de cet algorithme en tant que test statistique est fondamentalement similaire aux tests classiques (par exemple, les tests t) mais vous ne supposez pas que les données ou les distributions d'échantillonnage résultantes ont une distribution particulière. (Par exemple, vous ne présumez pas la normalité.) La principale hypothèse que vous faites est que vos données sont représentatives de la population à partir de laquelle vous souhaitez échantillonner / que vous souhaitez généraliser. Autrement dit, la distribution de l'échantillon est similaire à la distribution de la population. Notez que si vos données ne sont pas liées à la population qui vous intéresse, vous n'avez pas de chance.

Certaines personnes s'inquiètent d'utiliser, par exemple, un modèle de régression pour déterminer la pente si vous n'êtes pas prêt à assumer la normalité. Cependant, cette préoccupation est erronée. Le théorème de Gauss-Markov nous dit que l'estimation est non biaisée (c'est-à-dire centrée sur la vraie valeur), donc c'est bien. L'absence de normalité signifie simplement que la vraie distribution d'échantillonnage peut être différente de celle théoriquement posée, et donc les valeurs de p ne sont pas valides. La procédure d'amorçage vous permet de résoudre ce problème.

Deux autres problèmes concernant le bootstrap: si les hypothèses classiques sont remplies, le bootstrap est moins efficace (c'est-à-dire qu'il a moins de puissance) qu'un test paramétrique. Deuxièmement, l'amorçage fonctionne mieux lorsque vous explorez près du centre d'une distribution: les moyennes et les médianes sont bonnes, les quartiles pas si bons, l'amorçage du min ou du max échoue nécessairement. Concernant le premier point, vous n'aurez peut-être pas besoin de bootstrap dans votre situation; en ce qui concerne le deuxième point, l'amorçage de la pente est parfaitement fin.


Bien que je puisse me tromper, je pensais que le bootstrap en régression devait être sur les résidus plutôt que sur les données brutes, pour être validé ...
Xi'an

@ Xi'an, je me suis trompé avant moi, mais je ne comprends pas pourquoi vous pensez que seuls les résidus d'amorçage sont valides. La section 9.5 d'Efron et Tibshirani (1994) dit que "les paires d'amorçage sont moins sensibles aux hypothèses que les résidus d'amorçage. L'erreur standard obtenue en amorçant les paires donne des réponses raisonnables même si [la structure de probabilité du modèle linéaire] est complètement fausse." L'implication est que l'application du bootstrap est plus robuste, bien qu'ils impliquent qu'il peut être moins efficace dans certains cas.
gung - Rétablir Monica

Mon souci avec l'amorçage des paires est que vous intégrez également la distribution des prédicteurs, qui est généralement laissée en dehors de l'image dans les modèles linéaires réguliers. C'est pourquoi j'apprends toujours à mes élèves à ne bootstrap que les résidus.
Xi'an

@ Xi'an, c'est un point raisonnable, je suppose que je supposais une structure de données d'observation. J'ai modifié ma réponse pour ajouter plus de détails sur ces préoccupations. Cependant, je ne vois pas comment cela implique que les paires d'amorçage sont nécessairement invalides.
gung - Rétablir Monica

Forcer un appariement entre deux ensembles de données indépendants est artificiel et inefficace. Vous pouvez faire bien mieux que ça!
whuber

4

si

yi=β0+β1xi+β2si+β3sixi+ϵi
β3
E[yix,si=1]=(β0+β2)+(β1+β3)xiE[yix,si=0]=β0+β1xi.
β3nn2n

Si vous avez une corrélation entre les termes d'erreur, vous devrez peut-être modifier un peu cette procédure, alors réécrivez si c'est le cas.

Vous pouvez généraliser cette approche au cadre de régression apparemment sans rapport (SUR). Cette approche permet toujours aux coefficients d'interception et de pente d'être arbitrairement différents dans les deux ensembles de données.


1
C'est une bonne idée. Mais cela ne suppose-t-il pas également que les deux régressions comportent des erreurs iid?
whuber

1
Bon point. Elle nécessite qu'il n'y ait pas de variances différentes pour les erreurs par groupe et que les erreurs ne soient pas corrélées dans les différents groupes.
Charlie

0

Tout faire en une seule régression est net et l'hypothèse d'indépendance est importante. Mais le calcul des estimations ponctuelles de cette manière ne nécessite pas de variance constante. Essayez ce code R;

x <- rbinom(100, 1, 0.5)
z <- rnorm(100)
y <- rnorm(100)
coef(lm(y~x*z))
coef(lm(y~z, subset= x==1))[1] - coef(lm(y~z, subset= x==0))[1]
coef(lm(y~z, subset= x==1))[2] - coef(lm(y~z, subset= x==0))[2]

Nous obtenons la même estimation ponctuelle dans les deux cas. Les estimations de l'erreur standard peuvent nécessiter une variance constante (selon celle que vous utilisez), mais le bootstrap considéré ici n'utilise pas les erreurs standard estimées.


1
Si vous voulez tester si la différence de pentes est nulle (comme dans la réponse de @ Charlie, à laquelle vous semblez suivre), vous avez besoin d'une estimation précise et valide des erreurs standard. Peu importe que vous amorciez cette estimation ou non.
whuber
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.