Как отметил @whuber, статистические методы здесь не совсем работают. Вы должны сделать вывод о распределении из других источников. Когда вы знаете распределение, у вас есть упражнение по решению нелинейных уравнений. Обозначим через квантильную функцию выбранного вами распределения вероятностей с параметром-вектором θ . То, что у вас есть, это следующая нелинейная система уравнений:fθ
q0.05q0.5q0.95=f(0.05,θ)=f(0.5,θ)=f(0.95,θ)
где ваши квантили. Вам нужно решить эту систему, чтобы найти θ . Теперь практически для любого трехпараметрического распределения вы найдете значения параметров, удовлетворяющих этому уравнению. Для 2-параметрических и 1-параметрических распределений эта система переопределена, поэтому точных решений нет. В этом случае вы можете искать набор параметров, который минимизирует расхождение:qθ
(q0.05−f(0.05,θ))2+(q0.5−f(0.5,θ))2+(q0.95−f(0.95,θ))2
Здесь я выбрал квадратичную функцию, но вы можете выбрать все, что захотите. В соответствии с комментариями @whuber вы можете назначать веса, чтобы более важные квантили можно было подбирать более точно.
Для четырех и более параметров система недоопределена, поэтому существует бесконечное количество решений.
Вот пример кода R, иллюстрирующий этот подход. В целях демонстрации я генерирую квантили из дистрибутива Singh-Maddala из пакета VGAM . Это распределение имеет 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
Как мы видим, мы получаем точное решение. Теперь давайте попробуем подогнать нормальное логарифмическое распределение к этим квантилям. Для этого мы будем использовать 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))
Отсюда сразу видно, что квадратичная функция не так хороша.
Надеюсь это поможет.