Тест Лиллиефорса. Проверка котировок цен на нормальность

В предыдущем эксперименте я изложил суть теста Колмогорова-Смирнова для проверки произвольного распределения или, в нашем случае, ВР на нормальность. Я старался как можно проще все это объяснить и показать. Надеюсь, что у меня получилось. Но есть одна досадная деталь – тест Колмогорова-Смирнова возможно применять только в том случае, когда мы заранее знаем теоретические значения математического ожидания и дисперсию ВР (нашей выборки, или случайной величины, иными словами). А что если не знаем?

Тогда вы можете предложить оценить их по данным ВР. Ну, скажем оценкой математического ожидания может быть среднее арифметическое значений ВР M= ∑si/n, а оценкой дисперсии D=(∑si2-(∑si)2/n)/(n-1) – так называемая несмещенная оценка (она отличается тем, что не занижает истинное теоретическое значение дисперсии ВР).

Так вот, оценив эти параметры ВР и решив, что они не сильно отличаются от истины мы можем провести тест Колмогорова-Смирнова. Но задумаемся: а насколько сильно в этом случае будут отличаться значения Dкр от тех, что имеются в таблицах или рассчитываются по формулам?

Задумался над этим когда-то и Лиллиефорс. И провел эксперимент. Генерировал нормально распределённые ВР, делал оценку математического ожидания и дисперсии по формулам, которые я указал выше, и накапливал статистику распределения вероятностей для величины Dn. Получилось, что в этом случае величины Dкр в 1,5-2 раза меньше тех, что даны для теста Колмогорова-Смирнова!

А давайте повторим его эксперимент?

Вот скрипт на языке R, что я написал:

d<-NULL
dt<-NULL
for(i in 1:10000)
{
x<-rnorm(1000)
#вычисление среднего значения (оценка мат. ожидания)
xm=mean(x)
#вычисление несмещённого стандартного отклонения (корень из несмещённой дисперсии)
sdx<-sd(x)
#расчет величины Dn и накопление статистики по ней
x<-sort(x)
xu<-unique(x)
ef=cumsum(tabulate(match(x,xu)))/length(x)
tf<-pnorm(xu,mean=xm,sd=sdx) #функция распределения для сделанных оценок
d<-c(d,max(abs(ef-tf))) #накапливаем статистику по Dn
#Расчет величины Dn при известных мат.ожидании = 0 и стандартном отклонении = 1
tft<-pnorm(xu)
dt<-c(dt,max(abs(ef-tft)))
}
#Построение эмпирического распределения вероятностей для Dn
d<-sort(d)
du<-unique(d)
ef=cumsum(tabulate(match(d,du)))/length(d)
#Построение эмпирического распределения вероятностей для Dn
#с известной дисперсией и мат. ожиданием
dt<-sort(dt)
dtu<-unique(dt)
eft=cumsum(tabulate(match(dt,dtu)))/length(dt)
#Оценка значения Dn для уровня значимости 0.05 для Dn и Dn 
#(с известными мат. ожиданием и дисперсией)
for(i in 1:length(ef))
{
if (ef[i]>=0.95) {print(d[i]);break;}
}
dkr<-sqrt(-0.5*log(0.05/2)/length(x)) #аппроксимация Dкр
print(dkr) #оценка Dкр
#графики двух эмпирических распределений
plot(x=du,y=ef,type='l',col="blue",xlab="Dn",ylab="F(Dn)") #Распределение Лиллиефорса
lines(x=dtu,y=eft,type='l',col="red") #Распределение Колмогорова-Смирнова

Вот график двух распределений:

ecdfL Правда отличие налицо? Понятно, что значение Dкр зависит от величины выборки n и уровня значимости α. Лиллиефорс рассчитал значения Dкр, для разных случаев. Все это можно сделать на основе приведенного мной скрипта, можно посмотреть в специальной таблице или его статье

В R есть такой пакет расширения, под названием «nortest» – он включает в себя несколько тестов на нормальность распределения. В том числе и тест Лиллиефорса, который возвращает рассчитанное по ВР значение Dn. Дальше его можно сравнивать с критическим и делать выводы. Для ВР, где n>30 Лиллиефорс предложил аппроксимацию вычисления Dкр по формуле: 0.886/sqrt(n).

По сути, Dn – это величина, которая вычисляется также, как и в тесте Колмогорова-Смирнова. Полностью аналогично. А вот значения Dкр у Лиллиефорса другие!

Чтобы проверить ВР, обозначенный как x, на нормальность, достаточно вызвать команду lillie.test(x).

Вот скрипт проверки нормально распределенной случайно величины данным тестом:

x<-rnorm(1000)
print(lillie.test(x))
dkr<-0.886/sqrt(length(x))
print(dkr)

 У меня получилось, что Dn=0.027, а Dкр=0.28, p-value=0.25. Гипотезу H0 о нормальном распределении случайной величины x следует принять.

 А теперь проверим данным тестом несколько часовых котировок цен за 2015 год: EUR/USD, GBP/JPY, AUD/CAD. Гипотеза H0 будет звучать так: приращения логарифмов цен распределены нормально (об этом я писал здесь).

 Вот, какие значения Dn для них получились:

EUR/USD: Dn=0.088, p-value < 2.2 x 10^-16, Dкр=0.014
GBP/JPY: Dn=0.085, p-value < 2.2 x 10^-16, Dкр=0.0135
AUD/CAD: Dn=0.054, p-value < 1.9 x 10^-15, Dкр=0.0136

Во всех случаях тест показывает, что гипотезу H0 о нормально распределённых приращениях логарифмов цен следует отклонить. Имеется основание полагать, что приращения логарифмов цен распределены не по нормальному закону, а по какому-то другому. Это важная информация!

В следующей статье я проверю это ещё раз каким-то другим тестом.

Похожие статьи:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *