Comment faut-il déclarer de très petites valeurs ? (et pourquoi R met-il un minimum sur 2.22e-16?)

63

Pour certains tests R, il existe une limite inférieure sur les calculs de de . Je ne sais pas pourquoi c'est ce nombre, s'il y a une bonne raison à cela ou si c'est simplement arbitraire. Beaucoup d'autres logiciels de statistiques vont juste à , donc c'est un niveau de précision beaucoup plus élevé. Mais je n’ai pas vu trop d’articles rapportant ou .2.2210160.0001p<2.221016p=2.221016

Est-ce une pratique courante / meilleure de rapporter cette valeur calculée ou est-il plus typique de signaler autre chose (comme p < 0.000000000000001)?

Paul
la source
Si vous obtenez une valeur p si petite et souhaitez calculer la valeur p réelle, vous pouvez utiliser cette fonction dans excel = TDIST (t, df, 2) Ajoutez les valeurs de vos 't' et df et vous obtiendrez la valeur réelle. p-value ta
7
@Tahzeeb Y at-il une raison pour laquelle Excel renvoie une estimation plus précise que R ..? Autant que je sache, c'est beaucoup moins précis.
Tim
...But I haven't seen too many papers reporting p<2.22⋅10−16....Voir certains articles sur GWAS . Plusieurs articles présentent des résultats pour des valeurs de pence par centaines, par exemple: Région KLK du cancer de la prostate, p = 9x10 ^ -186.
Zx8754
1
Voir aussi la réponse de whuber ici: stats.stackexchange.com/questions/11812 .
Amibe dit de réintégrer Monica

Réponses:

87

Il y a une bonne raison pour cela.

La valeur peut être trouvée via noquote(unlist(format(.Machine)))

           double.eps        double.neg.eps           double.xmin 
         2.220446e-16          1.110223e-16         2.225074e-308 
          double.xmax           double.base         double.digits 
        1.797693e+308                     2                    53 
      double.rounding          double.guard     double.ulp.digits 
                    5                     0                   -52 
double.neg.ulp.digits       double.exponent        double.min.exp 
                  -53                    11                 -1022 
       double.max.exp           integer.max           sizeof.long 
                 1024            2147483647                     4 
      sizeof.longlong     sizeof.longdouble        sizeof.pointer 
                    8                    12                     4 

Si vous regardez l'aide, ( ?".Machine"):

double.eps  

the smallest positive floating-point number x such that 1 + x != 1. It equals 
double.base ^ ulp.digits if either double.base is 2 or double.rounding is 0; 
otherwise, it is (double.base ^ double.ulp.digits) / 2. Normally 2.220446e-16.

Il s'agit essentiellement d'une valeur en dessous de laquelle vous pouvez être certain que la valeur n'aura pas de sens numérique, en ce sens qu'une valeur plus petite ne sera probablement pas un calcul précis de la valeur que nous tentions de calculer. (Après avoir étudié un peu d'analyse numérique, en fonction des calculs effectués par la procédure spécifique, il y a de fortes chances que l'absence de signification numérique vienne bien au-delà de cela.)

Mais la signification statistique aura été perdue bien plus tôt. Notez que les valeurs p dépendent d’hypothèses. Plus vous avancez dans l’extrême extrême, plus la valeur p réelle (plutôt que la valeur nominale calculée) sera affectée par les hypothèses erronées, même dans certains cas 'ai seulement un peu tort. Etant donné que les hypothèses ne seront tout simplement pas toutes exactement satisfaites, les valeurs p moyennes peuvent être raisonnablement précises (en termes de précision relative, peut-être seulement par une fraction modeste), mais des valeurs p extrêmement petites peuvent être exclues par de nombreux ordres de ordre de grandeur.

C’est-à-dire que la pratique habituelle (quelque chose comme le "<0.0001" que vous dites est courant dans les paquets, ou la règle APA que Jaap mentionne dans sa réponse) n’est probablement pas si éloignée de la pratique sensée, mais du point approximatif où perdre du sens au-delà de dire « c'est très très petit » variera bien sûr beaucoup en fonction des circonstances.

