Wie vergleiche ich Bootstrap-Regressionssteigungen?

13

Nehmen wir an, ich habe zwei Datensätze mit jeweils n Beobachtungen von Datenpaaren der unabhängigen Variablen x und der abhängigen Variablen y . Nehmen wir weiter an, ich möchte für jeden Datensatz eine Verteilung der Regressionssteigungen erzeugen, indem ich die Beobachtungen (mit Ersetzung) N- mal bootstrappe und die Regression y = a + bx berechnejedes Mal. Wie vergleiche ich die beiden Verteilungen, um festzustellen, dass sich die Steigungen erheblich unterscheiden? Ein U-Test zum Testen des Unterschieds zwischen den Medianen der Verteilungen wäre stark von N abhängig, dh je öfter ich das Bootstrapping wiederhole, desto signifikanter wird der Unterschied. Wie muss ich die Überlappung zwischen den Verteilungen berechnen, um einen signifikanten Unterschied festzustellen?

user7417
quelle

Antworten:

19

Bootstrapping wird durchgeführt, um ein robusteres Bild der Stichprobenverteilung zu erhalten, als es von der Theorie der großen Stichproben angenommen wird. Wenn Sie booten, gibt es praktisch keine Begrenzung für die Anzahl der Boot-Samples, die Sie nehmen. Tatsächlich erhalten Sie eine bessere Annäherung an die Sampling-Verteilung, je mehr Boot-Samples Sie verwenden. Es ist üblich, B=10.000 Bootsamples zu verwenden, obwohl diese Zahl nichts Magisches enthält. Darüber hinaus führen Sie keinen Test für die Boot-Beispiele durch. Sie haben eine Schätzung der Stichprobenverteilung - verwenden Sie diese direkt. Hier ist ein Algorithmus:B=10,000 bootsamples, obwohl es nichts Magisches an dieser Zahl. Darüber hinaus führen Sie keinen Test für die Boot-Beispiele durch. Sie haben eine Schätzung der Stichprobenverteilung - verwenden Sie diese direkt. Hier ist ein Algorithmus:

  1. Nehmen Sie ein Boot-Sample eines Datensatzes, indem Sie n1 Boot-Beobachtungen mit Ersetzung abtasten. [In Bezug auf die folgenden Kommentare ist eine relevante Frage, was eine gültige 'Boot-Beobachtung' für Ihr Boot-Beispiel darstellt. In der Tat gibt es mehrere legitime Ansätze; Ich erwähne zwei, die robust sind und es Ihnen ermöglichen, die Struktur Ihrer Daten zu spiegeln: Wenn Sie Beobachtungsdaten haben (dh die Daten wurden in allen Dimensionen abgetastet), kann eine Boot-Beobachtung ein geordnetes n-Tupel sein (z. B. eine Zeile) Beispiel: Wenn Sie eine Prädiktorvariable und eine Antwortvariable haben, würden Sie n1 (x, y) $ geordnete Paare abtasten. Wenn Sie dagegen mit experimentellen Daten arbeiten, erhalten Sie Werte für Prädiktorvariablen wurden nicht beprobt, aber experimentelle Einheiten wurden den beabsichtigten Pegeln jeder Prädiktorvariablen zugewiesen. Sie können n1j y Werteausjederder j EbenenIhrerPrädiktorvariablenabtastenunddiese y $ s dann mit dem entsprechenden Wert dieser Prädiktorebene koppeln. Auf diese Weise würden Sie nicht mehr als X abtasten.] Boot-Beobachtungen mit Ersatz. [In Bezug auf die folgenden Kommentare ist eine relevante Frage, was eine gültige 'Boot-Beobachtung' für Ihr Boot-Beispiel darstellt. In der Tat gibt es mehrere legitime Ansätze; Ich erwähne zwei, die robust sind und es Ihnen ermöglichen, die Struktur Ihrer Daten zu spiegeln: Wenn Sie Beobachtungsdaten haben (dh die Daten wurden in allen Dimensionen abgetastet), kann eine Boot-Beobachtung ein geordnetes n-Tupel sein (z. B. eine Zeile) Wenn Sie beispielsweise eine Prädiktorvariable und eine Antwortvariable haben, würden Sie n 1 ( x , y )n1n1 (x,y)bestellte Paare. Andererseits wurden beim Arbeiten mit experimentellen Daten keine Prädiktorvariablenwerte abgetastet, sondern den beabsichtigten Pegeln jeder Prädiktorvariablen experimentelle Einheiten zugewiesen. In einem solchen Fall können Sie y -Werte aus jedem der j Pegel Ihrer Prädiktorvariablen abtasten und diese y s dann mit dem entsprechenden Wert dieses Prädiktorpegels koppeln. Auf diese Weise würden Sie nicht über X abtasten .]n1j yjyX
  2. Passen Sie Ihr Regressionsmodell an und speichern Sie die Steigungsschätzung (nennen Sie es  hat beta1).)β^1
  3. Nehmen Sie ein Boot-Sample des anderen Datensatzes, indem Sie n2 Boot-Beobachtungen mit Ersetzung abfragen Boot-Beobachtungen mit Ersatzn2
  4. Passen Sie das andere Regressionsmodell an und speichern Sie die Steigungsschätzung (nennen Sie es  hat beta2).)β^2
  5. Bilden Sie eine Statistik aus den beiden Schätzungen (Vorschlag: Verwenden Sie die Steigungsdifferenz  hat beta1 hat beta2))β^1β^2
  6. Speichern Sie die Statistik und sichern Sie die anderen Informationen, um keinen Speicher zu verschwenden
  7. Wiederholen Sie die Schritte 1 - 6, B=10.000 mal malB=10,000
  8. Sortieren der Bootstrapped-Sampling-Verteilung der Steigungsunterschiede
  9. Berechnen Sie den Prozentsatz des BSD, der 0 überlappt (je nachdem, welcher Wert kleiner ist, der rechte oder der linke Schwanz%).
  10. multiplizieren Sie diesen Prozentsatz mit 2

