Calcolo del valore p da una distribuzione arbitraria


14

Spero che questa non sia una domanda sciocca. Diciamo che ho una distribuzione arbitraria continua. Ho anche una statistica e mi piacerebbe usare questa distribuzione arbitraria per ottenere un valore p per questa statistica.

Mi rendo conto che in R è facile farlo purché la tua distribuzione si adatti a una di quelle integrate, come se fosse normale. Ma c'è un modo semplice per farlo con una data distribuzione, senza fare quel tipo di ipotesi?

Risposte:


12

Se si dispone di una funzione di distribuzione cumulativa , il calcolo del valore per una determinata statistica è semplicemente . Questo è semplice in R. Se invece hai la funzione di densità di probabilità , allora . Puoi trovare questo integrale analiticamente o numericamente. In R questo sarà simile al seguente:FpT1F(T)F(x)=xp(t)dt

dF <- function(x)dnorm(x)
pF <- function(q)integrate(dF,-Inf,q)$value 

> pF(1)
[1] 0.8413448
> pnorm(1)
[1] 0.8413447

Puoi sintonizzarti integrateper una migliore precisione. Questo, naturalmente, potrebbe non riuscire per casi specifici, quando l'integrale non si comporta bene, ma dovrebbe funzionare per la maggior parte delle funzioni di densità.

Ovviamente puoi passare parametri in pF, se hai diversi valori di parametro da provare e non vuoi ridefinire dFogni volta.

dF <- function(x,mean=0,sd=1)dnorm(x,mean=mean,sd=sd)
pF <- function(q,mean=0,sd=1)integrate(dF,-Inf,q,mean=mean,sd=sd)$value 

> pF(1,1,1)
[1] 0.5
> pnorm(1,1,1)
[1] 0.5

Ovviamente puoi anche usare i metodi Monte-Carlo come dettagliato da @suncoolsu, questo sarebbe solo un altro metodo numerico per l'integrazione.


Penso che il tuo metodo sia molto più semplice di quello che ho suggerito, soprattutto se non ci sono restrizioni sulla funzione che stai integrando. Non sono a conoscenza della tecnologia numerica. in R.
suncoolsu,

Sì, penso che questo sia più in linea con le mie capacità attuali. Grazie!
Alan H.

In realtà, non sono sicuro di seguire abbastanza come funzionano queste funzioni. Gli esempi danno risultati per una distribuzione normale, ma dove collego la mia funzione di densità di probabilità?
Alan H.

(Ho fatto dei test e i miei dati non sembrano essere lontanamente normali.)
Alan H.

@Alan H., collega la tua funzione di densità a dF. Cioè dFdovrebbe restituire il valore della funzione di densità in un dato argomento.
mpiktas,

9

Sì, è possibile utilizzare qualsiasi distribuzione arbitraria per ottenere un valore p per qualsiasi statistica . Teoricamente e praticamente puoi calcolare il valore p (unilaterale) con questa formula.

pvalue=P[T>Tobserved|H0holds]

Dove è la statistica test di interesse e T o b s e r v e d è il valore calcolato per i dati osservati.TTobserved

Se conosci la distribuzione teorica di sotto H 0 , fantastico! Altrimenti, è possibile utilizzare la simulazione MCMC per generare dalla distribuzione nulla di T e calcolare l'integrale Monte Carlo per ottenere il valore p . Le tecniche di integrazione numerica funzioneranno anche nel caso in cui non si desideri utilizzare (potrebbe essere) metodi Monte Carlo più semplici (specialmente in R; in Mathematica l'integrazione potrebbe essere più semplice, ma non ho esperienza nell'usarlo)TH0T

L'unico presupposto che stai facendo qui è: conosci la distribuzione nulla di T (che potrebbe non essere nei formati generatori di numeri casuali standard R). Questo è tutto - fintanto che conosci la distribuzione nulla, il valore p può essere calcolato.


1
Devo osservare: questo è uno dei motivi per cui i valori di p sono così popolari e facili da capire. (IMHO)
suncoolsu

Ok, questo ha senso. Ho quello che credo sia una buona stima della distribuzione nulla. Qualche suggerimento su come implementarlo in R? Grazie!
Alan H.

1
@Alan - Sai come generare valori casuali dalla tua distribuzione nulla? Se sì, supponiamo che - T = c (T1, ..., TN) siano disegni dalla distribuzione nulla - p-value = sum (T> T_obs) / N. Se non sai come generare, potrebbe essere necessario utilizzare Metropolis Sampling o Gibbs Sampling per ottenere T1 ... TN, ma è molto fattibile.
suncoolsu,
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.