У меня задача вручную построить QQ(квантиль-квантиль)-диаграмму с доверительными интервалами для каждой точки на ней.
Нашел вот такое руководство:
https://www.stat.auckland.ac.nz/~ihaka/787/lectures-quantiles2-handouts.pdf,
где, если я все правильно понял, для моих центрированных стандартизованных величин предлагается следующий интервал:
где
а
- это 5%-е критическое значение статистики Колмогорова-Смирнова для
испытаний (выходит, одинаковое для всех элементов выборки).
Значит, мои иксы отсортированы и стандартизованы, я откладываю их на оси ординат, на оси абсцисс - квантили нормального распределения для значений функции
. Затем, строю доверительные интервалы по следующей схеме: просто перебирая
, беру в качестве значений функции
,
- значение KS-статистики для
при больших
.
Результат выглядит следующим образом:
А вот применение встроенной функции в пакете R:
Код:
library(car)
qqPlot(myres)
У меня по сравнению с этим границы быстро расходятся (что даже вызывает ошибки).
(Мне удалось получить подобную картинку, поставив вместо
эмпирическое значение KS-статистики, т.е. максимальное расстояние между эмпирической и теоретической функциями распределения):
Код:
myk1<-ks.test(myquant,myres)$statistic
for (i in 1:100)
{
##segments(x0,y0,x1,y1,..)
points(myquant[i],qnorm(i/100-myk1),pch='.')
points(myquant[i],qnorm(i/100+myk1),pch='.')
}
Но мне это не кажется хорошей идеей.
Вопрос: Что я делаю не так и какие есть вообще способы построить доверительные интервалы на QQ-диаграмме?Мой код в R:
Код:
## myres - my previously generated standardized sorted residuals
## Generating standard normal quantiles of the middle of the intervals
## (k/n, (k+1)/n)
myquant<-qnorm((1:100-0.5)/100)
######### plotting Q-Q plot for comparsion with normal distribution
plot(myquant,myres)
abline(0,1)
## Critical values for Kolmogorov-Smirnov test for N>50, alpha=0.05 are
## 1.36/sqrt(N)
## We have F(x) = k/n in the sorted sample while looping
for (i in 1:100)
{
##segments(x0,y0,x1,y1,..)
points(myquant[i],qnorm(i/100-1.36/sqrt(100)),pch='.')
points(myquant[i],qnorm(i/100+1.36/sqrt(100)),pch='.')
}