Die Logik dieses Algorithmus als statistischer Test ähnelt im Wesentlichen klassischen Tests (z. B. t-Tests), Sie gehen jedoch nicht davon aus, dass die Daten oder die resultierenden Stichprobenverteilungen eine bestimmte Verteilung haben. (Sie gehen beispielsweise nicht von Normalität aus.) Sie gehen in erster Linie davon aus, dass Ihre Daten repräsentativ für die Grundgesamtheit sind, für die Sie eine Stichprobe erstellt haben bzw. die Sie verallgemeinern möchten. Das heißt, die Stichprobenverteilung ähnelt der Populationsverteilung. Beachten Sie, dass Sie kein Glück haben, wenn sich Ihre Daten nicht auf die Bevölkerung beziehen, an der Sie interessiert sind.

Einige Leute machen sich Sorgen, wenn Sie nicht bereit sind, Normalität anzunehmen, indem Sie beispielsweise ein Regressionsmodell verwenden, um die Steigung zu bestimmen. Diese Sorge ist jedoch falsch. Das Gauß-Markov-Theorem sagt uns, dass die Schätzung unvoreingenommen ist (dh auf den wahren Wert zentriert ist), also ist es in Ordnung. Das Fehlen der Normalität bedeutet einfach, dass die wahre Stichprobenverteilung von der theoretisch gesetzten abweichen kann und daher die p-Werte ungültig sind. Mit dem Bootstrapping-Verfahren können Sie dieses Problem beheben.

Zwei weitere Probleme in Bezug auf das Bootstrapping: Wenn die klassischen Annahmen erfüllt sind, ist das Bootstrapping weniger effizient (dh hat weniger Leistung) als ein parametrischer Test. Zweitens funktioniert Bootstrapping am besten, wenn Sie in der Nähe des Zentrums einer Distribution suchen: Mittelwerte und Mediane sind gut, Quartile nicht so gut, Bootstrapping mit min oder max schlägt zwangsläufig fehl. In Bezug auf den ersten Punkt müssen Sie in Ihrer Situation möglicherweise nicht booten. In Bezug auf den zweiten Punkt ist das Bootstrappen der Steigung vollkommen in Ordnung.

