Взгляните на тяжелые хвосты Ламберта W x F или перекошенные распределения Ламберта W x F (попытка отказа от ответственности: я автор). В R они реализованы в пакете LambertW .
Похожие сообщения:
Одним из преимуществ распределения Коши или Стьюдента с фиксированными степенями свободы является то, что параметры хвоста могут быть оценены на основе данных - так что вы можете позволить данным решать, какие моменты существуют. Более того, структура Lambert W x F позволяет вам преобразовывать ваши данные и удалять асимметрию / тяжелые хвосты. Itt Важно отметить , однако , что МНК не требует нормальности или . Тем не менее, для вашей EDA это может быть полезно.XyX
Вот пример оценок Ламберта W x Гаусса, применяемых к доходности фондов акций.
library(fEcofin)
ret <- ts(equityFunds[, -1] * 100)
plot(ret)
Сводные показатели доходности аналогичны (не настолько экстремальны), как в посте ОП.
data_metrics <- function(x) {
c(mean = mean(x), sd = sd(x), min = min(x), max = max(x),
skewness = skewness(x), kurtosis = kurtosis(x))
}
ret.metrics <- t(apply(ret, 2, data_metrics))
ret.metrics
## mean sd min max skewness kurtosis
## EASTEU 0.1300 1.538 -18.42 12.38 -1.855 28.95
## LATAM 0.1206 1.468 -6.06 5.66 -0.434 4.21
## CHINA 0.0864 0.911 -4.71 4.27 -0.322 5.42
## INDIA 0.1515 1.502 -12.72 14.05 -0.505 15.22
## ENERGY 0.0997 1.187 -5.00 5.02 -0.271 4.48
## MINING 0.1315 1.394 -7.72 5.69 -0.692 5.64
## GOLD 0.1098 1.855 -10.14 6.99 -0.350 5.11
## WATER 0.0628 0.748 -5.07 3.72 -0.405 6.08
Большинство серий показывают явно ненормальные характеристики (сильная асимметрия и / или большой эксцесс). Давайте гауссифицируем каждую серию, используя распределение Ламберта W x Гаусса с тяжелыми хвостами (= h Тьюки), используя методы оценки моментов ( IGMM
).
library(LambertW)
ret.gauss <- Gaussianize(ret, type = "h", method = "IGMM")
colnames(ret.gauss) <- gsub(".X", "", colnames(ret.gauss))
plot(ts(ret.gauss))
Графики временного ряда показывают гораздо меньше хвостов, а также более устойчивые изменения во времени (хотя и не постоянные). Повторное вычисление метрик по гауссифицированному временному ряду дает:
ret.gauss.metrics <- t(apply(ret.gauss, 2, data_metrics))
ret.gauss.metrics
## mean sd min max skewness kurtosis
## EASTEU 0.1663 0.962 -3.50 3.46 -0.193 3
## LATAM 0.1371 1.279 -3.91 3.93 -0.253 3
## CHINA 0.0933 0.734 -2.32 2.36 -0.102 3
## INDIA 0.1819 1.002 -3.35 3.78 -0.193 3
## ENERGY 0.1088 1.006 -3.03 3.18 -0.144 3
## MINING 0.1610 1.109 -3.55 3.34 -0.298 3
## GOLD 0.1241 1.537 -5.15 4.48 -0.123 3
## WATER 0.0704 0.607 -2.17 2.02 -0.157 3
IGMM
Алгоритм достигается именно то , что было изложено сделать: преобразование данных , чтобы иметь эксцесс , равные . Интересно, что все временные ряды теперь имеют отрицательную асимметрию, что соответствует большинству финансовой литературы по временным рядам. Здесь важно отметить, что действует только незначительно, а не совместно (аналогично ).3Gaussianize()
scale()
Простая двумерная регрессия
Чтобы рассмотреть влияние гауссификации на OLS, рассмотрите возможность прогнозирования возврата «EASTEU» из возврата «INDIA» и наоборот. Несмотря на то, что мы смотрим на тот же день возвращается между на (не отставали переменных), она по- прежнему обеспечивает значение для прогнозирования фондового рынка данной разницы 6h + время между Индией и Европой. R I N D I A , TrEASTEU,trINDIA,t
layout(matrix(1:2, ncol = 2, byrow = TRUE))
plot(ret[, "INDIA"], ret[, "EASTEU"])
grid()
plot(ret.gauss[, "INDIA"], ret.gauss[, "EASTEU"])
grid()
Левая диаграмма рассеяния оригинальной серии показывает, что сильные выбросы возникали не в одни и те же дни, а в разное время в Индии и Европе; кроме этого неясно, поддерживает ли облако данных в центре отсутствие корреляции или отрицательной / положительной зависимости. Поскольку выбросы сильно влияют на оценки дисперсии и корреляции, стоит взглянуть на зависимость с удаленными тяжелыми хвостами (правая диаграмма рассеяния). Здесь закономерности гораздо яснее, и становится очевидной позитивная связь между рынком Индии и Восточной Европы.
# try these models on your own
mod <- lm(EASTEU ~ INDIA * CHINA, data = ret)
mod.robust <- rlm(EASTEU ~ INDIA, data = ret)
mod.gauss <- lm(EASTEU ~ INDIA, data = ret.gauss)
summary(mod)
summary(mod.robust)
summary(mod.gauss)
Грейнджер причинность
Тест причинности Грейнджера, основанный на модели (я использую чтобы зафиксировать недельный эффект ежедневных сделок) для «EASTEU» и «ИНДИЯ» отклоняет «отсутствие причинности Грейнджера» в обоих направлениях.p = 5VAR(5)p=5
library(vars)
mod.vars <- vars::VAR(ret[, c("EASTEU", "INDIA")], p = 5)
causality(mod.vars, "INDIA")$Granger
##
## Granger causality H0: INDIA do not Granger-cause EASTEU
##
## data: VAR object mod.vars
## F-Test = 3, df1 = 5, df2 = 3000, p-value = 0.02
causality(mod.vars, "EASTEU")$Granger
##
## Granger causality H0: EASTEU do not Granger-cause INDIA
##
## data: VAR object mod.vars
## F-Test = 4, df1 = 5, df2 = 3000, p-value = 0.003
Однако для гауссифицированных данных ответ другой! Здесь тест не может отклонить H0, что «ИНДИЯ не является причиной ГРАНДЖЕРА EASTEU», но все же отклоняет, что «EASTEU не вызывает Индию Грейнджера причины». Таким образом, гауссифицированные данные подтверждают гипотезу о том, что европейские рынки стимулируют рынки в Индии на следующий день.
mod.vars.gauss <- vars::VAR(ret.gauss[, c("EASTEU", "INDIA")], p = 5)
causality(mod.vars.gauss, "INDIA")$Granger
##
## Granger causality H0: INDIA do not Granger-cause EASTEU
##
## data: VAR object mod.vars.gauss
## F-Test = 0.8, df1 = 5, df2 = 3000, p-value = 0.5
causality(mod.vars.gauss, "EASTEU")$Granger
##
## Granger causality H0: EASTEU do not Granger-cause INDIA
##
## data: VAR object mod.vars.gauss
## F-Test = 2, df1 = 5, df2 = 3000, p-value = 0.06
Обратите внимание, что мне не ясно, какой из них правильный ответ (если есть), но это интересное наблюдение. Само собой разумеется, что все это тестирование Причинности зависит от того, является ли правильной моделью, что, скорее всего, нет; но я думаю, что это хорошо для иллюстрации.VAR(5)