copula

copulaSimulate

Descripción

La acción copulaSimulate simula datos a partir de un modelo de cópula especificado. Es útil para estudios de Monte Carlo, análisis de escenarios y para comprender las estructuras de dependencia entre múltiples variables aleatorias. Puede simular a partir de cópulas elípticas (Normal y t de Student) y de Arquímedes (Clayton, Frank, Gumbel).

copula.copulaSimulate / define={copulaType="NORMAL" | "T" | "CLAYTON" | "FRANK" | "GUMBEL", corrTable={name="nombre_tabla_corr"} | KendallCorrtable={name="nombre_tabla_kcorr"} | SpearmanCorrtable={name="nombre_tabla_scorr"}, df=valor_numerico, theta=valor_numerico, name="nombre_definicion"}, ndraws=numero_observaciones, seed=semilla_aleatoria, var={"variable1", "variable2", ...}, outuniform={name="tabla_salida_uniforme", replace=true}, outempirical={name="tabla_salida_empirica", replace=true}, table={name="tabla_entrada_margenes"};
Parámetros
ParámetroDescripción
defineEspecifica la información relevante sobre la cópula que se utiliza para la simulación.
copulatypeEspecifica el tipo de cópula. Puede ser 'NORMAL', 'T', 'CLAYTON', 'FRANK' o 'GUMBEL'.
corrTableEspecifica el conjunto de datos que contiene la matriz de correlaciones de Pearson para simular cópulas elípticas.
dfEspecifica los grados de libertad. Esta opción solo se puede usar para cópulas t de Student.
KendallCorrtableEspecifica el conjunto de datos que contiene la matriz de correlaciones de Kendall para simular cópulas elípticas.
nameEspecifica el nombre de la definición de la cópula.
SpearmanCorrtableEspecifica el conjunto de datos que contiene la matriz de correlaciones de Spearman para simular cópulas Gaussianas.
thetaEspecifica el valor del parámetro para las cópulas de Arquímedes.
displayEspecifica la lista de tablas de visualización que desea que la acción cree.
margApproxOptsEspecifica las opciones utilizadas al aproximar la función de distribución marginal empírica utilizando el método adaptativo.
ndrawsEspecifica el número de observaciones a generar para la simulación.
outempiricalEspecifica el conjunto de datos de salida para contener el resultado de la simulación utilizando márgenes empíricos.
outputTablesEspecifica la lista de tablas de visualización que desea que se generen como tablas CAS.
outuniformEspecifica el conjunto de datos de salida para contener el resultado de la simulación en márgenes uniformes.
plotEspecifica las opciones utilizadas para producir gráficos de correlación.
restoreRestaura las propiedades del modelo y las estimaciones finales desde el almacén de elementos especificado y utiliza la información restaurada para realizar la simulación.
seedEspecifica la semilla para generar números aleatorios para la simulación.
tableEspecifica la tabla de datos de entrada que contiene los datos para estimar las distribuciones marginales empíricas.
toleranceEspecifica la tolerancia permitida para la simulación.
varEspecifica la lista de nombres de variables para el conjunto de datos de salida.
Creación de Datos de Correlación

Este paso crea una tabla CAS que contiene una matriz de correlación de Pearson. Esta tabla se utilizará en los ejemplos para simular datos desde una cópula Gaussiana o t de Student.

¡Copiado!
1DATA mycas.corr_data; LENGTH _name_ $ 8; INFILE DATALINES; INPUT _name_ $ y1 y2 y3; DATALINES;
2y1 1.0 0.6 0.5
3y2 0.6 1.0 0.7
4y3 0.5 0.7 1.0
5; RUN;

Ejemplos

Este ejemplo muestra cómo simular 10,000 observaciones desde una cópula Gaussiana tridimensional utilizando una matriz de correlación de Pearson predefinida. Los resultados con márgenes uniformes se guardan en una tabla llamada 'mycas.simu_unif'.

