Tuesday 28 November 2017

Moviendo El Promedio Usando Sas


El código de ejemplo de la ficha Código completo ilustra cómo calcular el promedio móvil de una variable a través de un conjunto de datos completo, sobre las últimas N observaciones en un conjunto de datos o sobre las últimas N observaciones dentro de un grupo BY. Estos ejemplos de archivos y ejemplos de código son proporcionados por SAS Institute Inc. como es sin garantía de ningún tipo, ya sea expresa o implícita, incluyendo pero no limitado a las garantías implícitas de comerciabilidad y aptitud para un propósito en particular. Los recipientes reconocen y aceptan que SAS Institute no será responsable de los daños y perjuicios derivados de su uso de este material. Además, el SAS Institute no proporcionará soporte para los materiales aquí contenidos. Estos ejemplos de archivos y ejemplos de código son proporcionados por SAS Institute Inc. como es sin garantía de ningún tipo, ya sea expresa o implícita, incluyendo pero no limitado a las garantías implícitas de comerciabilidad y aptitud para un propósito en particular. Los recipientes reconocen y aceptan que SAS Institute no será responsable de los daños y perjuicios derivados de su uso de este material. Además, el SAS Institute no proporcionará soporte para los materiales aquí contenidos. Calcule el promedio móvil de una variable a través de un conjunto de datos completo, sobre las últimas N observaciones en un conjunto de datos, o sobre las últimas N observaciones dentro de un grupo BY. Im un principiante de SAS y estoy curioso si la siguiente tarea se puede hacer mucho Más simple como es actualmente en mi cabeza. Tengo los siguientes metadatos (simplificados) en una tabla llamada userdatemoney: Usuario - Fecha - Dinero con varios usuarios y fechas para cada día calendario (durante los últimos 4 años). Los datos son ordenados por el usuario ASC y fecha ASC, datos de ejemplo se ve así: Ahora quiero calcular un promedio móvil de cinco días para el dinero. Comencé con el apprach bastante popular con la función lag () como esto: como ves, el problema con este método se produce si hay si el paso de datos se ejecuta en un nuevo usuario. Aron obtendría algunos valores rezagados de Anna, que por supuesto no debería suceder. Ahora mi pregunta: Estoy bastante seguro de que puede manejar el cambio de usuario mediante la adición de algunos campos adicionales como laggeduser y restablecer las variables N, Suma y Media si se nota un cambio, pero: ¿Puede hacerse esto de una manera más fácil Tal vez utilizando el Por Cláusula de cualquier manera Gracias por tus ideas y ayuda Creo que la manera más fácil es usar PROC EXPAND: Y como se mencionó en el comentario de Johns, es importante recordar acerca de los valores perdidos (y sobre las observaciones de principio y fin). He añadido la opción SETMISS al código, ya que dejó claro que desea poner a cero los valores faltantes, no ignorarlos (comportamiento predeterminado MOVAVE). Y si desea excluir las primeras 4 observaciones para cada usuario (ya que no tienen suficiente antecedente para calcular el promedio móvil 5), puede utilizar la opción TRIMLEFT 4 dentro de TRANSFORMOUT (). Respondió Dec 3 13 at 15: 29Compute una media móvil en SAS Este post fue amablemente contribuido por el DO Loop - ir allí para comentar y leer el mensaje completo. Una cuestión común en los foros de discusión de SAS es cómo calcular un promedio móvil en SAS. En este artículo se muestra cómo utilizar PROC EXPAND y contiene vínculos a artículos que utilizan el paso DATA o macros para calcular promedios móviles en SAS. En un post anterior, expliqué cómo definir un promedio móvil y proporcioné un ejemplo, que se muestra aquí. El gráfico es un diagrama de dispersión del precio de cierre mensual de las acciones de IBM durante un período de 20 años. Las tres curvas son promedios móviles. La curva 8220MA8221 es una media móvil de cinco puntos (arrastre). La curva 8220WMA8221 es una media móvil ponderada con pesos 1 a 5. Cuando se calcula la media móvil ponderada en el tiempo t, el valor yt tiene peso 5, el valor y t-1 tiene peso 4, el valor y t-2 tiene peso 3, etc.). La curva 8220EWMA8221 es una media móvil exponencialmente ponderada con factor de suavizado alfa 0.3. Este artículo muestra cómo utilizar el procedimiento EXPAND en el software SAS / ETS para calcular un promedio móvil simple, un promedio móvil ponderado y un promedio móvil ponderado exponencialmente en SAS. Para obtener una visión general de PROC EXPAND y sus múltiples capacidades, recomiendo leer el breve artículo 8220Stupid Human Tricks con PROC EXPAND8221 de David Cassell (2010). Como no todos los clientes de SAS tienen una licencia para el software SAS / ETS, hay enlaces al final de este artículo que muestran cómo calcular un promedio móvil simple en SAS mediante el paso DATA. Crear un ejemplo de serie temporal Antes de poder calcular un promedio móvil en SAS, necesita datos. La siguiente llamada a PROC SORT crea una serie de tiempo de ejemplo con 233 observaciones. No faltan valores. Los datos se ordenan por la variable de tiempo, T. La variable Y contiene el precio de cierre mensual de las acciones de IBM durante un período de 20 años. Calcular un promedio móvil en SAS mediante PROC EXPAND PROC EXPAND calcula muchos tipos de promedios móviles y otras estadísticas de balanceo, como desviaciones estándar de rodadura, correlaciones y sumas acumulativas de cuadrados. En el procedimiento, la instrucción ID identifica la variable de tiempo, T. Los datos deben ordenarse por la variable ID. La sentencia CONVERT especifica los nombres de las variables de entrada y salida. La opción TRANSFORMOUT especifica el método y los parámetros que se utilizan para calcular las estadísticas dinámicas. El ejemplo utiliza tres sentencias CONVERT: La primera especifica que MA es una variable de salida que se calcula como una media móvil (hacia atrás) que utiliza cinco valores de datos (k 5). La segunda sentencia CONVERT especifica que WMA es una variable de salida que es una media móvil ponderada. Los pesos se estandarizan automáticamente mediante el procedimiento, por lo que la fórmula es WMA (t) (5 yt 4 y t-1 3 y t-2 2 y t-3 1 y t-4) / 15. La tercera sentencia CONVERT especifica que EWMA es una variable de salida que es una media móvil exponencialmente ponderada con el parámetro 0.3. Observe la opción METHODNONE en la instrucción PROC EXPAND. De forma predeterminada, el procedimiento EXPAND ajusta las curvas cúbicas de spline a los valores no variables de las variables. Las opciones METHODNONE garantizan que los puntos de datos sin procesar se utilizan para calcular las medias móviles, en lugar de los valores interpolados. Visualización de promedios móviles Un uso importante de un promedio móvil consiste en superponer una curva en un diagrama de dispersión de los datos brutos. Esto le permite visualizar tendencias a corto plazo en los datos. La siguiente llamada a PROC SGPOT crea el gráfico en la parte superior de este artículo: Para mantener este artículo lo más simple posible, no he discutido cómo manejar los datos que faltan al calcular promedios móviles. Consulte la documentación de PROC EXPAND para obtener información sobre varios problemas relacionados con los datos que faltan. En particular, puede utilizar la opción METHOD para especificar cómo interpolar los valores faltantes. También puede utilizar opciones de transformación para controlar cómo se definen las medias móviles para los primeros puntos de datos. Crear un promedio móvil en SAS mediante el paso DATA Si no dispone de software SAS / ETS, las siguientes referencias muestran cómo utilizar el paso SAS DATA para calcular medias móviles simples utilizando la función LAG. La base de conocimiento SAS proporciona el artículo 8220Compute el promedio móvil de una variable.8221 Preoral Vora (2008) compara el paso DATA con el código PROC EXPAND en el papel 8220Easy Rolling Statistics con PROC EXPAND.8221 Ron Cody incluye una macro SAS en varios de sus libros. Por ejemplo, Cody8217s Colección de populares SAS tareas de programación y cómo lidiar con ellos proporciona una macro llamada movingAve. Puede descargar la macro como parte del 8220Example Code y Data8221 para el libro. El paso DATA, que está diseñado para manejar una observación a la vez, no es la mejor herramienta para los cálculos de series de tiempo, que naturalmente requieren múltiples observaciones (retardos y derivaciones). En un blog futuro, mostraré cómo escribir funciones SAS / IML que calculan medias móviles simples, ponderadas y exponencialmente ponderadas. El lenguaje de matriz en PROC IML es más fácil de trabajar con cálculos que requieren acceder a múltiples puntos de tiempo. ff / TheDoLoopdyIl2AUoC8zA / ff / TheDoLoopdqj6IDK7rITs / ff / TheDoLoopicbsotKEf1zY: e5B0sfO55lA: gIN9vFwOqvQ / ff / TheDoLoopicbsotKEf1zY: e5B0sfO55lA: VsGLiPBpWU / ff / TheDoLoopicbsotKEf1zY: e5B0sfO55lA: F7zBnMyn0Lo / ff / TheDoLoopdl6gmwiTKsz0 /

No comments:

Post a Comment