@ whuber가 지적했듯이 통계 방법은 여기서 정확하게 작동하지 않습니다. 다른 출처에서 배포판을 추론해야합니다. 분포를 알면 비선형 방정식 풀기 연습이 있습니다. 넣어야 파라미터 벡터로 선택 확률 분포 함수 분위수 . 당신이 가진 것은 다음의 비선형 방정식 시스템입니다.θ에프θ
큐0.05큐0.5큐0.95= f( 0.05 , θ )= f( 0.5 , θ )= f( 0.95 , θ )
여기서 는 Quantile입니다. 를 찾으려면이 시스템을 해결해야합니다 . 이제 실제로 3 모수 분포에 대해이 방정식을 만족하는 모수의 값을 찾을 수 있습니다. 2- 모수 및 1- 모수 분포의 경우이 시스템이 과도하게 결정되므로 정확한 솔루션이 없습니다. 이 경우 불일치를 최소화하는 매개 변수 세트를 검색 할 수 있습니다.θ큐θ
( q0.05− f( 0.05 , θ ) )2+ ( q0.5− f( 0.5 , θ ) )2+ ( q0.95− f( 0.95 , θ ) )2
여기에서 2 차 함수를 선택했지만 원하는 것을 선택할 수 있습니다. @ whuber 의견에 따르면 더 중요한 Quantile을보다 정확하게 맞출 수 있도록 가중치를 지정할 수 있습니다.
4 개 이상의 매개 변수의 경우 시스템이 결정되지 않으므로 무한한 수의 솔루션이 존재합니다.
다음은이 접근법을 보여주는 샘플 R 코드입니다. 데모 목적으로, 나는 VGAM 패키지의 Singh-Maddala 분포에서 Quantile을 생성합니다 . 이 분포는 3 개의 매개 변수를 가지며 소득 분포 모델링에 사용됩니다.
q <- qsinmad(c(0.05,0.5,0.95),2,1,4)
plot(x<-seq(0,2,by=0.01), dsinmad(x, 2, 1, 4),type="l")
points(p<-c(0.05, 0.5, 0.95), dsinmad(p, 2, 1, 4))
이제 비선형 방정식 시스템을 평가하는 함수를 작성하십시오.
fn <- function(x,q) q-qsinmad(c(0.05, 0.5, 0.95), x[1], x[2], x[3])
참값이 방정식을 만족하는지 확인하십시오.
> fn(c(2,1,4),q)
[1] 0 0 0
비선형 방정식 시스템을 풀기 위해 nleqslv
패키지 nlqeslv의 함수 를 사용합니다 .
> sol <- nleqslv(c(2.4,1.5,4.3),fn,q=q)
> sol$x
[1] 2.000000 1.000000 4.000001
우리가 볼 때 우리는 정확한 해결책을 얻습니다. 이제 로그 정규 분포를이 Quantile에 맞추도록하겠습니다. 이를 위해 우리는 optim
기능 을 사용할 것 입니다.
> ofn <- function(x,q)sum(abs(q-qlnorm(c(0.05,0.5,0.95),x[1],x[2]))^2)
> osol <- optim(c(1,1),ofn)
> osol$par
[1] -0.905049 0.586334
이제 결과를 플롯하십시오
plot(x,dlnorm(x,osol$par[1],osol$par[2]),type="l",col=2)
lines(x,dsinmad(x,2,1,4))
points(p,dsinmad(p,2,1,4))
이것으로부터 우리는 2 차 함수가 그렇게 좋지 않다는 것을 즉시 알 수 있습니다.
이것이 도움이되기를 바랍니다.