Wie vergleicht sich die Stärke einer logistischen Regression mit einem T-Test?


18

Entspricht die Potenz einer logistischen Regression und eines T-Tests? Wenn ja, sollten sie "Datendichte-Äquivalent" sein, womit ich meine, dass die gleiche Anzahl zugrunde liegender Beobachtungen bei einem festen Alpha von 0,05 die gleiche Leistung liefert. Betrachten Sie zwei Fälle:

  1. [Der parametrische t-Test]: 30 Ziehungen aus einer Binomialbeobachtung werden durchgeführt und die resultierenden Werte gemittelt. Dies wird 30 Mal für Gruppe A (mit einem Binomialwert von 0,70) und 30 Mal für Gruppe B (mit einem Binomialwert von 0,75) durchgeführt. Dies ergibt 30 Mittelwerte pro Gruppe, die eine Zusammenfassung von 1.800 Ziehungen aus einer Binomialverteilung darstellen. Ein 58df t-Test wird durchgeführt, um die Mittelwerte zu vergleichen.
  2. [Die logistische Regression]: Eine logistische Regression wird mit einer Dummy-codierten Steigung durchgeführt, die die Gruppenzugehörigkeit und jede der 1.800 Ziehungen darstellt.

Meine Frage besteht aus zwei Teilen:

  1. Ist die Leistung dieser Methoden bei einem festgelegten Alpha von 0,05 gleich oder unterschiedlich? Warum? Wie kann ich es beweisen?
  2. Ist die Antwort auf Frage 1 abhängig von den Stichprobengrößen, die in den t-Test einfließen, der Stichprobengröße jeder Gruppe im t-Test, den zugrunde liegenden Binomialwahrscheinlichkeiten oder einem anderen Faktor? Wenn ja, wie kann ich (ohne Simulation) wissen, dass die Leistung tatsächlich anders ist und welche Art von Änderungen welche Art von Änderungen in der Leistung hervorrufen? Alternativ können Sie auch einen ausgearbeiteten R-Code bereitstellen, der das Problem mithilfe der Simulation löst.

Antworten:


19

Wenn ich richtig gerechnet habe, hat die logistische Regression asymptotisch die gleiche Kraft wie der t-Test. Um dies zu sehen, notieren Sie sich die Log-Wahrscheinlichkeit und berechnen Sie die Erwartung des Hessischen Maximums (das Negative schätzt die Varianz-Kovarianz-Matrix der ML-Lösung). Kümmern Sie sich nicht um die übliche logistische Parametrisierung: Es ist einfacher, sie mit den beiden fraglichen Wahrscheinlichkeiten zu parametrisieren. Die Details hängen genau davon ab, wie Sie die Signifikanz eines logistischen Regressionskoeffizienten testen (es gibt verschiedene Methoden).

Dass diese Tests ähnliche Potenzen haben, sollte nicht allzu überraschend sein, da die Chi-Quadrat-Theorie für ML-Schätzungen auf einer normalen Annäherung an die logarithmische Wahrscheinlichkeit und der t-Test auf einer normalen Annäherung an die Proportionsverteilungen basiert. Der springende Punkt ist, dass beide Methoden die gleichen Schätzungen der beiden Anteile vornehmen und beide Schätzungen die gleichen Standardfehler aufweisen.


Eine tatsächliche Analyse könnte überzeugender sein. Nehmen wir eine allgemeine Terminologie für die Werte in einer bestimmten Gruppe (A oder B) an:

  • p ist die Wahrscheinlichkeit einer 1.
  • n ist die Größe jedes Zeichnungssatzes.
  • m ist die Anzahl der Ziehungssätze.
  • N=mn ist die Datenmenge.
  • 0 1 j th i thkij (gleich oder ) ist der Wert des Ergebnisses von in der Menge von Draws.01jthith
  • i thki ist die Gesamtzahl von Einsen in der Menge von Ziehungen.ith
  • k ist die Gesamtzahl von Einsen.

Die logistische Regression ist im Wesentlichen der ML-Schätzer von . Sein Logarithmus ist gegeben durchp

