L'action copulaSimulate simule des données à partir d'un modèle de copule spécifié. Les copules sont des outils statistiques qui décrivent la dépendance entre plusieurs variables aléatoires indépendamment de leurs distributions marginales. Cette action permet de générer des jeux de données synthétiques qui respectent une structure de dépendance particulière, ce qui est utile pour des simulations de Monte Carlo, des tests de stress en finance, ou l'analyse de risques.
| Paramètre | Description |
|---|---|
| define | Spécifie les informations pertinentes sur la copule utilisée pour la simulation. |
| copulatype | Spécifie le type de copule (CLAYTON, FRANK, GUMBEL, NORMAL, T). La valeur par défaut est NORMAL. |
| corrtable | Spécifie la table CAS contenant la matrice de corrélation de Pearson à utiliser pour la simulation de copules elliptiques. |
| df | Spécifie les degrés de liberté. Ce paramètre est uniquement utilisé pour les copules de Student (T). |
| KendallCorrtable | Spécifie la table CAS contenant la matrice de corrélation de Kendall à utiliser pour la simulation de copules elliptiques. |
| name | Spécifie le nom de la définition de la copule. |
| SpearmanCorrtable | Spécifie la table CAS contenant la matrice de corrélation de Spearman à utiliser pour la simulation de copules Gaussiennes. |
| theta | Spécifie la valeur du paramètre pour les copules archimédiennes. |
| display | Spécifie la liste des tables de résultats que vous souhaitez que l'action crée. Si omis, toutes les tables sont créées. |
| margApproxOpts | Spécifie les options utilisées lors de l'approximation de la fonction de distribution marginale empirique par la méthode adaptative. |
| ndraws | Spécifie le nombre d'observations à générer pour la simulation. La valeur par défaut est 10000. |
| outempirical | Spécifie la table de sortie pour contenir le résultat de la simulation en utilisant les marges empiriques. |
| outputTables | Spécifie la liste des tables de résultats à sortir en tant que tables CAS. |
| outuniform | Spécifie la table de sortie pour contenir le résultat de la simulation avec des marges uniformes. |
| plot | Spécifie les options utilisées pour produire des graphiques de diagnostic. |
| restore | Restaure les propriétés du modèle et les estimations finales à partir d'un item store spécifié pour effectuer la simulation. |
| seed | Spécifie la graine (seed) pour la génération de nombres aléatoires. La valeur par défaut est 0, ce qui correspond à une graine basée sur l'horloge système. |
| table | Spécifie la table de données d'entrée, nécessaire lorsque les marges empiriques sont utilisées. |
| timingReport | Spécifie le type d'informations de chronométrage que l'action doit fournir. |
| tolerance | Spécifie la tolérance numérique autorisée pour la simulation. |
| var | Spécifie la liste des noms de variables pour la simulation et les tables de sortie. |
Ce bloc de code crée deux tables CAS. La première, 'mycas.corr_data', contient une matrice de corrélation de Pearson qui sera utilisée par les copules elliptiques. La seconde, 'mycas.mydata', contient des données qui serviront de base pour le calcul des marges empiriques.
| 1 | DATA mycas.corr_data; |
| 2 | _TYPE_ = 'CORR'; _NAME_ = 'y1'; y1=1; y2=0.5; y3=0.2; OUTPUT; |
| 3 | _TYPE_ = 'CORR'; _NAME_ = 'y2'; y1=0.5; y2=1; y3=0.6; OUTPUT; |
| 4 | _TYPE_ = 'CORR'; _NAME_ = 'y3'; y1=0.2; y2=0.6; y3=1; OUTPUT; |
| 5 | RUN; |
| 6 | |
| 7 | DATA mycas.mydata; |
| 8 | call streaminit(456); |
| 9 | DO i = 1 to 2000; |
| 10 | y1 = rand('NORMAL'); |
| 11 | y2 = rand('NORMAL'); |
| 12 | y3 = rand('NORMAL'); |
| 13 | OUTPUT; |
| 14 | END; |
| 15 | RUN; |
Cet exemple simule 1000 observations à partir d'une copule Gaussienne tridimensionnelle en utilisant la matrice de corrélation précédemment créée. Les résultats avec des marges uniformes sont stockés dans la table 'unif_out'.
| 1 | |
| 2 | PROC CAS; |
| 3 | copula.copulaSimulate / define={copulaType='NORMAL', corrTable={name='corr_data'}}, nDraws=1000, seed=123, outUniform={name='unif_out', replace=true}, var={'y1', 'y2', 'y3'}; |
| 4 | |
| 5 | RUN; |
| 6 | |
| 7 | QUIT; |
| 8 |
Cet exemple simule 5000 observations à partir d'une copule de Student (t) avec 5 degrés de liberté. Il utilise la table 'mycas.mydata' pour dériver les marges empiriques. Deux tables de sortie sont générées : 'unif_out_t' avec des marges uniformes et 'emp_out_t' avec les marges empiriques. Des graphiques de diagnostic sont également demandés.
| 1 | |
| 2 | PROC CAS; |
| 3 | copula.copulaSimulate / define={copulaType='T', df=5, corrTable={name='corr_data'}}, nDraws=5000, seed=456, TABLE={name='mydata'}, outUniform={name='unif_out_t', replace=true}, outEmpirical={name='emp_out_t', replace=true}, var={'y1', 'y2', 'y3'}, plot={scatter=true, marginals=true}; |
| 4 | |
| 5 | RUN; |
| 6 | |
| 7 | QUIT; |
| 8 |
Cet exemple montre comment simuler des données à partir d'une copule de Clayton, qui est une copule archimédienne. Ce type de copule est défini par un seul paramètre, theta, qui contrôle la force de la dépendance (ici, theta=2 indique une forte dépendance dans la queue inférieure). Pour les copules archimédiennes, une matrice de corrélation n'est pas nécessaire.
| 1 | |
| 2 | PROC CAS; |
| 3 | copula.copulaSimulate / define={copulaType='CLAYTON', theta=2}, nDraws=2000, seed=789, outUniform={name='clayton_out', replace=true}, var={'u1', 'u2'}; |
| 4 | |
| 5 | RUN; |
| 6 | |
| 7 | QUIT; |
| 8 |