Jetez un coup d'œil aux distributions Lambert W x F à queue lourde ou aux distributions Lambert W x F asymétriques (avis de non-responsabilité: je suis l'auteur). Dans R, ils sont implémentés dans le package LambertW .
Articles Similaires:
yX
Voici un exemple d'estimations gaussiennes Lambert W x appliquées aux rendements des fonds d'actions.
library(fEcofin)
ret <- ts(equityFunds[, -1] * 100)
plot(ret)
Les mesures récapitulatives des retours sont similaires (pas aussi extrêmes) que dans la publication d'OP.
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
La plupart des séries présentent des caractéristiques clairement non normales (forte asymétrie et / ou kurtosis important). Faisons gaussianiser chaque série en utilisant une distribution gaussienne Lambert W x à queue lourde (= h de Tukey) en utilisant une méthode d'estimateur de moments ( IGMM
).
library(LambertW)
ret.gauss <- Gaussianize(ret, type = "h", method = "IGMM")
colnames(ret.gauss) <- gsub(".X", "", colnames(ret.gauss))
plot(ts(ret.gauss))
Les graphiques des séries chronologiques montrent beaucoup moins de queues et aussi une variation plus stable dans le temps (pas constante cependant). Le nouveau calcul des métriques sur la série chronologique gaussianisée donne:
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()
Régression bivariée simple
rEA STEU, trjeND IA , t
layout(matrix(1:2, ncol = 2, byrow = TRUE))
plot(ret[, "INDIA"], ret[, "EASTEU"])
grid()
plot(ret.gauss[, "INDIA"], ret.gauss[, "EASTEU"])
grid()
Le diagramme de dispersion de gauche de la série originale montre que les valeurs aberrantes fortes ne se sont pas produites aux mêmes jours, mais à des moments différents en Inde et en Europe; à part cela, il n'est pas clair si le nuage de données au centre ne prend en charge aucune corrélation ou dépendance négative / positive. Étant donné que les valeurs aberrantes affectent fortement les estimations de variance et de corrélation, il vaut la peine d'examiner la dépendance avec les queues lourdes supprimées (nuage de points de droite). Ici, les tendances sont beaucoup plus claires et la relation positive entre l'Inde et le marché de l'Europe de l'Est devient apparente.
# 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)
Causalité de Granger
VA R ( 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
Cependant, pour les données gaussianisées, la réponse est différente! Ici, le test ne peut pas rejeter H0 que "L'INDE ne cause pas Granger EASTEU", mais rejette toujours que "EASTEU ne cause pas Granger INDIA". Les données gaussianisées soutiennent donc l'hypothèse selon laquelle les marchés européens stimulent les marchés indiens le lendemain.
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
VA R ( 5 )