Come devono essere riportati i piccoli valori ? (e perché R pone un minimo su 2.22e-16?)


63

Per alcuni test R, esiste un limite inferiore per i calcoli del di . Non sono sicuro del perché sia ​​questo numero, se c'è una buona ragione o se è arbitrario. Molti altri pacchetti di statistiche vanno solo a , quindi questo è un livello di precisione molto più alto. Ma non ho visto troppi documenti che riportano p <2.22 \ cdot 10 ^ {- 16} o p = 2.22 \ cdot 10 ^ {- 16} .2.2210160.0001p<2.221016p=2.221016

È una pratica comune / migliore segnalare questo valore calcolato o è più tipico segnalare qualcos'altro (come p < 0.000000000000001)?


Se ottieni un valore p così piccolo e vuoi calcolare il valore p reale, puoi usare questa funzione in excel = TDIST (t, df, 2) Aggiungi i valori di 't' e df e otterrai l'effettivo p-value ta

7
@Tahzeeb c'è qualche motivo per cui Excel restituirebbe una stima più precisa di R ..? Per quanto ne so, è molto meno preciso.
Tim

...But I haven't seen too many papers reporting p<2.22⋅10−16....Vedi alcuni articoli GWAS , ci sono molti articoli che mostrano i risultati per i valori in centinaia, ad esempio: Regione KLK del carcinoma della prostata, p = 9x10 ^ -186.
zx8754,

Risposte:


87

C'è una buona ragione per questo.

Il valore può essere trovato tramite 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 

Se guardi l'aiuto, ( ?".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.

È essenzialmente un valore al di sotto del quale puoi essere abbastanza sicuro che il valore sarà piuttosto numericamente insignificante - in quanto qualsiasi valore più piccolo non è probabile che sia un calcolo accurato del valore che stavamo tentando di calcolare. (Avendo studiato una piccola analisi numerica, a seconda di quali calcoli sono stati eseguiti con la procedura specifica, c'è una buona probabilità che la mancanza di significato numerico si presenti in modo equo al di sopra di questo.)

Ma il significato statistico sarà andato perso molto prima. Si noti che i valori di p dipendono da ipotesi e più si spinge verso la coda estrema più pesantemente il valore di p reale (anziché il valore nominale che calcoliamo) sarà influenzato da ipotesi errate, in alcuni casi anche quando stai solo sbagliando un po '. Poiché le ipotesi semplicemente non saranno completamente soddisfatte, i valori di p medio possono essere ragionevolmente accurati (in termini di accuratezza relativa, forse solo di una frazione modesta), ma valori di p estremamente piccoli potrebbero essere fuori da molti ordini di grandezza.

Vale a dire che la pratica abituale (qualcosa come "<0,0001" che dici è comune nei pacchetti, o la regola APA che Jaap menziona nella sua risposta) probabilmente non è così lontana dalla pratica sensibile, ma dal punto approssimativo in cui le cose perdere significato oltre a dire " è molto piccolo " ovviamente varierà molto a seconda delle circostanze.

Questo è uno dei motivi per cui non posso suggerire una regola generale - non può esserci una sola regola che sia anche lontanamente adatta a tutti in tutte le circostanze - cambia un po 'le circostanze e l'ampia linea grigia segna il cambiamento da un po' significativo a relativamente senza senso cambierà, a volte di molto.

Se dovessi specificare informazioni sufficienti sulle circostanze esatte (ad es. È una regressione, con così tanta non linearità, quella quantità di variazione in questa variabile indipendente, questo tipo e la quantità di dipendenza nel termine dell'errore, quel tipo e quantità di eteroschedasticità, questa forma di distribuzione degli errori), potrei simulare valori p 'veri' da confrontare con i valori p nominali, in modo da poter vedere quando erano troppo diversi perché il valore nominale potesse avere un significato.

Ma questo ci porta al secondo motivo per cui, anche se hai specificato abbastanza informazioni per simulare i veri valori p, non potrei ancora dichiarare responsabilmente un limite anche per quelle circostanze.

Ciò che riferisci dipende dalle preferenze delle persone, le tue e il tuo pubblico. Immagina di avermi detto abbastanza sulle circostanze per decidere che volevo tracciare la linea con una nominale di .10 - 6p106

Bene e bene, potremmo pensare - tranne la tua funzione di preferenza (ciò che ti sembra giusto, se dovessi guardare la differenza tra i valori p nominali dati dai pacchetti di statistiche e quelli risultanti dalla simulazione quando supponi un determinato set di fallimenti di ipotesi) potrebbe metterlo a e gli editori del diario a cui si desidera inviare potrebbero mettere la loro regola generale da tagliare a , mentre il diario successivo potrebbe metterlo a e il prossimo potrebbe non avere una regola generale e l'editor specifico che potresti ricevere potrebbe accettare valori ancora più bassi di quelli che ho dato ... ma uno degli arbitri potrebbe avere un taglio specifico! 10 - 4 10 - 3105104103

In assenza di conoscenza delle loro funzioni e regole di preferenza e dell'assenza di conoscenza delle proprie utilità, come posso suggerire responsabilmente una scelta generale di quali azioni intraprendere?

Posso almeno dirti il ​​genere di cose che faccio (e non suggerisco che questa sia una buona scelta per te):

Ci sono poche circostanze (al di fuori della simulazione di p-value) in cui farei molta meno di (potrei o meno menzionare il valore riportato dal pacchetto, ma non farei nulla di se non fosse molto piccolo, di solito sottolineerei il significato del numero esatto). A volte prendo un valore da qualche parte nella regione da a e dico che p era molto inferiore a quello. A volte faccio effettivamente quanto suggerito sopra: eseguo alcune simulazioni per vedere quanto sia sensibile il valore p nella coda alle varie violazioni delle ipotesi, in particolare se c'è un tipo specifico di violazione di cui sono preoccupato. 10 - 5 10 - 4106105104

È sicuramente utile per informare una scelta, ma ho la stessa probabilità di discutere i risultati della simulazione piuttosto che usarli per scegliere un valore di soglia, dando agli altri la possibilità di scegliere la propria.

Un'alternativa alla simulazione è quella di esaminare alcune procedure che sono più robuste * rispetto ai vari potenziali fallimenti del presupposto e vedere quanta differenza rispetto al valore p potrebbe fare. Anche i loro valori p non saranno particolarmente significativi, ma almeno danno un'idea di quanto impatto potrebbe esserci. Se alcuni sono molto diversi da quello nominale, dà anche più un'idea di quali violazioni delle ipotesi su cui indagare l'impatto. Anche se non riferisci nessuna di queste alternative, fornisce un quadro migliore di quanto sia significativo il tuo piccolo valore p.

* Nota che qui non abbiamo davvero bisogno di procedure che siano robuste per gravi violazioni di alcune ipotesi; quelli che sono meno colpiti da deviazioni relativamente lievi del presupposto rilevante dovrebbero andare bene per questo esercizio.

Dirò che quando / se vieni a fare tali simulazioni, anche con violazioni abbastanza lievi, in alcuni casi può essere sorprendente quanto possano essere sbagliati anche valori non troppo piccoli. Ciò ha fatto di più per cambiare il modo in cui interpreto personalmente un valore p più di quanto abbia spostato i tagli specifici che potrei usare.

Quando invio i risultati di un test di ipotesi reale a un giornale, provo a scoprire se hanno qualche regola. Se non lo fanno, tendo a farmi piacere, quindi aspetto che gli arbitri si lamentino.


11
Mi piace soprattutto che il commento sul significato statistico venga perso molto prima.
Usεr11852 dice Reinstate Monic il

Bella risposta! Apprezzo tutti i dettagli su questo, chiarisce perché R fornisce questo numero. Ma in realtà non risponde alla domanda su cosa segnalare.
paul

1
Mi sembrava piuttosto di aver affrontato il problema, nel senso che avevo spiegato perché non era responsabile dare un suggerimento specifico. Si noti che discuto sul perché abbia senso segnalare qualcosa come "<0.0001" che è pratica comune in alcuni pacchetti. Ci sono un paio di ragioni per cui non suggerisco un numero specifico, il primo dei quali ho dato. Espanderò su quel motivo e il secondo in una modifica.
Glen_b,

paolo, ho aggiunto qualche discussione più sostanziale.
Glen_b,

2
Sì, devi fare qualcosa; il punto del mio commento più ampio è stato quello di comunicare che non posso dirti cosa dovresti scegliere di fare, posso solo discutere delle questioni che ti vengono in mente. Spero di averlo fatto, ma sono felice di provare a chiarire ulteriormente eventuali problemi se posso.
Glen_b

27

Quale pratica comune potrebbe dipendere dal tuo campo di ricerca. Il manuale dell'American Psychological Association (APA), che è uno degli stili di citazione più utilizzati, afferma (p. 139, 6a edizione):

Non utilizzare alcun valore inferiore a p <0,001


8
Anche se questo è ciò che di solito cito anche (+1), non sono sicuro se sia necessario rivedere questa raccomandazione di un decimale, data la recente raccomandazione di Valen Johnson in PNAS : "Rendi 0,005 il livello predefinito di significatività [ ...]. Associa risultati di test altamente significativi a valori di P inferiori a 0,001 ".
Henrik,

3
Buona risposta. Non ci sono guide di stile e standard reali nei miei campi, almeno non per i valori di p. Faccio lavoro interdisciplinare ma immagino che l'informatica e l'HCI siano il campo per questo. Penso che lo stile APA sarebbe dove gli autori si rivolgerebbero, dal momento che i metodi sono generalmente presi in prestito da cognitive cognitive o altre aree che l'APA coprirebbe.
paul

10
La fisica delle particelle usa una regola (potresti averlo visto nelle notizie con la conferma del bosone di Higgs), che supera di molto questo limite (essendo più piccolo anche di ). Gli standard differiscono per area! 5σp<106
Glen_b,

1
@Glen_b: buon punto su nella fisica delle particelle, ma immagino che ciò che hai scritto nella tua risposta sulla sensibilità alle ipotesi ecc. Spieghi (o sia almeno una parte del motivo) perché riportano sigmi (cioè sostanzialmente -statistici) invece di -values. Una volta che il -value è inferiore a o qualcosa del genere (il mio solito consiglio è di riportare tutti gli zeri quanti ci si sente a proprio agio a stampare senza passare alla notazione esponenziale), è probabilmente più significativo guardare a -value che a -value. z p p 0,0001 z p5σzpp0.0001zp
ameba dice di reintegrare Monica il

@amoeba Sì, penso che tu abbia ragione.
Glen_b,

14

Tali valori p estremi si verificano più spesso in campi con grandi quantità di dati, come la genomica e il monitoraggio dei processi. In questi casi, viene talvolta segnalato come -log 10 (valore p). Vedi ad esempio questa figura della Natura , dove i valori di p scendono a 1e-26.

-log 10 (p-value) è chiamato "LogWorth" dagli statistici con cui lavoro in JMP.


22
Questo è vero, e vale la pena sottolineare, ma potrebbe anche valere la pena ricordare che in questo caso il valore dovrebbe essere veramente considerato solo come un indice di potenza del segnale - valori così piccoli (a volte anche se corretti per più confronti) sono così piccoli che la probabilità che l'NSA abbia violato e manomesso i tuoi dati (e poi ti abbia fatto il lavaggio del cervello in modo da non ricordare) è molto, molto, più alta del valore nominale . p pppp
Ben Bolker,

8
@BenBolker In effetti, sebbene meno probabile che "l'NSA abbia manomesso i tuoi dati", anche eventi come "Un raggio cosmico ha capovolto diversi bit importanti nei tuoi dati" sono molto, molto più probabili di quelle probabilità.
Glen_b,

6
In un documento di neuroscienze del 2015 pubblicato su Nature, gli autori riportano un paio di volte quando presentano coefficienti di correlazione ( e ). Mi ha fatto sorridere e ricordare i tuoi commenti qui, @Ben e Glen_b. ρ 0,9 n 500p<10100ρ0.9n500
ameba dice di reintegrare Monica il

8
Ecco una nuova scoperta nella mia ricerca del valore p minimo riportato in letteratura: un altro documento di neuroscienze del 2015 pubblicato su Nature (da un gruppo che ha appena ricevuto il premio Nobel 2014, tra l'altro) riporta . Wow. (Il documento in realtà è ancora eccezionale.) Cc a @Glen_b. p=2.2×10226
ameba dice Ripristina Monica il

9
@amoeba Nella sezione dei commenti sul Slate Star Codex, Daniel Wells osserva che science.sciencemag.org/content/363/6425/eaau1043 riporta un valore p di 3,6e-2382 ("non un errore di battitura, duemila ", afferma Daniel ), che batte il tuo di un bel margine!
Mark Amery,

-3

in R, "<2e-16" non significa letteralmente <2e-16, ma significa invece che il valore è così piccolo che R non può registrarlo o visualizzarlo.

Nel test di regressione, ottengo spesso p piccolo come 4.940656e-324, quando genera "<2e-16", questo numero è anche inferiore a 4.940656e-324


Quale numero è " anche inferiore a 4.940656e-324 "?
Sven Hohenstein,

8
La tua affermazione " in R," <2e-16 "non significa letteralmente <2e-16 " non è corretta. Quando viene visualizzato R <2e-16, il valore è più piccolo di 2e-16, letteralmente.
Sven Hohenstein,

Hai capito male quello che ho detto. Quando R ha detto "<2e-16", il valore p è inferiore a 2e-16, ma ciò non significa che un valore p inferiore a 2e-16 verrà visualizzato come "<2e-16". Come ho mostrato, R non ha alcun problema a visualizzare il valore p sommario di qualsiasi numero compreso tra [4.940656e-324, 2e-16], mentre il limite sinistro è 2 ^ -1074. Quindi presumo, solo quando il valore p è inferiore a 2 ^ -1074, R dirà quindi che il valore p è inferiore a un piccolo valore delta. Accade semplicemente che R visualizzi questo valore delta come 2e-16. Quindi la mia ipotesi è "<2e-16" in realtà significa "<2 ^ -1074" in valori p
user3590816

6
La tua ipotesi, tuttavia, non è corretta: questo è ciò che @Sven sta cercando di dirti. Consulta l'aiuto format.pvalo semplicemente provalo, come in format.pval(1e-16).
whuber
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.