copula

copulaSimulate

##set_copula

Description

L'action copulaSimulate est l'outil ultime pour les architectes de données souhaitant simuler des dépendances complexes entre variablesColonnes d'une table SAS contenant des données spécifiques (numériques ou caractères). Elles possèdent des attributs comme le nom, le type, la longueur, l'étiquette et le format d'affichage.. Plutôt que de se limiter à des corrélations linéairesMesure de l'intensité et du sens de la relation proportionnelle entre deux variables. Un coefficient proche de 1 ou -1 indique une dépendance directe forte représentable par une droite. classiques, cette action permet de générer des données synthétiques suivant des structures de dépendance spécifiques (Normal, T, ClaytonFamille de copules archimédiennes utilisée pour modéliser des dépendances asymétriques fortes dans les queues de distribution inférieures, cruciale pour l'analyse des risques de défauts simultanés., FrankCopule archimédienne symétrique modélisant une dépendance équilibrée entre les queues de distribution. Idéale pour les variables ne présentant pas de corrélation extrême (haute ou basse)., GumbelCopule archimédienne modélisant une dépendance forte dans la queue supérieure. Elle est cruciale en gestion des risques pour analyser la corrélation entre des événements extrêmes simultanés.). C'est un peu comme créer un univers parallèle où vos variablesColonnes d'une table SAS contenant des données spécifiques (numériques ou caractères). Elles possèdent des attributs comme le nom, le type, la longueur, l'étiquette et le format d'affichage. se comportent exactement comme vous l'avez prédit, sans les caprices du monde réel ! Elle est particulièrement utile pour les tests de stress financiers ou les simulations de Monte CarloMéthode utilisant l'échantillonnage aléatoire répété pour estimer la distribution de probabilité de résultats incertains et évaluer les risques ou la variabilité d'un système complexe. où la structure de queue est critique.

Syntaxe Officielle
copula.copulaSimulate /
define={copulatype="string", corrtable={caslib="string", name="table-name"}, df=double, KendallCorrtable={...}, SpearmanCorrtable={...}, theta=double}
ndraws=64-bit-integer
outuniform={caslib="string", name="table-name", replace=true}
outempirical={caslib="string", name="table-name", replace=true}
seed=integer
table={caslib="string", name="table-name"}
margApproxOpts={algorithm="string", interpolation="string", maxiters=integer}

Paramètres Clés

Nom du paramètre Description
define Un dictionnaire obligatoire définissant le modèle de copule à simuler. Il inclut le 'copulatype' (NORMAL, T, CLAYTON, FRANK, GUMBEL) et les paramètres associés comme 'theta' pour les copules archimédiennes ou 'corrtable' pour les copules elliptiques.
ndraws Nombre total d'observations (lignes) à générer. Par défaut, 10 000. Parce que plus on est de fous, plus on rit (et plus la simulation est précise).
outuniform Spécifie la table CAS de sortie pour stocker les tirages transformés en marges uniformes [0,1]. Utile pour voir la structure de dépendance pure.
outempirical Spécifie la table CAS de sortie pour stocker les tirages simulés projetés sur les distributions marginales empiriques de la table d'entrée.
seed La graine aléatoire. Indispensable si vous voulez que vos collègues puissent reproduire vos résultats (et vos erreurs).
table La table CAS source contenant les données originales. Nécessaire si vous utilisez des marges empiriques pour la simulation.
margApproxOpts Options pour ajuster l'approximation des distributions marginales (algorithme de binning, interpolation linéaire ou cubique, nombre d'itérations).
restore Permet de restaurer un modèle précédemment estimé via l'action copulaFit à partir d'un item store.

Préparation des données

Préparation d'une matrice de corrélation

Avant de simuler une copule Normale, nous devons fournir une structure de corrélation sous forme de table CAS.

1DATA mycas.mat_corr;
2 INPUT _name_ $ x1 x2 x3;
3 DATALINES;
4 x1 1.0 0.5 0.2
5 x2 0.5 1.0 0.3
6 x3 0.2 0.3 1.0
7;
8RUN;

Exemples d'utilisation

Simulation d'une copule Normale avec marges uniformes

Génère 5000 observations basées sur une matrice de corrélation Pearson pré-existante.

1PROC CAS;
2 copula.copulaSimulate /
3 define={copulatype="NORMAL", corrtable="mat_corr"},
4 ndraws=5000,
5 seed=12345,
6 outuniform={name="sim_uniform", replace=true};
7RUN;
Résultat Attendu :
Une table 'sim_uniform' contenant 5000 lignes avec les variables x1, x2, x3 dont les valeurs sont comprises entre 0 et 1.
Simulation Clayton avec marges empiriques et approximation fine

Ici, on utilise une copule de Clayton (souvent utilisée pour modéliser la dépendance en cas de krach boursier) et on projette les résultats sur les distributions réelles d'une table existante.

1PROC CAS;
2 copula.copulaSimulate /
3 TABLE="donnees_historiques",
4 var={"ret_action1", "ret_action2"},
5 define={copulatype="CLAYTON", theta=1.5},
6 ndraws=10000,
7 seed=98765,
8 outempirical={name="sim_empirique", replace=true},
9 margApproxOpts={algorithm="BIN", interpolation="MONOCUBIC", maxiters=20};
10RUN;
Résultat Attendu :
Une table 'sim_empirique' dont les marges imitent parfaitement les histogrammes de 'donnees_historiques' mais avec une structure de dépendance Clayton.