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.
Explicación : Cálculo de la media de los rendimientos para cada variable numérica del conjunto de datos de entrada.
¡Copiado!
proc means data= &returns mean noprint;
output out= &meanData;
run;
1
2
PROC MEANS
3
DATA= &returns mean noprint;
4
OUTPUT out= &meanData;
5
RUN;
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!
data &meanData;
set &meanData;
drop _freq_ _type_ &dateColumn;
if _stat_ = 'N' then delete;
...
1
DATA &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.
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!
data &merged;
merge &price_t &meanData;
run;
...
data &merged(drop= &i mean);
set &merged;
array z[*] &z;
do &i= 1 to dim(z);
z[&i]= sum(z[&i], -(Mean));
z[&i]= abs(z[&i]);
end;
run;
1
DATA &merged;
2
MERGE &price_t &meanData;
3
RUN;
4
...
5
DATA &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;
12
RUN;
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!
proc means data= &merged mean noprint;
output out= &outData;
run;
1
2
PROC MEANS
3
DATA= &merged mean noprint;
4
OUTPUT out= &outData;
5
RUN;
6
7 Bloque de código
PROC DATASETS
Explicación : Limpieza de las tablas temporales generadas durante la ejecución de la macro.
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.
SAS y todos los demás nombres de productos o servicios de SAS Institute Inc. son marcas registradas o marcas comerciales de SAS Institute Inc. en los EE. UU. y otros países. ® indica registro en los EE. UU. WeAreCAS es un sitio comunitario independiente y no está afiliado a SAS Institute Inc.
Este sitio utiliza cookies técnicas y analíticas para mejorar su experiencia.
Saber más.