Calcolo del percentile della distribuzione normale


9

Vedi questa pagina di Wikipedia:

http://en.wikipedia.org/wiki/Binomial_proportion_confidence_interval#Agresti-Coull_Interval

Per ottenere l'intervallo Agresti-Coull, è necessario calcolare un percentile della distribuzione normale, chiamato . Come posso calcolare il percentile? Esiste una funzione già pronta che lo fa in Wolfram Mathematica e / o Python / NumPy / SciPy?z


1
L'espressione integrale nel "normale cdf che ho ottenuto esattamente da Wiki" è sfortunatamente sfuggita di un fattore . Non esiste una formula esatta nota per il normale cdf o il suo inverso usando un numero finito di termini che coinvolgono funzioni standard ( ecc.) Ma sia il normale cdf che il suo inverso sono stati studiati molto e approssimativamente le formule per entrambi sono programmate in molti calcolatori, fogli di calcolo, per non parlare dei pacchetti statistici. Non ho familiarità con R, ma sarei stupito se non avesse già quello che stai cercando incorporato. exp,log,sincos1/πexp,log,peccatocos
Dilip Sarwate,

@DilipSarwate, è stato risolto! Lo sto facendo usando la trasformazione inversa, anch'essa "non consentita" per usare troppo incorporato. Suppongo che sia per il gusto di imparare.
user1061210

1
@Dilip: non solo non esiste una formula esatta conosciuta, meglio ancora, è noto che non esiste una formula del genere!
cardinale il

1
Il metodo Box-Muller genera campioni da una distribuzione congiunta di variabili casuali normali standard indipendenti. Quindi gli istogrammi dei valori generati assomigliano alle distribuzioni normali standard. Ma il metodo Box-Muller non è un metodo per calcolare i valori di tranne per inciso come in "Ho generato campioni normali standard di cui ha valore o inferiore, e quindi , e .10 4 8401 1 Φ ( 1 ) 0,8401 Φ - 1 ( 0,8401 ) 1Φ(X)10484011Φ(1)0,8401Φ-1(0,8401)1
Dilip Sarwate

1
Ho appena scelto come esempio dei tipi di numeri che potresti aspettarti. e quindi se si genera campioni di una distribuzione normale standard, si dovrebbe aspettare vicino ai dei campioni per avere valore . Stai implementando correttamente il metodo Box-Muller, ma non stai capendo i risultati che stai ottenendo e non li stai collegando al cdf ecc.Φ ( 1 ) = 0.8413 10 4 8413 10000 18401Φ(1)=0,8413...1048413100001
Dilip Sarwate,

Risposte:


3

Per Mathematica $VersionNumber > 5 puoi usare

Quantile[NormalDistribution[μ, σ], 100 q]

per l' qundicesimo percentile.

Altrimenti, devi prima caricare il pacchetto statistico appropriato.


(Ho la versione 7.) Non ho problemi a caricare il pacchetto Statistics. Ma come si chiama la funzione lì dentro? Perché ho l'impressione che questa Quantileriga eseguirà il calcolo manualmente anziché utilizzare una formula.
Ram Rachum,

Valutare con parametri simbolici (cioè fanno valori non assegnare a mu, sigmae q); dovresti ottenere un'espressione che coinvolge la funzione di errore inverso.
JM non è uno statistico il

16

La pagina di John Cook, Distribuzioni in Scipy , è un buon riferimento per questo tipo di cose:

In [15]: import scipy.stats

In [16]: scipy.stats.norm.ppf(0.975)
Out[16]: 1.959963984540054

4

Bene, non hai chiesto di R, ma in R lo fai usando? Qnorm

(In realtà è il quantile, non il percentile, o almeno così credo)

> qnorm(.5)
[1] 0
> qnorm(.95)
[1] 1.644854

1
Quantile vs. percentile (è solo una questione di terminologia), j.mp/dsYz9z .
chl

1
Mentre ci siamo, in CI regolati da Wald (ad es. Agresti-Coull) sono disponibili nel PropCIspacchetto. Il metodo di Wilson è l'impostazione predefinita in Hmisc::binconf(come suggerito da Agresti e Coull).
chl

3

In Python, puoi usare il modulo stats dal pacchetto scipy (cerca cdf(), come nel seguente esempio ).

(Sembra che il pacchetto trascendentale includa anche le consuete distribuzioni cumulative).


0

Ad esempio, è possibile utilizzare la funzione ERF inversa , disponibile in MatLab e Mathematica.

Per il normale CDF, a partire da

y=Φ(X)=12[1+erf(X2)]

Noi abbiamo

X=2 erf-1(2y-1)

Per il CDF normale al registro, a partire da

y=FX(X;μ,σ)=12ERFC(-logX-μσ2)

Noi abbiamo

-log(X)=μ+σ2 ERFC-1(2y)

2
non è più un commento che una risposta?
Macro,

La mia idea era che se si hanno inversioni per le funzioni erf ed erfc, il problema è risolto. MatLab, ad esempio, ha funzioni preprogrammate.
Jean-Victor Côté,

@ Jean-VictorCôté Per favore, sviluppa le tue idee nella tua risposta. Altrimenti, sembra semplicemente un commento come suggerito sopra.
chl

log(X)X
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.