gung - Wiedereinsetzung von Monica
quelle
Obwohl ich mich vielleicht irre, dachte ich, dass der Bootstrap in der Regression sich eher auf die Residuen als auf die Rohdaten beziehen musste, um validiert zu werden ...
Xi'an,
@ Xi'an, ich habe mich vor mir selbst geirrt, aber ich verstehe nicht, warum du denkst, dass nur Bootstrapping-Residuen gültig sind. Efron & Tibshirani (1994), Abschnitt 9.5, sagt: "Bootstrapping-Paare reagieren weniger empfindlich auf Annahmen als Bootstrapping-Residuen. Der durch Bootstrapping-Paare erhaltene Standardfehler liefert vernünftige Antworten, auch wenn [die Wahrscheinlichkeitsstruktur des linearen Modells] völlig falsch ist." Die Implikation ist, dass die Anwendung des Bootstraps robuster ist, obwohl dies impliziert, dass es in einigen Fällen weniger effizient sein kann.
gung - Wiedereinsetzung von Monica
Meine Sorge beim Bootstrapping der Paare ist, dass Sie auch die Verteilung der Prädiktoren einbeziehen, die normalerweise in regulären linearen Modellen außerhalb des Bildes bleibt. Deshalb bringe ich meinen Schülern immer bei, nur die Reste zu booten.
Xi'an
@ Xi'an, das ist ein vernünftiger Punkt, ich nehme an, ich habe eine Beobachtungsdatenstruktur angenommen. Ich habe meine Antwort überarbeitet, um weitere Einzelheiten zu diesen Bedenken hinzuzufügen. Allerdings sehe ich nicht, wie das impliziert, dass Bootstrapping-Paare notwendigerweise ungültig sind.
gung - Reinstate Monica
Das Erzwingen einer Paarung zwischen zwei unabhängigen Datensätzen ist künstlich und ineffizient. Sie können viel besser als das tun!
whuber
4

Sie können die beiden Datensätze zu einer Regression kombinieren. Sei ein Indikator für den ersten Datensatz. Dann führen die Regressions Man beachte , dass die Auslegung des ist der Unterschied in den Steigungen aus dem separate Regressionen: Sie können die Verteilung vony i = β 0 + β 1 x i + β 2 s i + β 3 s i x i + ϵ i β 3 E [ y ix , s i = 1 ]si

yi=β0+β1xi+β2si+β3sixi+ϵi
β3
E[yix,si=1]=(β0+β2)+(β1+β3)xiE[yix,si=0]=β0+β1xi.
β3wenn Sie Standardprüfverfahren (normal / t) verwenden möchten oder wollen. Wenn Sie analytische Lösungen verwenden, müssen Sie entweder eine gruppenübergreifende Homoskedastizität annehmen oder die Heteroskedastizität korrigieren. Um dies zu gewährleisten, müssen Sie Beobachtungen zufällig aus der ersten und der zweiten Gruppe und nicht aus der Gesamtpopulation auswählen .nn2n

Wenn Sie eine Korrelation zwischen den Fehlerausdrücken haben, müssen Sie diese Prozedur möglicherweise ein wenig ändern. Schreiben Sie in diesem Fall zurück.

Sie können diesen Ansatz auf das scheinbar nicht verwandte Regressions-Framework (SUR-Framework) verallgemeinern. Dieser Ansatz ermöglicht es weiterhin, dass die Koeffizienten für den Achsenabschnitt und die Steigung in den beiden Datensätzen beliebig unterschiedlich sind.

Charlie
quelle
1
Es ist eine gute Idee. Aber geht das nicht auch davon aus, dass die beiden Regressionen ID-Fehler haben?
whuber
1
Guter Punkt. Es ist erforderlich, dass für die Fehler nach Gruppe keine unterschiedlichen Abweichungen vorliegen und dass die Fehler nicht in den verschiedenen Gruppen korreliert werden.
Charlie
0

Alles in einer Regression zu machen ist ordentlich und die Annahme der Unabhängigkeit ist wichtig. Die Berechnung der Punktschätzungen auf diese Weise erfordert jedoch keine konstante Varianz. Probieren Sie diesen R-Code aus.

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]

In beiden Fällen erhalten wir die gleiche Punktschätzung. Schätzungen des Standardfehlers erfordern möglicherweise eine konstante Varianz (abhängig davon, welchen Sie verwenden), aber das hier betrachtete Bootstrapping verwendet keine geschätzten Standardfehler.

Gast
quelle
1
Wenn Sie testen möchten, ob die Steigungsdifferenz Null ist (wie in der Antwort von @ Charlie, der Sie offenbar folgen), benötigen Sie eine genaue, gültige Schätzung der Standardfehler. Es spielt keine Rolle, ob Sie diese Schätzung booten oder auf andere Weise.
whuber