Cálculo do percentil da distribuição normal

9

Veja esta página da Wikipedia:

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

Para obter o intervalo Agresti-Coull, é necessário calcular um percentil da distribuição normal, chamado . Como calculo o percentil? Existe uma função pronta que faça isso no Wolfram Mathematica e / ou Python / NumPy / SciPy?z

Ram Rachum
fonte
11
Infelizmente, a expressão integral no "cdf normal que obtive exatamente do Wiki" é desatada por um fator de . Não existe uma fórmula exata conhecida para o cdf normal ou seu inverso usando um número finito de termos envolvendo funções padrão ( etc), mas o cdf normal e seu inverso foram estudados muito e aproximados as fórmulas para ambos são programadas em muitas calculadoras, planilhas, para não mencionar pacotes estatísticos. Não estou familiarizado com o R, mas ficaria surpreso se ele ainda não tivesse o que você está procurando. exp,log,sencos1/πexp,log,sinporque
precisa
@DilipSarwate, está consertado! Eu estou fazendo isso usando a transformação inversa, também "não é permitido" usar muito o que está embutido. É por uma questão de aprendizado, suponho.
user1061210
11
@ Dilip: Não só não existe uma fórmula exata conhecida, melhor ainda, é sabido que essa fórmula não pode existir!
cardeal
11
O método Box-Muller gera amostras de uma distribuição conjunta de variáveis ​​aleatórias normais padrão independentes. Portanto, os histogramas dos valores gerados se parecerão com as distribuições normais padrão. Mas o método Box-Muller não é um método para calcular valores de exceto por acaso, como em "Eu gerei amostras normais padrão, das quais tem valor ou menos e, portanto, , e .10 4 8401 1 Φ ( 1 ) 0,8401 Φ - 1 ( 0,8401 ) 1Φ(x)10484011 1Φ(1 1)0.8401Φ-1 1(0.8401)1 1
Dilip Sarwate
11
Acabei de escolher como um exemplo dos tipos de números que você pode esperar. e, portanto, se você gerar amostras de uma distribuição normal padrão, deverá esperar que cerca de das amostras tenham o valor . Você está implementando o método Box-Muller corretamente, mas não está entendendo os resultados que está obtendo e não os relacionando com o cdf etc.Φ ( 1 ) = 0,8413 10 4 8413 10000 18401Φ(1 1)=0,84131048413100001 1
Dilip Sarwate

Respostas:

3

Para o Mathematica, $VersionNumber > 5 você pode usar

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

para o q-thil percentil.

Caso contrário, você precisará carregar o pacote de estatísticas apropriado primeiro.

JM não é estatístico
fonte
(Eu tenho a versão 7.) Não tenho problemas ao carregar o pacote de estatísticas. Mas qual é a função lá chamada? Porque tenho a impressão de que essa Quantilelinha fará o cálculo manualmente, em vez de usar uma fórmula.
Ram Rachum
Avaliá-lo com parâmetros simbólicos (ou seja, fazer valores não atribuir a mu, sigmae q); você deve obter uma expressão envolvendo a função de erro inverso.
JM não é estatístico
16

A página de John Cook, Distributions in Scipy , é uma boa referência para esse tipo de coisa:

In [15]: import scipy.stats

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

Bem, você não perguntou sobre R, mas em R você faz isso usando? Qnorm

(Na verdade, é o quantil, não o percentil, pelo que acredito)

> qnorm(.5)
[1] 0
> qnorm(.95)
[1] 1.644854
Tal Galili
fonte
11
Quantil vs. percentil (é apenas uma questão de terminologia), j.mp/dsYz9z .
quer
11
Enquanto estamos dentro, os ICs ajustados por R Wald (por exemplo, Agresti-Coull) estão disponíveis no PropCIspacote. O método de Wilson é o padrão em Hmisc::binconf(como sugerido por Agresti e Coull).
9103 chl
2

No Python, você pode usar o módulo de estatísticas do pacote scipy (procure cdf(), como no exemplo a seguir ).

(Parece que o pacote transcendental também inclui distribuições cumulativas usuais).

chl
fonte
0

Você pode usar a função erf inversa , disponível no MatLab e no Mathematica, por exemplo.

Para o CDF normal, a partir de

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

Nós temos

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

Para o CDF log-normal, começando em

y=Fx(x;μ,σ)=1 12erfc(-registrox-μσ2)

Nós temos

-registro(x)=μ+σ2 erfc-1 1(2y)
Jean-Victor Côté
fonte
2
isso não é mais um comentário do que uma resposta?
Macro
Minha idéia era que, se você tem inversões para as funções erf e erfc, o problema está resolvido. O MatLab, por exemplo, possui essas funções pré-programadas.
Jean-Victor Côté
@ Jean-VictorCôté Por favor, desenvolva suas idéias em sua resposta. Caso contrário, parece apenas um comentário, conforme sugerido acima.
chl
registro(x)x