Salut @eliyahu100 ,
(TLDR : les tests d'amorçage et de randomisation peuvent être utilisés, de différentes manières, pour obtenir une valeur de p empirique pour l'AUCroc, et à travers ceux-ci, nous pouvons voir pourquoi la valeur de p pour l'AUCroc finit par être le test du modèle complet).
Ma première impression est que toute valeur p que l'on pourrait obtenir à partir d'un test de l'AUCroc est conceptuellement équivalente à l'ensemble du test de modèle du classificateur (qu'il s'agisse d'une régression logistique ou autre). Autrement dit, tester s'il existe des preuves que l'ASCroc est différente de ce qui serait attendu sous l'hypothèse nulle (classification aléatoire) semble équivaloir à savoir si un modèle explique plus d'erreurs (c'est-à-dire classe) que ce à quoi on pourrait s'attendre par hasard seul. Cela dit, j'ai pu trouver diverses méthodes décrivant comment on pouvait calculer une valeur p AUCroc (par exemple Hajian-Tilaki, 2013 ), et nous pouvons dire en toute sécurité que JMP n'effectue pas ces calculs par défaut (bien que tout soit possible via des scripts, bien sûr). Cependant, en parcourant ces formules, je me suis interrogé sur la performance de ces tests d'hypothèses et les hypothèses qu'ils formulent. Si vous avez accès à JMP Pro, il y a quelque chose que vous pouvez faire tout de suite qui surpassera probablement les grandes formules d'approximation échantillon/normal utilisées pour obtenir les valeurs de p pour AUCroc, et c'est le test d'amorçage et/ou de simulation/randomisation. Voici comment nous procéderions :
1. Ajustez un modèle de classificateur. J'utiliserai Big Class et prédirai le sexe en fonction de la taille. Révélez l'AUCroc du triangle rouge.
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. Tout d'abord, essayons avec Bootstrapping. Cliquez avec le bouton droit sur la valeur AUCroc signalée, puis sélectionnez Bootstrap. Utilisez au moins 2500 échantillons bootstrap, et j'aime les poids fractionnaires, surtout si vous avez des catégories qui ont des fréquences relatives faibles.
Cela renverra une table de valeurs AUCroc amorcées - ce que vous obtenez en échantillonnant avec remplacement à partir de votre table et en recalculant le modèle et AUCroc, en stockant à chaque itération la valeur que vous obtenez. Essentiellement, vous avez maintenant la distribution d'échantillonnage de AUCroc pour votre classificateur donné. L'obtention d'une valeur de p n'est plus qu'une question de comptage. Mais laissons JMP le faire.
3. Analyser > Distribution, puis mettez AUC comme Y, et cochez « Histogrammes uniquement », puis cliquez sur OK :

Vous avez maintenant les limites de confiance bootstrap sur AUCroc, qui sont idéales pour les rapports, et si vous souhaitez savoir si votre AUCroc initialement obtenu est différent d'une valeur particulière, il vous suffit de voir si cette valeur nulle se situe dans l'intervalle de confiance à votre niveau de confiance choisi.
Mais, vous avez demandé une valeur p. Nous pourrions littéralement compter combien de fois sur les 2500 échantillons nous avons obtenu une AUCroc à 0,50 ou moins, mais nous pouvons faire mieux. JMP ajoute une sortie spéciale à ce rapport de distribution car il y a une colonne BootID dans votre table. JMP sait comment utiliser cette colonne conjointement avec la première ligne de votre tableau (l'exemple d'estimation d'origine). Si nous le voulions, nous pouvons changer les choses pour en faire une sorte de test de randomisation plutôt qu'un bootstrap (et nous ferons le test de randomisation approprié plus tard pour comparer). Nous avons juste besoin d'apporter deux modifications simples : renommez la colonne "BootID•" en "SimID•" et remplacez la valeur de l'estimation d'origine dans le tableau par la valeur par rapport à laquelle vous souhaitez tester... c'est-à-dire, modifiez la valeur dans la première ligne de la colonne AUC à 0,50. Voici à quoi devrait maintenant ressembler le haut de votre tableau :
Lancez maintenant Analyser> Distribution, mettez à nouveau AUC pour Y et vérifiez uniquement les histogrammes. Nous obtiendrons la sortie suivante :
Notez que JMP nous présente des "résultats de simulation" plutôt que des résultats d'amorçage. Cela est dû au changement de la colonne BootID (SimID est ce que fournit la simulation par clic droit). Nous cherchons un peu les choses ici, alors sachez que ce n'est généralement pas ainsi que JMP rapporte les résultats de la simulation (nous verrons comment cela fonctionne normalement ensuite), mais dans ce cas, JMP a tracé une ligne pour l'endroit où vous avez placé votre valeur d'hypothèse nulle de AUCroc (0,50), et dans votre valeur p de Y<=Y0, vous pouvez voir la proportion de fois où vous avez obtenu un échantillon aléatoire (à partir de vos données d'origine) avec une AUCroc inférieure ou égale à 0,50. Il s'agit de votre valeur de p unilatérale empirique, étant donné que 0,50 est nul. Mais ne nous arrêtons pas là, car une autre approche peut donner quelque chose d'intéressant et d'important.
Une autre façon (et franchement, la meilleure façon) d'y parvenir si une valeur p empirique est le résultat souhaité, consiste à utiliser Clic droit> Simuler sur l'AUCroc signalé. Tout comme Bootstrapping, nous allons impliquer un rééchantillonnage avec remplacement de notre table (ou sans remplacement si nous souhaitons faire un test de permutation). Pour ce faire en tant que clic droit> Simuler, nous devons créer une nouvelle colonne de formule pour le simulateur qui gérera l'échantillonnage avec remplacement. Pour ce faire, une méthode simple consiste à sélectionner la colonne Y dans votre tableau, à cliquer avec le bouton droit sur la ligne d'en-tête > Nouvelle colonne de formule > Aléatoire > Échantillon avec remplacement.
Cela crée une nouvelle colonne (Resample[sex]), et chaque fois que la formule de cette colonne est répétée, les étiquettes de M et F sont attribuées au hasard au tableau en fonction des taux de base observés (c'est-à-dire, échantillonnage avec remplacement).
Ensuite, revenons à notre régression logistique et cliquez avec le bouton droit sur AUCroc dans le rapport, mais plutôt que de sélectionner Bootstrap, nous sélectionnons Simuler. Nous serons invités à choisir une colonne de formules pour remplacer une colonne utilisée dans notre rapport. Dans ce cas, je sélectionnerais sex et Resample[sex]. Faites au moins 2500 échantillons, mais pour cet exemple, je vais faire 10k juste pour obtenir une estimation plus précise des statistiques résultantes.
Une fois JMP terminé, nous recevons un tableau très similaire au bootstrap, mais ce que nous avons maintenant n'est pas la distribution d'échantillonnage de AUCroc compte tenu de nos données d'origine, mais la distribution d'échantillonnage de AUCroc donnée Non relation entre le sexe et la taille mais en respectant les taux de base du sexe (puisque nous simulons ce qui se passerait si nous attribuions au hasard les étiquettes de M et F aux lignes de notre tableau -- ceci est l'hypothèse nulle).Je vais choisir Analyser > Distribution, placer AUC pour Y, mais cette fois ne cochons pas la case Histogrammes uniquement car il y a quelque chose d'important à noter ici :

Nos valeurs p empiriques sont à nouveau rapportées, mais cette fois nos estimations de l'AUCroc oscillent vers 0,50 (mais pas réellement 0,50, nous reviendrons sur la raison) alors qu'à partir du bootstrap, elles oscillaient autour de notre estimation observée. Encore une fois, dans ce cas, nous simulons ce qui arrive à AUCroc sous l'hypothèse nulle, donc cela devrait avoir du sens. Les valeurs de p empiriques ici indiquent alors la fréquence à laquelle nous obtenons des estimations à partir de cette distribution d'échantillonnage qui dépassent notre estimation d'origine (ce qui est notre définition typique d'une valeur de p : quelle est la probabilité de notre estimation étant donné que le hasard seul est responsable de la génération de la valeurs). Deux choses à remarquer ici :
1. Notre valeur de p empirique est de 0,0190, ce qui est identique à la valeur de p du test de modèle complet d'origine.
Ce n'est pas un hasard si cette valeur p est proche, même si c'est une chance pour ce point qu'ils soient numériquement identiques à 4 décimales. En fait, ils sont différents et obtenus de différentes manières, mais comme je l'ai dit au début, un test de l'AUCroc vs ce qui est attendu par le hasard seul est conceptuellement la même chose que l'ensemble du test du modèle : classe-t-on mieux que le hasard ? .
2. Notez que la distribution d'échantillonnage ici n'a pas une moyenne de 0,50. Autrement dit, la valeur attendue ici n'est pas de 0,50 et donc les valeurs de p empiriques données ne concernent pas un zéro de 0,50, mais plutôt un zéro de, dans ce cas, environ 0,57. Cela est dû à la proportion d'hommes et de femmes dans cet ensemble de données - si nous devinons simplement au hasard par rapport à la taille, mais savons qu'il y a plus d'hommes que de femmes, nous pouvons deviner les hommes plus souvent et obtenir une précision de classification supérieure à 50 %. (notre modèle d'interception en tient compte). Remarque : notez que cette distribution d'échantillonnage est résolument anormal , et pourtant les valeurs de p obtenues à partir de formules d'approximation de grands échantillons (comme celle que j'ai référencée au début) vous feraient croire que cette distribution d'échantillonnage est normale. Si nous utilisons simplement la moyenne et l'écart type et effectuons une recherche de valeur p de cette façon, nous obtenons p = 0,0033, et non p = 0,0190. C'est une grande différence et une excellente raison pour laquelle les tests de randomisation sont excellents : aucune hypothèse sur la forme de la distribution. 
Encore un point : les différences entre le bootstrap et le test de randomisation sont importantes, même si elles peuvent fournir ce qui semble être des informations similaires. Dans le bootstrap, nous avons changé le BootI D colonne pour être SimID pour pirater JMP pour nous donner le rapport empirique de valeur p, et a changé une valeur dans le tableau pour définir l'AUCroc nul à exactement 0,50. Ce que nous avons obtenu est une valeur de p empirique, mais nous l'avons abordée du point de vue de l'estimation de l'échantillon (de la même manière qu'un intervalle de confiance l'est du point de vue de l'estimation de l'échantillon). Pour le test de randomisation via le clic droit Simuler, nous prenons la perspective du nul, et nous avons permis à jmp de générer la distribution d'échantillonnage sous l'hypothèse nulle pour AUCroc, puis nous avons comparé notre estimation d'origine à celle-ci. Ni l'un ni l'autre n'est plus précis, mais ils finissent par vous donner des choses subtilement différentes et il est bon de comprendre les deux.
La plus grande différence, cependant, n'est pas la différence conceptuelle de perspective statistique que chaque approche prend, c'est la spécification de 0,50 comme valeur nulle dans notre variante bootstrap. Vous vous demandez peut-être si nous utilisions la table bootstrap et définissons la valeur de l'hypothèse nulle sur la valeur sous la valeur nulle obtenue à partir du test de randomisation (0,57079) ?
Eh bien, si vous croyez, comme moi, que le caractère aléatoire du hasard est une certitude, vous devriez vous attendre à ce que notre valeur p empirique générée à partir d'échantillons bootstrapés contre le même nul soit assez similaire au test de randomisation réel. Après tout, est-ce qu'ils n'estiment pas la même chose conceptuellement, juste à partir de perspectives différentes ?
Eh bien regardez ça, p = 0,0192. Foi dans le hasard confirmée.:)
J'espère que cela en aidera certains !
@julien