C’est une des raisons pour lesquelles je ne peux pas suggérer de règle générale - il ne peut y avoir une règle unique qui convient même à distance à tout le monde dans toutes les circonstances - changez légèrement les circonstances et la large ligne grise qui marque le changement de plutôt significatif à relativement le sens va changer, parfois par un long chemin.

Si vous deviez spécifier suffisamment d'informations sur les circonstances exactes (par exemple, c'est une régression, avec cette non-linéarité, cette variation dans cette variable indépendante, ce type et ce degré de dépendance dans le terme d'erreur, ce type et ce montant d'hétéroscédasticité, cette forme de distribution d’erreurs), je pouvais simuler de «vraies» valeurs p pour que vous puissiez les comparer avec les valeurs p nominales, afin que vous puissiez voir quand elles étaient trop différentes pour que la valeur nominale ait un sens.

Mais cela nous amène à la deuxième raison pour laquelle, même si vous aviez spécifié suffisamment d'informations pour simuler les vraies valeurs p, je ne pouvais toujours pas déclarer de manière responsable une limite, même dans ces circonstances.

Ce que vous rapportez dépend des préférences des personnes - des votres et de votre public. Imaginez que vous m'en ayez suffisamment parlé des circonstances pour que je décide de tracer la ligne à un nominal de .10 - 6p106

On pourrait penser que tout va bien - sauf votre propre fonction de préférence (ce qui vous convient si vous examiniez la différence entre les valeurs p nominales données par les packages de statistiques et celles résultant de la simulation lorsque vous supposez un ensemble particulier). d’échecs des hypothèses) pourrait le mettre à et les éditeurs du journal que vous voulez soumettre pourraient mettre leur règle générale à couper à , alors que le prochain journal pourrait le dire à et le suivant peut ne pas avoir de règle générale et l'éditeur spécifique que vous avez obtenu peut accepter des valeurs encore plus basses que celles que j'ai données ... mais l'un des arbitres peut alors avoir une coupure spécifique! 10 - 4 10 - 3105104103

En l'absence de connaissance de leurs fonctions et règles de préférence et en l'absence de vos propres services publics, comment puis-je suggérer de manière responsable un choix général d'actions à prendre?

Je peux au moins vous dire le genre de choses que je fais (et je ne suggère pas que ce soit un bon choix pour vous):

Il y a peu de circonstances (en dehors de la simulation de valeurs p) dans lesquelles je gagnerais moins de (je peux mentionner ou non la valeur rapportée par le package, mais je ne ferais rien du tout. si ce n’est pas très petit, j’insiste généralement sur le sens du nombre exact). Parfois, je prends une valeur quelque part dans la gamme de à et dis que p était beaucoup moins que cela. À l’occasion, je fais effectivement comme suggéré ci-dessus - effectuez des simulations pour voir à quel point la p-value est sensible à diverses violations des hypothèses, en particulier s’il ya un type de violation qui m’inquiète. 10 - 5 10 - 4106105104

C'est certainement utile pour informer un choix - mais je suis aussi susceptible de discuter des résultats de la simulation que de les utiliser pour choisir une valeur limite, donnant ainsi à d'autres une chance de choisir la leur.

Une solution de rechange à la simulation consiste à examiner certaines procédures plus robustes * face aux diverses défaillances potentielles d'hypothèses et à voir quelle différence cela pourrait faire avec la valeur p. Leurs valeurs p ne seront pas non plus particulièrement significatives, mais elles donnent au moins une idée de l’impact que cela pourrait avoir. Si certains sont très différent de celui nominal, il donne aussi plus d'une idée qui les violations des hypothèses pour étudier l'impact de. Même si vous ne signalez aucune de ces alternatives, cela donne une meilleure idée de la signification de votre petite valeur p.

* Notez qu'ici nous n'avons pas vraiment besoin de procédures robustes pour les violations flagrantes de certaines hypothèses. ceux qui sont moins affectés par des écarts relativement légers de l’hypothèse pertinente devraient convenir à cet exercice.

