Tengo un seguimiento longitudinal de las grabaciones de la presión arterial. El valor en un determinado punto es menos predictivo que el promedio móvil (media de balanceo), por lo que me gustaría calcularlo. Los datos parecen Id como para calcular una nueva variable, llamada BLOODPRESSUREUPDATED. Esta variable debe ser el promedio móvil para BLOODPRESSURE y tener las siguientes características: Una media móvil es el valor actual más el valor anterior dividido por dos. Para la primera observación, BLOODPRESSUREUPDATED es sólo la PRESIÓN actual de BLOODPRESSURE. Si esto falta, BLOODPRESSUREUPDATED debe ser la media general. Los valores que faltan deben rellenarse con el valor anterior más cercano. He intentado lo siguiente: También he intentado rollaply y rollmeanr sin tener éxito. Id apreciar alguna ayuda. Cuando se calcula el promedio móvil, el número de elementos devueltos es menor que el número de filas de los datos, es decir, sólo se devuelven los elementos quotn-1quot. Así puede estar causando el problema aquí. ¿O se podría considerar añadir la columna de promedio móvil por separado, como: test2BLOODPRESSUREUPDATED lt - con (test2, c (media (BLOODPRESSURE, na. rm T), rollapply (BLOODPRESSURE, 2, mean, na. rm T))) ndash KFB Oct 5 14 a las 3:40 Gracias por el esfuerzo KFB. Desafortunadamente, no funcionó. También probé algunas versiones editadas. Quizás las funciones del zoológico no son adecuadas para esto. He codificado lo siguiente que funciona: test5 lt - test test5UM lt - rep (NA, nrow (test5)) test5first lt - duplicated (test5ID) for (i in 1: nrow Test5)) else test5 Pero es increíblemente lento. Ndash Adam Robinsson Oct 5 14 a las 7: 09Moviendo promedios en R A mi leal saber y entender, R no tiene una función incorporada para calcular promedios móviles. Usando la función de filtro, sin embargo, podemos escribir una función corta para medias móviles: Podemos usar la función en cualquier dato: mav (data), o mav (data, 11) si queremos especificar un número diferente de puntos de datos Que el predeterminado 5 trazado funciona como se espera: plot (mav (datos)). Además del número de puntos de datos sobre los cuales se puede hacer un promedio, también podemos cambiar el argumento de las funciones del filtro: sides2 usa ambos lados, sides1 usa sólo valores pasados. Comparta esta: Navegación posterior Navegación de comentarios Navegación de comentariosCómo calcular media móvil en lenguaje R y Python Una media móvil se utiliza para suavizar una serie de tiempo. La media móvil de cálculo es un caso típico de computación ordenada de datos. Su método básico de cálculo consiste en crear un subconjunto compuesto por N miembros consecutivos de una serie temporal, calcular el promedio del conjunto y desplazar el subconjunto hacia adelante uno por uno. El siguiente ejemplo le enseña cómo calcular el promedio móvil en el lenguaje R. Las ventas de marco de datos tienen dos campos: salesDate y cantidad de esta fecha. Requisito: calcular el promedio móvil en tres días. Los pasos de cálculo incluyen buscar el promedio de la cantidad de ventas del día anterior, el día actual y el día siguiente, y cambiar hacia adelante a lo largo de las fechas. Una parte de los datos fuente es la siguiente: filter (salesAmount / 3, rep (1, 3)) función de filtro se puede utilizar en el lenguaje R para calcular el promedio móvil, que produce código conciso. Este método es muy conveniente. A pesar de la conveniencia de la función de filtro. Es difícil de entender para los principiantes. Por ejemplo, salesAmount / 3 significa dividir el valor actual del campo Cantidad por tres, pero cuando se utiliza en la función de filtro, puede significar agregar los tres valores consecutivos juntos, luego dividir la suma por tres. 1,1,1 es el valor de la expresión rep (1,3), que se utiliza aquí para especificar el rango de búsqueda de datos. Además, debido a que ni el nombre ni los parámetros de la función de filtro contienen las palabras promedio y en movimiento, incluso muchos desarrolladores de lenguaje R no saben su uso para calcular el promedio móvil. De hecho, la función de filtro es un filtro lineal universal. Su uso es más que computar media móvil. Su referencia de función completa es filtro (x, filtro, método c (convolución, recursivo), lados 2, FALSO circular, init). Cualquier modificación del requisito hará que el código sea más difícil de entender. Por ejemplo, el código para calcular la media móvil del día actual y los dos días anteriores no puede escribirse como filtro (salesAmount / 3, rep (0,2)), tiene que serfilter (salesAmount / 3, rep (1,3 ), Lados 1). El lenguaje R puede calcular el promedio móvil, pero su código es más bien esquivo. También podemos usar Python, esProc y Perl para manejar este caso. Como lenguaje R, todos estos idiomas pueden realizar estadísticas y análisis de datos y calcular el promedio móvil. A continuación se presentan soluciones de Python y esProc brevemente. Pandas es la función de biblioteca de terceros de Pythons. Es potente en el procesamiento de datos estructurados con el tipo de datos básicos imitando Rs dataframe. En la actualidad la última versión es de 0,14. Su código para manejar este caso es el siguiente: El nombre de la función rollingmean es claro, incluso un desarrollador sin experiencia con pandas puede entenderlo fácilmente. El uso de las funciones es muy sencillo. Su primer parámetro es la secuencia que se calcula y el segundo parámetro es N, que es el número de días en buscar la media móvil. EsProc es bueno para expresar libremente la lógica de negocio con una sintaxis ágil. Sus expresiones de posición relativa pueden resolver problemas computacionales de ordenar datos fácilmente. El código es el siguiente: en el código representa un intervalo relativo, es decir, los tres días del día anterior, el día actual y el día siguiente. Se puede ver que el promedio móvil se puede calcular de forma clara y flexible usando un intervalo relativo. Si se requiere, por ejemplo, calcular la media móvil del día actual y los dos días anteriores, solo necesitamos cambiar el intervalo en esProc. Un intervalo relativo es un conjunto. EsProc también puede expresar un elemento de posición relativa. Por ejemplo, puede calcular la tasa de crecimiento de ventas con (Cantidad - Amount-1) convenientemente. En contraste, el código en lenguaje R y Python es difícil de entender.
Comments
Post a Comment