log(L)=klog(p)+(Nk)log(1p).

Seine Ableitungen bezüglich des Parameters sindp

log(L)p=kpNk1p and

2log(L)p2=kp2+Nk(1p)2.

Das Setzen der ersten auf Null ergibt die ML-Schätzung und das Einfügen in den Kehrwert des zweiten Ausdrucks ergibt die Varianz , Das ist das Quadrat des Standardfehlers. p (1 - p )/Np^=k/Np^(1p^)/N

Die t-Statistik wird von Schätzern auf der Grundlage der nach Ziehungssätzen gruppierten Daten erhalten. nämlich als Differenz der Mittelwerte (einer aus Gruppe A und der anderen aus Gruppe B) dividiert durch den Standardfehler dieser Differenz, der sich aus den Standardabweichungen der Mittelwerte ergibt. Schauen wir uns dann den Mittelwert und die Standardabweichung für eine bestimmte Gruppe an. Der Mittelwert entspricht , was mit dem ML-Schätzer identisch ist . Die fragliche Standardabweichung ist die Standardabweichung des Ziehmittels; das heißt, es ist die Standardabweichung der Menge von . Hier ist der Kern der Sache, also lasst uns einige Möglichkeiten untersuchen.p K i / nk/Np^ki/n

  1. Angenommen , die Daten gruppiert sind , nicht in überhaupt zieht: das heißt, und . Die sind die Zeichenmittel. Ihre Stichprobenvarianz ist gleich mal . Daraus folgt, dass der Standardfehler abgesehen von einem Faktor von , der im Wesentlichen wenn mit dem ML-Standardfehler identisch ist . Abgesehen von diesem kleinen Unterschied sind alle Tests, die auf logistischer Regression basieren, mit einem T-Test identisch, und wir erzielen im Wesentlichen die gleiche Leistung.m = N k i N / ( N - 1 ) , p ( 1 - p ) n=1m=NkiN/(N1)p^(1p^) 1N=1800N/(N1)1N=1800

  2. Wenn die Daten gruppiert werden, ist die (wahre) Varianz von gleich da die Statistiken die Summe von Bernoulli ( ) -Variablen mit jeweils der Varianz . Daher ist die erwartete Standardabweichung des Mittelwertes von dieser Werte ist die Quadratwurzel von , so wie zuvor.p ( 1 - p ) / n k i n p p ( 1 - p ) m p ( 1 - p ) / n / m = p ( 1 - p ) / Nki/np(1p)/nkinpp(1p)mp(1p)/n/m=p(1p)/N

Nummer 2 gibt an, dass die Stärke des Tests nicht nennenswert von der Verteilung der Ziehungen abhängen sollte (d. H. Wie und abhängig von variiert werden ), abgesehen von möglicherweise einem relativ geringen Effekt aus der Anpassung der Stichprobenvarianz (es sei denn, Sie waren so dumm, dass Sie innerhalb jeder Gruppe nur sehr wenige Sätze von Draws verwenden).n m n = Nmnmn=N

Eingeschränkte Simulationen zum Vergleich von mit (mit jeweils 10.000 Iterationen) mit (im Wesentlichen logistische Regression); ; und (Maximierung der Stichprobenvarianzanpassung) belegen dies: Die Leistung (bei , einseitig) in den ersten beiden Fällen beträgt 0,59, wohingegen im dritten Fall der Anpassungsfaktor a ergibt materielle Veränderung (es gibt nur noch zwei Freiheitsgrade anstelle von 1798 oder 58), sie sinkt auf 0,36. Ein weiterer Test vergleicht mitp = 0,74 m = 900 , n = 1 m = n = 30 m = 2 , n = 450 & agr; = 0,05 p = 0,50 p = 0,52p=0.70p=0.74m=900,n=1m=n=30m=2,n=450α=0.05p=0.50p=0.52 ergibt Potenzen von 0,22, 0,21 bzw. 0,15: Auch hier beobachten wir nur einen leichten Rückgang von keiner Gruppierung in Ziehungen (= logistische Regression) zu einer Gruppierung in 30 Gruppen und einen deutlichen Rückgang auf nur zwei Gruppen.

