정규 분포의 백분위 수 계산


9

이 위키 백과 페이지를 참조하십시오.

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

Agresti-Coull Interval을 얻으려면 라는 정규 분포의 백분위 수를 계산해야합니다 . 백분위 수는 어떻게 계산합니까? Wolfram Mathematica 및 / 또는 Python / NumPy / SciPy에서이를 수행하는 기성품 기능이 있습니까?z


1
"정확하게 위키에서 얻은 일반 cdf"의 정수 식은 불행히도 의 요소에 의해 벗어납니다 . 표준 함수 ( 등) 와 관련된 유한 한 수의 용어를 사용하여 정상적인 cdf 또는 그 역에 대한 정확한 공식은 없지만 정상적인 cdf와 그 역은 많이 연구되고 근사치입니다. 둘 다에 대한 공식은 통계 패키지는 말할 것도없고 많은 계산기, 스프레드 시트로 프로그래밍됩니다. 나는 R에 익숙하지 않지만 이미 찾고있는 것을 가지고 있지 않으면 놀랄 것입니다. 1/πexp,log,sincos
Dilip Sarwate

@ DilipSarwate, 고정되었습니다! 역변환을 사용하여이 작업을 수행하고 있으며 너무 많은 내장 기능을 "허용하지 않음"으로 설정했습니다.
user1061210

1
@Dilip : 알려진 정확한 공식은 없을뿐만 아니라 그러한 공식도 존재할 수없는 것으로 알려져 있습니다!
추기경

1
Box-Muller 방법 은 독립 표준 정규 확률 변수의 공동 분포에서 표본을 생성 합니다. 따라서 생성 된 값의 히스토그램은 표준 정규 분포와 유사합니다. 그러나 Box-Muller 방법은 " 값이 이하인 표준 표준 샘플을 생성 했으므로 제외하고 는 값을 계산하는 방법이 아닙니다 . 및 .Φ(x)10484011Φ(1)0.8401Φ1(0.8401)1
딜립 사와 트는

1
나는 당신이 기대할 수있는 종류의 숫자의 예로 을 선택했습니다 . 하고 생성하는 경우이므로 표준 정규 분포의 샘플을 사용하면 기대할 가까이 에 의 값을 갖는 샘플 . Box-Muller 메소드를 올바르게 구현하고 있지만 결과를 이해하지 못하고 cdf 등과 관련이 없습니다.8401Φ(1)=0.84131048413100001
Dilip Sarwate

답변:


3

들어 티카 $VersionNumber > 5 당신은 사용할 수 있습니다

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

에 대한 q번째 백분위 수.

그렇지 않으면 먼저 적절한 통계 패키지를로드해야합니다.


(버전 7이 있습니다.) 통계 패키지를로드하는 데 문제가 없습니다. 그러나 거기의 기능은 무엇입니까? 이 Quantile줄은 수식을 사용하는 대신 수동으로 계산을 수행 한다는 인상을 얻습니다 .
Ram Rachum

(즉,가되지 할당 값을 상징적 매개 변수를 평가 mu, sigmaq); 역 오차 함수와 관련된 표현식을 가져와야합니다.
JM은

16

John Cook의 페이지 ( Scipy의 배포판 )는 이러한 유형의 항목에 대한 좋은 참조 자료입니다.

In [15]: import scipy.stats

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

4

글쎄, 당신은 R에 대해 묻지 않았지만 R에서는? qnorm을 사용하여 그것을합니다.

(실제로 백분위 수가 아닌 Quantile이므로 믿습니다)

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

1
Quantile vs. percentile (단순한 용어 일뿐 ), j.mp/dsYz9z .
chl

1
R에있는 동안 Wald로 조정 된 CI (예 : Agresti-Coull)는 PropCIs패키지로 제공됩니다. Wilson의 방법이 기본값입니다 Hmisc::binconf(Agresti 및 Coull에서 제안한대로).
chl

3

파이썬에서는 scipy 패키지 에서 stats 모듈을 사용할 수 있습니다 ( 다음 예제 에서와 같이 ).cdf()

(그것은 보인다 transcendantal의 패키지는 보통의 누적 분포를 포함).


0

MatLab 및 Mathematica에서 사용할 수 있는 inverse erf 함수를 사용할 수 있습니다 .

일반 CDF의 경우

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

우리는 얻는다

x=2 erf1(2y1)

로그 정규 CDF의 경우

y=Fx(x;μ,σ)=12erfc(logxμσ2)

우리는 얻는다

log(x)=μ+σ2 erfc1(2y)

2
이것은 답변보다 더 많은 의견이 아닌가?
매크로

내 생각은 erf 및 erfc 함수에 대한 역수가 있으면 문제가 해결된다는 것입니다. 예를 들어 MatLab에는 사전 프로그래밍 된 기능이 있습니다.
Jean-Victor Côté

@ Jean-VictorCôté 답장으로 아이디어를 개발하십시오. 그렇지 않으면 위에서 제안한 것처럼 보입니다.
chl

로그 정규 계산이 올바르지 않습니다. 결국, 그 역 CDF 같아야 동일 사용을위한 별개 정상 대한 역 CDF에 대신에 . log(x)x
whuber
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.