Je dirai que lorsque vous effectuez de telles simulations, même avec des violations mineures, dans certains cas, il peut être surprenant de constater à quel point même les valeurs p les plus petites peuvent être fausses. Cela a fait plus pour changer la façon dont j'interprète personnellement une p-valeur que pour changer les seuils spécifiques que je pourrais utiliser.

Lorsque je soumets les résultats d'un test d'hypothèse à un journal, j'essaie de savoir s'ils ont une règle. S'ils ne le font pas, j'ai tendance à me faire plaisir, puis à attendre que les arbitres se plaignent.

Glen_b
la source
11
J'aime particulièrement le commentaire sur la signification statistique qui a été perdu beaucoup plus tôt.
usεr11852 dit Rétablir Monic
Très bonne réponse! J'apprécie tous les détails à ce sujet, cela explique pourquoi R donne ce nombre. Mais cela ne répond pas vraiment à la question de savoir quoi signaler.
Paul
1
J'ai plutôt eu le sentiment d'avoir abordé la question, en ce sens que j'avais expliqué pourquoi il n'était pas responsable de faire une suggestion spécifique. Notez que je discute de la raison pour laquelle il est logique de signaler quelque chose comme "<0.0001", pratique courante dans certains packages. Il y a plusieurs raisons pour lesquelles je ne suggère pas de chiffre spécifique - le premier que j'ai donné. Je vais développer sur cette raison et la seconde dans une édition.
Glen_b
Paul, j'ai ajouté une discussion plus substantielle.
Glen_b
2
Oui, vous devez faire quelque chose. le point de mon commentaire plus détaillé était de faire comprendre que je ne peux pas vous dire ce que vous devriez choisir de faire, je peux seulement discuter des questions qui entrent dans votre choix. J'espère l'avoir fait, mais je suis heureux d'essayer de clarifier davantage les problèmes si je le peux.
Glen_b
27

La pratique courante dépend de votre domaine de recherche. Le manuel de l'American Psychological Association (APA), qui est l'un des styles de citation les plus utilisés, indique (p. 139, 6e édition):

N'utilisez aucune valeur inférieure à p <0.001

Jaap
la source
8
Bien que c’est ce que je cite aussi habituellement (+1), je ne suis pas sûr qu’il soit nécessaire ou non de réviser cette recommandation d’une décimale, étant donné la récente recommandation de Valen Johnson dans PNAS : "Faites de 0,005 le niveau de signification par défaut [ ...]. Associez des résultats de test hautement significatifs à des valeurs de p inférieures à 0,001. "
Henrik
3
Bonne réponse. Il n'y a pas de guides de style et pas de normes réelles dans mes domaines, du moins pas pour les valeurs p. Je fais du travail interdisciplinaire mais je suppose que l'informatique et HCI seraient le terrain pour cela. Je pense que le style de l'APA serait le lieu où les auteurs se tourneraient, puisque les méthodes sont généralement empruntées au psych cognitif ou à d'autres domaines que l'APA couvrirait.
Paul
10
La physique des particules utilise une règle (vous l'avez peut-être vue dans les actualités avec la confirmation du boson de Higgs), qui dépasse de beaucoup cette limite (elle est même inférieure à ). Les normes diffèrent selon les régions! 5σp<106
Glen_b
1
@Glen_b: C'est un bon point à propos de en physique des particules, mais je suppose que ce que vous avez écrit dans votre réponse sur la sensibilité aux hypothèses, etc. explique (ou est au moins une partie de la raison) pourquoi ils signalent des sigmas (c'est-à-dire essentiellement statistiques) au lieu de valeurs. Une fois que la valeur est inférieure à ou quelque chose de ce type (mon conseil habituel est de signaler autant de zéros que l’on est à l’aise d’imprimer sans passer à la notation exponentielle), il est probablement plus utile de regarder la valeur que la valeur . z p p 0,0001 z p5σzpp0.0001zp
amibe dit de réintégrer Monica
@ amoeba Ouais, je pense que tu as raison.
Glen_b
14

