Je souhaite découvrir une méthode pour générer des données corrélées et non normales. Donc, idéalement, une sorte de distribution qui prend une matrice de covariance (ou corrélation) comme paramètre et génère des données qui l'approchent. Mais voici le hic: la méthode que j'essaie de trouver devrait avoir la flexibilité de contrôler également son asymétrie multivariée et / ou son kurtosis.
Je connais la méthode de Fleishman et l'utilisation de la méthode de puissance des variables normales, mais je pense que la plupart de ces extensions n'autorisent l'utilisateur que pour certaines combinaisons d' asymétrie marginale et de kurtosis, laissant le skewness / kurtosis multivarié juste là. Ce que je me demandais, c'est s'il existe une méthode qui aide à spécifier l'asymétrie multivariée et / ou le kurtosis, ainsi qu'une certaine structure de corrélation / covariance.
Il y a environ un an, j'ai suivi un séminaire sur la distribution des copules et je me souviens que le professeur avait mentionné nonchalamment qu'en utilisant des copules de vigne, on pouvait générer des données qui sont, disons, symétriques dans chacun de ses marginaux 1-D mais conjointement asymétriques et vice-versa. -versa. Ou, encore plus loin, que toutes les marges de dimension inférieure pourraient avoir une asymétrie ou un kurtosis tout en gardant les dimensions les plus élevées symétriques (ou non). J'ai été émerveillé par l'idée qu'une telle flexibilité puisse exister.J'ai essayé de trouver une sorte d'article ou de document de conférence décrivant ladite méthode, mais j'ai échoué :(. Cela ne doit pas nécessairement passer par l'utilisation de copules, Je suis ouvert à tout ce qui fonctionne.
Edit: J'ai ajouté du code R pour essayer de montrer ce que je veux dire. Jusqu'à présent, je ne connais que bien la définition de Mardia de l'asymétrie multivariée et du kurtosis. Lorsque j'ai abordé mon problème pour la première fois, j'ai naïvement pensé que si j'utilisais une copule symétrique (gaussienne dans ce cas) avec des marginaux asymétriques (bêta, dans cet exemple), des tests univariés sur les marginaux donneraient de l'importance, mais le test de Mardia pour l'asymétrie / kurtosis multivarite le ferait être non significatif. J'ai essayé et ça ne s'est pas déroulé comme je m'y attendais:
library(copula)
library(psych)
set.seed(101)
cop1 <- {mvdc(normalCopula(c(0.5), dim=2, dispstr="un"),
c("beta", "beta"),list(list(shape1=0.5, shape2=5),
list(shape1=0.5, shape2=5)))}
Q1 <- rmvdc(cop1, 1000)
x1 <- Q1[,1]
y1 <- Q1[,2]
cop2 <- {mvdc(normalCopula(c(0.5), dim=2, dispstr="un"),
c("norm", "norm"),list(list(mean=0, sd=1),
list(mean = 0, sd=1)))}
Q2 <- rmvdc(cop2, 1000)
x2 <- Q2[,1]
y2 <- Q2[,2]
mardia(Q1)
Call: mardia(x = Q1)
Mardia tests of multivariate skew and kurtosis
Use describe(x) the to get univariate tests
n.obs = 1000 num.vars = 2
b1p = 10.33 skew = 1720.98 with probability = 0
small sample skew = 1729.6 with probability = 0
b2p = 22.59 kurtosis = 57.68 with probability = 0
mardia(Q2)
Call: mardia(x = Q2)
Mardia tests of multivariate skew and kurtosis
Use describe(x) the to get univariate tests
n.obs = 1000 num.vars = 2
b1p = 0.01 skew = 0.92 with probability = 0.92
small sample skew = 0.92 with probability = 0.92
b2p = 7.8 kurtosis = -0.79 with probability = 0.43
En inspectant les contours de «cop1» VS «cop2» ainsi que les graphiques empiriques de densité bivariée, je peux également voir qu'aucun d'eux ne semble symétrique du tout. C'est alors que j'ai réalisé que c'était probablement un peu plus compliqué que je ne le pensais.
Je sais que Mardia n'est pas la seule définition de l'asymétrie / kurtosis multivariée, donc je ne me limite pas à trouver une méthode qui ne satisfait que les définitions de Mardia.
Merci!