Hallo @eliyahu100 ,
(TLDR: Bootstrapping und Randomisierungstests können auf verschiedene Weise verwendet werden, um einen empirischen p-Wert für AUCroc zu erhalten, und anhand dieser können wir sehen, warum der p-Wert für AUCroc letztendlich der gesamte Modelltest ist).
Mein erster Eindruck ist, dass jeder p-Wert, den man aus einem Test des AUCroc erhalten könnte, konzeptionell dem gesamten Modelltest des Klassifikators entspricht (ob es sich um eine logistische Regression oder etwas anderes handelt). Das heißt, das Testen, ob es Beweise dafür gibt, dass sich AUCroc von dem unterscheidet, was unter der Nullhypothese (Zufallsklassifizierung) erwartet würde, scheint gleichbedeutend damit zu sein, ob ein Modell mehr Fehler erklärt (dh klassifiziert) als allein durch Zufall zu erwarten wäre. Allerdings konnte ich verschiedene Methoden finden, die beschreiben, wie man einen AUCroc-p-Wert berechnen kann (z Hajian-Tilaki, 2013 ), und wir können mit Sicherheit sagen, dass JMP diese Berechnungen standardmäßig nicht durchführt (obwohl natürlich alles über Skripting möglich ist). Beim Durchsehen dieser Formeln habe ich mich jedoch über die Leistung dieser Hypothesentests und die Annahmen, die sie treffen, gewundert. Wenn Sie Zugriff auf JMP Pro haben, können Sie in dieser Minute etwas tun, das wahrscheinlich die großen Stichproben/normalen Näherungsformeln übertrifft, die zum Erhalten von p-Werten für AUCroc verwendet werden, und das ist Bootstrapping und/oder Simulations-/Randomisierungstest. So würden wir es machen:
1. Passen Sie ein Klassifikatormodell an. Ich werde Big Class verwenden und Sex nach Körpergröße vorhersagen. Enthülle den AUCroc aus dem Roten Dreieck.
Open("$SAMPLE_DATA\Big Class.jmp");
Logistic(Y( :sex ),X( :height ), Positive Level( "M" ),
Logistic Plot( 0 ), ROC Curve( 1 ),
SendToReport(
Dispatch( {}, "Whole Model Test", OutlineBox, {Close( 1 )} ),
Dispatch( {}, "Parameter Estimates", OutlineBox, {Close( 1 )} )
));
2. Versuchen wir es zunächst mit Bootstrapping. Klicken Sie mit der rechten Maustaste auf den gemeldeten AUCroc-Wert und wählen Sie dann Bootstrap aus. Verwenden Sie mindestens 2500 Bootstrap-Stichproben, und ich mag Teilgewichtungen, besonders wenn Sie Kategorien mit niedrigen relativen Häufigkeiten haben.
Dadurch wird eine Tabelle mit Bootstrap-AUCroc-Werten zurückgegeben – was Sie aus der Stichprobenentnahme mit Ersetzung aus Ihrer Tabelle und der Neuberechnung des Modells und der AUCroc erhalten, wobei bei jeder Iteration der erhaltene Wert gespeichert wird. Im Wesentlichen haben Sie jetzt die Stichprobenverteilung von AUCroc für Ihren gegebenen Klassifikator. Das Erhalten eines p-Werts ist jetzt nur noch eine Frage des Zählens. Aber lassen wir das JMP machen.
3. Analysieren > Verteilung, setzen Sie dann AUC als Y und aktivieren Sie „Nur Histogramme“, dann klicken Sie auf OK:

Sie haben jetzt die Bootstrap-Konfidenzgrenzen für AUCroc, die sich hervorragend für die Berichterstattung eignen, und wenn Sie wissen möchten, ob Ihre ursprünglich erhaltene AUCroc von einem bestimmten Wert abweicht, müssen Sie nur sehen, ob dieser Nullwert innerhalb des Konfidenzintervalls bei Ihnen liegt gewähltes Vertrauensniveau.
Aber Sie haben nach einem p-Wert gefragt. Wir könnten buchstäblich zählen, wie oft wir von den 2500 Proben eine AUCroc von 0,50 oder weniger erhalten haben, aber wir können es noch besser machen. JMP fügt diesem Verteilungsbericht eine spezielle Ausgabe hinzu, da Ihre Tabelle eine BootID-Spalte enthält. JMP weiß, wie man mit dieser Spalte in Verbindung mit der ersten Zeile in Ihrer Tabelle (der ursprünglichen Stichprobenschätzung) arbeitet. Wenn wir wollten, können wir die Dinge ändern, um dies zu einer Art Randomisierungstest und nicht zu einem Bootstrap zu machen (und wir werden später den richtigen Randomisierungstest zum Vergleich durchführen). Wir müssen nur zwei einfache Änderungen vornehmen: Benennen Sie die Spalte "BootID•" in "SimID•" um und ändern Sie den Wert der ursprünglichen Schätzung in der Tabelle auf den Wert, gegen den Sie testen möchten ... das heißt, ändern Sie den Wert in die erste Zeile der AUC-Spalte auf 0,50. So sollte die Oberseite Ihrer Tabelle jetzt aussehen:
Starten Sie jetzt Analysieren > Verteilung, geben Sie wieder AUC für Y ein und überprüfen Sie nur Histogramme. Wir erhalten die folgende Ausgabe:
Beachten Sie, dass JMP uns "Simulationsergebnisse" anstelle von Bootstrap-Ergebnissen präsentiert. Dies liegt an der Änderung der BootID-Spalte (SimID ist das, was die Rechtsklick-Simulation bereitstellt). Wir fummeln hier ein wenig herum, also wissen Sie, dass JMP Simulationsergebnisse normalerweise nicht auf diese Weise meldet (wir werden als Nächstes sehen, wie es normalerweise funktioniert), aber in diesem Fall hat JMP eine Linie gezogen, wo Sie Ihren Nullhypothesenwert platziert haben von AUCroc (0,50) und in Ihrem p-Wert von Y<=Y0 können Sie den Anteil der Zeit sehen, in der Sie eine Zufallsstichprobe (aus Ihren ursprünglichen Daten) mit einer AUCroc kleiner oder gleich 0,50 erhalten haben. Dies ist Ihr empirischer einseitiger p-Wert mit 0,50 als Nullwert. Aber lassen Sie uns hier nicht aufhören, da ein anderer Ansatz dazu etwas Interessantes und Wichtiges ergeben kann.
Ein anderer Weg (und ehrlich gesagt der bessere Weg), den wir hätten erreichen können, wenn ein empirischer p-Wert unser gewünschtes Ergebnis ist, ist die Verwendung von Rechtsklick > Simulieren auf der gemeldeten AUCroc. Ähnlich wie beim Bootstrapping werden wir Resampling mit Ersetzung aus unserer Tabelle (oder ohne Ersetzung, wenn wir einen Permutationstest durchführen möchten) beinhalten. Um dies als Rechtsklick > Simulieren zu tun, müssen wir eine neue Formelspalte für den Simulator erstellen, die das Sampling mit Ersetzung handhabt. Eine einfache Möglichkeit, dies zu tun, besteht darin, die Y-Spalte in Ihrer Tabelle auszuwählen, mit der rechten Maustaste auf die Kopfzeile zu klicken > Neue Formelspalte > Zufällig > Stichprobe mit Ersatz.
Dadurch wird eine neue Spalte erstellt (Resample[Geschlecht]), und jedes Mal, wenn die Formel für diese Spalte wiederholt wird, werden die Bezeichnungen von M und F der Tabelle basierend auf den beobachteten Basisraten zufällig zugewiesen (dh Stichprobennahme mit Ersatz).
Kehren wir als Nächstes zu unserer logistischen Regression zurück und klicken Sie im Bericht mit der rechten Maustaste auf AUCroc, aber anstatt Bootstrap auszuwählen, wählen wir Simulate aus. Wir werden aufgefordert, eine Formelspalte auszuwählen, die eine in unserem Bericht verwendete Spalte ersetzen soll. In diesem Fall würde ich sex und Resample[sex] auswählen. Führen Sie mindestens 2500 Stichproben durch, aber für dieses Beispiel mache ich 10.000, nur damit wir eine genauere Schätzung der resultierenden Statistiken erhalten.
Nachdem JMP fertig ist, erhalten wir eine dem Bootstrap sehr ähnliche Tabelle, aber was wir jetzt haben, ist nicht die Stichprobenverteilung von AUCroc angesichts unserer ursprünglichen Daten, sondern die Stichprobenverteilung von AUCroc gegeben NEIN Beziehung zwischen Geschlecht und Größe, aber unter Berücksichtigung der Grundraten des Geschlechts (da wir simulieren, was passieren würde, wenn wir die Bezeichnungen M und F willkürlich den Zeilen in unserer Tabelle zuweisen würden – dies Ist die Nullhypothese).Ich wähle „Analysieren“ > „Verteilung“ und platziere „AUC“ für „Y“, aber dieses Mal aktivieren wir das Kontrollkästchen „Histogramme“ nicht, nur weil es hier etwas Wichtiges zu beachten gibt:

Unsere empirischen p-Werte werden erneut gemeldet, aber dieses Mal bewegen sich unsere Schätzungen von AUCroc in Richtung 0,50 (aber nicht wirklich 0,50, wir werden auf den Grund zurückkommen), während sie vom Bootstrap aus um unsere beobachtete Schätzung herum schwankten. Auch in diesem Fall simulieren wir, was mit AUCroc unter der Nullhypothese passiert, also sollte dies Sinn machen. Die empirischen p-Werte hier geben dann an, wie oft wir Schätzungen aus dieser Stichprobenverteilung erhalten, die unsere ursprüngliche Schätzung überschreiten (was unsere typische Definition eines p-Werts ist: Wie unwahrscheinlich ist unsere Schätzung, wenn allein der Zufall für die Generierung von verantwortlich ist Werte). Hier sind zwei Dinge zu beachten:
1. Unser empirischer p-Wert beträgt 0,0190, was mit dem p-Wert aus dem ursprünglichen Test des gesamten Modells identisch ist.
Es ist kein Zufall, dass dieser p-Wert nahe beieinander liegt, obwohl es für diesen Punkt ein Glücksfall ist, dass sie numerisch bis auf 4 Dezimalstellen identisch sind. Tatsächlich sind sie unterschiedlich und werden auf unterschiedliche Weise erhalten, aber wie ich eingangs sagte, ist ein Test des AUCroc im Vergleich zu dem, was nur zufällig erwartet wird, konzeptionell dasselbe wie der gesamte Modelltest: Klassifizieren wir besser als der Zufall? .
2. Beachten Sie, dass die Stichprobenverteilung hier keinen Mittelwert von 0,50 hat. Das heißt, der Erwartungswert ist hier nicht 0,50 und somit beziehen sich die angegebenen empirischen p-Werte nicht auf eine Null von 0,50, sondern auf eine Null von in diesem Fall etwa 0,57. Dies liegt an dem Anteil von Männchen und Weibchen in diesem Datensatz – wenn wir in Bezug auf die Größe nur zufällig raten, aber wissen, dass es mehr Männchen als Weibchen gibt, können wir häufiger auf Männchen tippen und eine Klassifizierungsgenauigkeit von mehr als 50 % erreichen (Unser Modellabschnitt berücksichtigt dies). Nebenbemerkung: Beachten Sie, dass diese Stichprobenverteilung ist entschieden nicht normal , und dennoch lassen p-Werte, die aus Näherungsformeln für große Stichproben (wie der, auf die ich zu Beginn verwiesen habe) Sie glauben, dass diese Stichprobenverteilung normal ist. Wenn wir einfach den Mittelwert und die Standardabweichung verwenden und auf diese Weise eine p-Wert-Suche durchführen, erhalten wir p = 0,0033, nicht p = 0,0190. Das ist ein großer Unterschied und ein guter Grund, warum Randomisierungstests großartig sind: keine Annahmen über die Verteilungsform. 
Noch ein Punkt: Die Unterschiede zwischen dem Bootstrap- und dem Randomisierungstest sind wichtig, obwohl sie scheinbar ähnliche Informationen liefern können. Im Bootstrap haben wir die BootI geändert D Spalte SimID sein, um JMP zu hacken, um uns den empirischen p-Wert-Bericht zu geben, und einen Wert in der Tabelle geändert, um die Null-AUCroc auf genau 0,50 festzulegen. Was wir erhalten haben, ist ein empirischer p-Wert, aber wir sind aus der Perspektive der Stichprobenschätzung vorgegangen (so wie ein Konfidenzintervall aus der Perspektive der Stichprobenschätzung ist). Für den Randomisierungstest per Rechtsklick Simulieren nehmen wir die Perspektive der Null ein und haben jmp erlaubt, die Stichprobenverteilung unter der Nullhypothese für AUCroc zu generieren und dann unsere ursprüngliche Schätzung damit verglichen. Keines davon ist genauer, aber am Ende geben sie Ihnen subtil unterschiedliche Dinge und es ist gut, beide zu verstehen.
Der größte Unterschied ist jedoch nicht der konzeptionelle Unterschied der statistischen Perspektive, die jeder Ansatz einnimmt, sondern die Angabe von 0,50 als Null in unserer Bootstrap-Variante. Sie fragen sich vielleicht, was wäre, wenn wir die Bootstrap-Tabelle verwenden und den Wert der Nullhypothese auf den Wert unter der Null setzen würden, die wir aus dem Randomisierungstest erhalten haben (0,57079)?
Nun, wenn Sie wie ich daran glauben, dass die Zufälligkeit der Zufälligkeit eine Gewissheit ist, sollten Sie erwarten, dass unser empirischer p-Wert, der aus Bootstrap-Stichproben gegen dieselbe Null generiert wird, dem tatsächlichen Randomisierungstest ziemlich ähnlich ist. Schätzen sie nicht konzeptionell dasselbe, nur aus unterschiedlichen Perspektiven?
Sehen Sie sich das an, p = 0,0192. Der Glaube an den Zufall wird aufrecht erhalten.:)
Ich hoffe, das hilft einigen!
@julianisch