Código SAS® / CAS Código en espera de validación por la comunidad
¡Copiado!
1 
2PROC CAS;
3ACTION copula.copulaSimulate / define={copulaType="NORMAL", corrTable={name="corr_data"}} ndraws=10000 seed=1234 outuniform={name="simu_unif", replace=true} var={"y1", "y2", "y3"};
4 
5RUN;
6 
7QUIT;
8 
Resultado :
Una tabla CAS llamada 'simu_unif' se crea en la caslib 'mycas'. Contiene 10,000 observaciones simuladas con márgenes uniformes para las variables y1, y2 e y3, reflejando la estructura de dependencia de la matriz de correlación proporcionada.

Este ejemplo simula 5,000 observaciones desde una cópula t de Student con 5 grados de libertad, lo que introduce una mayor dependencia en las colas en comparación con la cópula Gaussiana. Utiliza la misma matriz de correlación y genera un panel de gráficos de dispersión para visualizar las dependencias bivariadas de las variables simuladas.

Código SAS® / CAS Código en espera de validación por la comunidad
¡Copiado!
1 
2PROC CAS;
3ACTION copula.copulaSimulate / define={copulaType="T", df=5, corrTable={name="corr_data"}} ndraws=5000 seed=5678 outuniform={name="simu_t_unif", replace=true} var={"y1", "y2", "y3"} plot={scatter=true};
4 
5RUN;
6 
7QUIT;
8 
Resultado :
Una tabla CAS llamada 'simu_t_unif' se crea en la caslib 'mycas' con 5,000 observaciones. Además, se genera un gráfico de panel de dispersión que muestra las relaciones entre las variables simuladas. Se espera que este gráfico muestre una mayor concentración de puntos en las colas conjuntas, característica de la cópula t.

Este ejemplo primero simula datos con márgenes uniformes desde una cópula de Clayton, que es útil para modelar la dependencia en la cola inferior. Luego, utiliza una tabla de datos existente ('mycas.my_data') para transformar las simulaciones uniformes a los márgenes empíricos de los datos originales, guardando el resultado en 'mycas.simu_clayton_emp'.

Código SAS® / CAS Código en espera de validación por la comunidad
¡Copiado!
1 
2PROC CAS;
3ACTION copula.copulaSimulate / TABLE={name='my_data'} define={copulaType='CLAYTON', theta=2} ndraws=2000 seed=123 var={'y1','y2'} outempirical={name='simu_clayton_emp', replace=true};
4 
5RUN;
6 
7QUIT;
8 
Resultado :
Se crea una tabla CAS llamada 'simu_clayton_emp'. Las variables 'y1' e 'y2' en esta tabla siguen las distribuciones marginales empíricas de los datos originales en 'mycas.my_data', pero su estructura de dependencia conjunta está definida por la cópula de Clayton con un parámetro theta de 2.

FAQ

¿Cuál es el propósito de la acción `copulaSimulate` en SAS?
¿Qué parámetros se utilizan para definir el modelo de cópula para la simulación?
¿Es posible simular datos a partir de un modelo de cópula previamente guardado?
¿Qué tipos de cópulas soporta la acción `copulaSimulate`?
¿Cómo se especifica el número de observaciones a generar en la simulación?
¿Qué tablas de salida se pueden generar con `copulaSimulate`?
¿Para qué sirve el parámetro `seed`?

Escenarios asociados

Caso de uso
Simulación de Estrés de Cartera con Cópula t de Student

Una institución financiera necesita realizar pruebas de estrés en una cartera de inversiones compuesta por tres activos principales (Bonos, Acciones Tecnológicas, Materias Prima...

Caso de uso
Simulación Masiva de Reclamaciones (Prueba de Volumen)

Una compañía de seguros desea estimar las reservas de capital necesarias para el próximo año fiscal. Para obtener un intervalo de confianza preciso al 99.9%, necesitan simular u...

Caso de uso
Análisis de Fallos en Cadena con Márgenes Empíricos (Cópula Gumbel)

Un analista logístico estudia el riesgo de interrupción en la cadena de suministro. Los fallos en los proveedores suelen desencadenar fallos en la producción (dependencia asimét...