Ces valeurs p extrêmes se produisent plus souvent dans les champs contenant de très grandes quantités de données, telles que la génomique et la surveillance des processus. Dans ces cas, il est parfois signalé sous la forme -log 10 (valeur p). Voir, par exemple, cette figure tirée de Nature , où les valeurs p descendent à 1e-26.

-log 10 (valeur-p) est appelé "LogWorth" par les statisticiens avec lesquels je travaille chez JMP.

xan
la source
22
C’est vrai et il convient de le souligner, mais il convient également de noter que dans ce cas, la valeur ne devrait être considérée que comme un indice de la puissance du signal - de si petites valeurs (parfois même si elles sont corrigées de manière multiple). comparaisons) sont si infimes que la probabilité que la NSA intervienne et altère vos données (et vous lave ensuite le cerveau pour que vous ne puissiez pas vous en souvenir) est de loin supérieure à la valeur nominale . p pppp
Ben Bolker
8
@BenBolker En effet, bien que moins probable que "la NSA ait altéré vos données", même des événements tels que "Un rayon cosmique renversant plusieurs bits importants dans vos données" sont beaucoup plus probables que ces probabilités.
Glen_b
6
Dans un article de 2015 sur les neurosciences publié dans Nature, les auteurs signalent lorsqu’ils présentent des coefficients de corrélation ( et ). M'a fait sourire et rappelez-vous vos commentaires ici, @Ben et Glen_b. p 0,9 n ~ 500p<10100ρ0.9n500
amibe dit de réintégrer Monica
8
Voici une nouvelle découverte dans ma quête de la valeur p minimale rapportée dans la littérature: un autre article de 2015 sur les neurosciences publié dans Nature (appartenant à un groupe qui vient de recevoir le prix Nobel 2014, soit dit en passant) rapporte . Sensationnel. (Le papier est encore génial.) Cc to @Glen_b. p=2.2×10226
Amibe dit Réintégrer Monica
9
@amoeba Over, dans la section commentaire du Slate Star Codex, Daniel Wells note que science.sciencemag.org/content/363/6425/eaau1043 rapporte une valeur p de 3,6e-2382 ("pas une faute de frappe, deux mille ", dit Daniel ), qui bat le tien de loin!
Mark Amery
-3

dans R, "<2e-16" ne signifie pas littéralement <2e-16, mais signifie plutôt que la valeur est si petite que R ne peut ni l’enregistrer ni l’afficher.

Dans le test de régression, p est souvent aussi petit que 4.940656e-324, quand il émet "<2e-16", le nombre est même inférieur à 4.940656e-324.

utilisateur3590816
la source
Quel nombre est " même inférieur à 4.940656e-324 "?
Sven Hohenstein
8
Votre déclaration " dans R", <<2e-16 "ne signifie pas littéralement <2e-16 " est incorrecte. Lorsque R s'affiche <2e-16, la valeur est inférieure à 2e-16, littéralement.
Sven Hohenstein
Vous avez mal compris ce que j'ai dit. Lorsque R dit "<2e-16", la valeur p est inférieure à 2e-16, mais cela ne signifie pas que la valeur p inférieure à 2e-16 sera affichée sous la forme "<2e-16". Comme je l'ai montré, R n'a pas de problème à afficher dans lm résumé une valeur p d'un nombre compris entre [4.940656e-324, 2e-16], alors que la limite gauche est 2 ^ -1074. Donc, je suppose que, seulement lorsque la valeur p est inférieure à 2 ^ -1074, R dira alors que la valeur p est inférieure à une petite valeur delta. Il se trouve que R affiche cette valeur delta sous la forme 2e-16. Donc, je suppose que "<2e-16" signifie en réalité "<2 ^ -1074" dans les valeurs de p
user3590816
6
Cependant, votre hypothèse est incorrecte: c'est ce que @Sven essaie de vous dire. Voir l'aide pour format.pvalou simplement l'essayer, comme dans format.pval(1e-16).
whuber