Die Moral dieser Analyse ist:

  1. Sie verlieren nicht viel, wenn Sie Ihre Datenwerte in eine große Anzahl relativ kleiner Gruppen von "Draws" aufteilen.mNm
  2. Bei einer geringen Anzahl von Gruppen ( ist klein, - die Datenmenge pro Gruppe - ist groß) können Sie beträchtliche Leistung verlieren .nmn
  3. Am besten gruppieren Sie Ihre Datenwerte überhaupt nicht in "Draws". Analysieren Sie sie einfach so, wie sie sind (unter Verwendung eines angemessenen Tests, einschließlich logistischer Regression und T-Tests).N

1
@suncoolsu Es ist eine Schande, dass wir das Update nicht abstimmen können ...
chl

2
@chl .. da stimme ich zu, ich hätte gerne (+2) gegeben :-), eigentlich habe ich bis zu diesem update noch nie so tief über diese frage nachgedacht.
Suncoolsu

Wie immer eine Tour de Force von Bill Huber. Ich betrachte die verwirrte Frage, wie man die Leistung für den t-Test mit einer logistischen Regression vergleicht. Aber es scheint, dass die Gemeinsamkeit beide Methoden zur Aufgabe macht, Proportionen zu testen.
Michael R. Chernick

8

Hier ist Code in R, der die Simulation von Whubers Antwort veranschaulicht . Feedback zur Verbesserung meines R-Codes ist mehr als willkommen.

N <- 900            # Total number data points
m <- 30;            # Size of draw per set
n <- 30;            # No of sets

p_null <- 0.70;     # Null hypothesis
p_alternate <- 0.74 # Alternate hypothesis
tot_iter <- 10000;

set.seed(1);        # Initialize random seed
null_rejected <- 0; # Set counter to 0
for (iter in 1:tot_iter)
{
    draws1 <- matrix(0,m,n);
    draws2 <- matrix(0,m,n);
    means1 <- matrix(0,m);
    means2 <- matrix(0,m);

    for (obs in 1:m)
    {
        draws1[obs,] <- rbinom(n,1,p_null);
        draws2[obs,] <- rbinom(n,1,p_alternate);

        means1[obs,] <- mean(draws1[obs,]);
        means2[obs,] <- mean(draws2[obs,]);
    }
    if (t.test(means1,means2,alternative="l")$p.value <= 0.05)
    {
        null_rejected <- null_rejected + 1; 
    }
}
power <- null_rejected / tot_iter

1
Vielen Dank für das Teilen! (Ich mag Ihren Stil, alle Parameter variabel zu machen und sie klar zu kommentieren.) Ich habe heute keine Stimmen mehr :-( Also muss ich warten, um sie zu bewerten.
whuber

2
@Srikant Nur ein paar Worte zu R-Code (gemäß Ihrer Anfrage): Sie können verwenden, replicate()wann immer Sie eine bestimmte Funktion wie unabhängige Zeiten aufrufen möchten ; Die Familienfunktionen sind sehr nützlich, um mit Matrix, Datenrahmen oder Liste zu arbeiten und die gleiche Funktion nach Spalte oder Zeile aufzurufen. Es wird empfohlen, den Unterstrich für die Benennung von Variablen zu vermeiden (und stattdessen einen Punkt zu verwenden), dies ist jedoch umstritten. Ansonsten mag ich auch einfachen und expliziten R-Code wie Ihren, weil er für alle verständlich ist. Ich habe meine +1 gegeben. rbinom() k{*}apply()
Chl

@chl Danke. Ich benutze diese Fragen, um R zu lernen! Feedback wie das Ihre ist also wertvoll.

@Skrikant LOL Ich habe gerade hinzugefügt: "Übrigens mag ich die Art, wie du R lernst!"
chl

Ich bin verwirrt; Gibt dies nicht nur die Kraft des t.test?
Russellpierce
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.