불행하게도, 표준 법선 (정규는 위치-규모 패밀리이기 때문에 다른 모든 법칙을 결정할 수 있음) Quantile 함수는 닫힌 형태 (즉, '예쁜 공식')를 허용하지 않습니다. 닫힌 형태에 가장 가까운 것은 표준 정규 양자 함수가 미분 방정식을 만족하는 함수 입니다.승
d2wdp2=w(dwdp)2
초기 조건 및 입니다. 대부분의 컴퓨팅 환경에는 정상 Quantile 함수를 수치 적으로 계산하는 함수가 있습니다. R에서는 다음을 입력합니다.w(1/2)=0w′(1/2)=2π−−√
qnorm(p, mean=mu, sd=sigma)
분포 의 번째 분위수 를 구합니다 .pN(μ,σ2)
편집 : 문제에 대한 수정 된 이해로 데이터는 법선 혼합에서 생성되므로 관찰 된 데이터의 밀도는 다음과 같습니다.
p(x)=∑iwipi(x)
여기서 이고 각 는 평균 및 표준 편차 정규 밀도입니다 . 관찰 된 데이터의 CDF는 다음과 같다.∑iwi=1pi(x)μiσi
F(y)=∫y−∞∑iwipi(x)dx=∑iwi∫y−∞pi(x)=∑iwiFi(y)
여기서 는 평균 및 표준 편차 정규 CDF입니다 . 적분이 유한하기 때문에 적분과 합산을 서로 바꿀 수 있습니다. 이 CDF는 컴퓨터에서 계산하기에 충분하고 연속적이므로 Quantile 함수라고도 하는 역 CDF 은 라인 검색을 통해 계산할 수 있습니다. 구성 분포의 Quantile의 함수로서 법선 혼합의 Quantile 함수에 대한 간단한 공식이 없으므로이 옵션을 기본값으로 사용합니다.μ i σ i F - 1Fi(x)μiσiF−1
다음 R 코드 는 줄 검색을 위해 이분법을 사용하여 을 수치 적으로 계산 합니다. F_inv () 함수는 Quantile 함수입니다. 각 및 풀어야 할 Quantile 포함하는 벡터를 제공해야합니다 . w i , μ i , σ i pF−1wi,μi,σip
# evaluate the function at the point x, where the components
# of the mixture have weights w, means stored in u, and std deviations
# stored in s - all must have the same length.
F = function(x,w,u,s) sum( w*pnorm(x,mean=u,sd=s) )
# provide an initial bracket for the quantile. default is c(-1000,1000).
F_inv = function(p,w,u,s,br=c(-1000,1000))
{
G = function(x) F(x,w,u,s) - p
return( uniroot(G,br)$root )
}
#test
# data is 50% N(0,1), 25% N(2,1), 20% N(5,1), 5% N(10,1)
X = c(rnorm(5000), rnorm(2500,mean=2,sd=1),rnorm(2000,mean=5,sd=1),rnorm(500,mean=10,sd=1))
quantile(X,.95)
95%
7.69205
F_inv(.95,c(.5,.25,.2,.05),c(0,2,5,10),c(1,1,1,1))
[1] 7.745526
# data is 20% N(-5,1), 45% N(5,1), 30% N(10,1), 5% N(15,1)
X = c(rnorm(5000,mean=-5,sd=1), rnorm(2500,mean=5,sd=1),
rnorm(2000,mean=10,sd=1), rnorm(500, mean=15,sd=1))
quantile(X,.95)
95%
12.69563
F_inv(.95,c(.2,.45,.3,.05),c(-5,5,10,15),c(1,1,1,1))
[1] 12.81730