Calcul du centile de la distribution normale

9

Voir cette page Wikipedia:

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

Pour obtenir l'intervalle Agresti-Coull, il faut calculer un centile de la distribution normale, appelé . Comment calculer le centile? Existe-t-il une fonction prête à l'emploi qui le fait dans Wolfram Mathematica et / ou Python / NumPy / SciPy?z

Ram Rachum
la source
1
L'expression intégrale dans le "cdf normal que j'ai obtenu exactement de Wiki" est malheureusement décalée d'un facteur . Il n'y a pas de formule exacte connue pour le cdf normal ou son inverse en utilisant un nombre fini de termes impliquant des fonctions standard ( etc.) mais le cdf normal et son inverse ont été beaucoup étudiés et approximatifs les formules des deux sont programmées dans de nombreuses calculatrices, tableurs, sans parler des progiciels statistiques. Je ne connais pas R mais je serais étonné s'il n'avait pas déjà ce que vous cherchez. exp,log,sincos1/πexp,Journal,péchécos
Dilip Sarwate
@DilipSarwate, c'est réparé! Je fais cela en utilisant la transformation inverse, également "pas autorisé" à utiliser trop de construit. C'est pour le plaisir d'apprendre, je suppose.
user1061210
1
@Dilip: Non seulement il n'y a pas de formule exacte connue, mieux encore, il est connu qu'aucune telle formule ne peut exister!
cardinal le
1
La méthode Box-Muller génère des échantillons à partir d'une distribution conjointe de variables aléatoires normales normales indépendantes. Les histogrammes des valeurs générées ressembleront donc aux distributions normales standard. Mais la méthode de Box-Muller n'est pas une méthode pour calculer les valeurs de sauf accessoirement comme dans "J'ai généré échantillons normalisés standard dont a une valeur ou moins, et donc , et .10 4 8401 1 Φ ( 1 ) 0,8401 Φ - 1 ( 0,8401 ) 1Φ(X)dix484011Φ(1)0,8401Φ-1(0,8401)1
Dilip Sarwate
1
Je viens de choisir comme exemple des types de chiffres auxquels vous pourriez vous attendre. et donc si vous générez échantillons d'une distribution normale standard, vous devriez vous attendre à ce que près de des échantillons aient la valeur . Vous implémentez correctement la méthode Box-Muller, mais vous ne comprenez pas les résultats que vous obtenez et ne les Φ ( 1 ) = 0,8413 10 4 8413 10000 18401Φ(1)=0,8413dix48413100001
reliez

Réponses:

3

Pour Mathematica, $VersionNumber > 5 vous pouvez utiliser

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

pour le q-ème centile.

Sinon, vous devez d'abord charger le package Statistics approprié.

JM n'est pas un statisticien
la source
(J'ai la version 7.) Je n'ai aucun problème à charger le package Statistics. Mais comment s'appelle la fonction? Parce que j'ai l'impression que cette Quantileligne fera le calcul manuellement au lieu d'utiliser une formule.
Ram Rachum
Évaluer avec des paramètres symboliques (ne valeurs Imposs assigner mu, sigmaet q); vous devriez obtenir une expression impliquant la fonction d'erreur inverse.
JM n'est pas statisticien
16

La page de John Cook, Distributions in Scipy , est une bonne référence pour ce type de choses:

In [15]: import scipy.stats

In [16]: scipy.stats.norm.ppf(0.975)
Out[16]: 1.959963984540054
ars
la source
4

Eh bien, vous n'avez pas posé de questions sur R, mais dans R, vous le faites en utilisant? Qnorm

(C'est en fait le quantile, pas le centile, du moins je crois)

> qnorm(.5)
[1] 0
> qnorm(.95)
[1] 1.644854
Tal Galili
la source
1
Quantile vs. percentile (c'est simplement une question de terminologie), j.mp/dsYz9z .
chl
1
Pendant que nous y sommes, dans R, des CI ajustés Wald (par exemple Agresti-Coull) sont disponibles dans le PropCIspackage. La méthode de Wilson est celle par défaut Hmisc::binconf(comme suggéré par Agresti et Coull).
chl
3

En Python, vous pouvez utiliser le module stats du paquet scipy (recherchez cdf(), comme dans l' exemple suivant ).

(Il semble que le paquet transcendantal comprenne également les distributions cumulatives habituelles).

chl
la source
0

Vous pouvez utiliser la fonction erf inverse , qui est disponible dans MatLab et Mathematica, par exemple.

Pour le CDF normal, à partir de

y=Φ(x)=12[1+erf(x2)]

On a

x=2 erf1(2y1)

Pour le CDF log-normal, à partir de

y=FX(X;μ,σ)=12erfc(-JournalX-μσ2)

On a

-Journal(X)=μ+σ2 erfc-1(2y)
Jean-Victor Côté
la source
2
n'est-ce pas plus un commentaire qu'une réponse?
Macro
Mon idée était que si vous avez des inverses pour les fonctions erf et erfc, le problème est résolu. MatLab, par exemple, possède de telles fonctions préprogrammées.
Jean-Victor Côté
@ Jean-VictorCôté Veuillez développer vos idées dans votre réponse. Sinon, cela ressemble simplement à un commentaire comme suggéré ci-dessus.
chl
Journal(X)X