Publicado el :

Macro Desviación_Absoluta_Media

Este código también está disponible en: Deutsch English Français
En espera de validación
Esta macro calcula la desviación absoluta media, definida como la media de los valores absolutos de las desviaciones respecto a la media. El script utiliza procedimientos estándar (MEANS, TRANSPOSE) y pasos DATA para manipular las estructuras de datos. Depende de macros utilitarias externas (%ranname y %get_number_column_names) para la gestión de nombres de variables y archivos temporales.
Análisis de datos

Type : EXTERNE


Los datos se proporcionan a través del parámetro de macro &returns. El script espera datos numéricos que representen rendimientos.

1 Bloque de código
MACRO DEFINITION
Explicación :
Definición de la macro e inicialización de variables locales y nombres de tablas temporales a través de una macro externa %ranname. Identificación de columnas numéricas a través de %get_number_column_names.
¡Copiado!
1%macro Mean_Abs_Deviation(returns, dateColumn= DATE, outData= mean_abs_dev);
2...
3%let vars= %get_number_column_names(_table= &returns, _exclude= &dateColumn);
4...
2 Bloque de código
PROC MEANS Data
Explicación :
Cálculo de la media de los rendimientos para cada variable numérica del conjunto de datos de entrada.
¡Copiado!
1 
2PROC MEANS
3DATA= &returns mean noprint;
4OUTPUT out= &meanData;
5RUN;
6 
3 Bloque de código
DATA STEP Data
Explicación :
Limpieza de la tabla de estadísticas para conservar solo las medias, eliminando estadísticas innecesarias (STD, MIN, MAX).
¡Copiado!
1DATA &meanData;
2 SET &meanData;
3 drop _freq_ _type_ &dateColumn;
4 IF _stat_ = 'N' THEN delete;
5...
4 Bloque de código
PROC TRANSPOSE Data
Explicación :
Transposición de las tablas de medias y de los datos brutos (precios/rendimientos) para facilitar los cálculos vectoriales posteriormente.
¡Copiado!
1PROC TRANSPOSE DATA= &meanData out= &meanData;
2RUN;
3...
4PROC TRANSPOSE DATA= &returns(drop=&dateColumn) out= &price_t;
5RUN;
5 Bloque de código
DATA STEP Data
Explicación :
Fusión de los datos brutos con sus medias respectivas. Uso de un array (ARRAY) para calcular el valor absoluto de la diferencia entre cada observación y la media (Abs(Value - Mean)).
¡Copiado!
1DATA &merged;
2 MERGE &price_t &meanData;
3RUN;
4...
5DATA &merged(drop= &i mean);
6 SET &merged;
7 array z[*] &z;
8 DO &i= 1 to dim(z);
9 z[&i]= sum(z[&i], -(Mean));
10 z[&i]= abs(z[&i]);
11 END;
12RUN;
6 Bloque de código
PROC MEANS Data
Explicación :
Cálculo final de la media de las desviaciones absolutas (MAD) sobre los datos transformados.
¡Copiado!
1 
2PROC MEANS
3DATA= &merged mean noprint;
4OUTPUT out= &outData;
5RUN;
6 
7 Bloque de código
PROC DATASETS
Explicación :
Limpieza de las tablas temporales generadas durante la ejecución de la macro.
¡Copiado!
1PROC DATASETS lib= work nolist;
2delete &meandata &merged &price_t;
3RUN;
4QUIT;
Este material se proporciona "tal cual" por We Are Cas. No hay garantías, expresas o implícitas, en cuanto a la comerciabilidad o idoneidad para un propósito particular con respecto a los materiales o el código contenidos en este documento. We Are Cas no es responsable de los errores en este material tal como existe ahora o existirá, ni We Are Cas proporciona soporte técnico para el mismo.
Información de copyright : Copyright (c) 2015 by The Financial Risk Group, Cary, NC, USA.