pth Квантиль стандартного нормального распределения - R

Я изучаю статистику и R из книги под названием «Открытие статистики с помощью R»... Несмотря на то, что она очень информативна, кажется, что она пропускает области, даже если предполагает, что предварительные знания статистики или R не требуются. Итак к проблеме:

Как можно вычислить в R p-й квантиль стандартного нормального распределения, используя дихотомию (или деление в половинки) метод? (и при условии, что qnorm() не используется). то есть:

    pnorm(x)   = p
    pnorm(x)-p = 0
    f (x)      = 0

Обновление:

Дихотомия — это метод, при котором вы берете интервал [a,b], который принимает значения разных знаков в конечных точках интервала и имеет единственный корень x внутри [a,b]. Затем вы наполовину, если найдете F(x1), а если f(x1) != 0, это даст вам [a,x1] и [x1,b]... где последовательность x1, x2,..., сходится к 0.


person Reanimation    schedule 25.02.2014    source источник


Ответы (1)


Неуклюже, но это работает:

tolerance <- 1e-6
interval <- c(-1000,1000)
quantile <- 0.2

while(interval[2]-interval[1] > tolerance) {
  cat('current interval: ',interval,'\n')
  interval.left <- c(interval[1],mean(interval))
  interval.right <- c(mean(interval),interval[2])
  if(sum(sign(pnorm(interval.left)-quantile))==0) {
    interval <- interval.left
  } else {
    interval <- interval.right
  }
}
mean(interval)
qnorm(quantile)
person RoyalTS    schedule 25.02.2014
comment
Потрясающий! Спасибо, что нашли время опубликовать. Я думаю, что это хорошая реализация. :D - person Reanimation; 25.02.2014