R

Obtener la media móvil en R

La media móvil es una herramienta que se utiliza habitualmente en análisis de series temporales para eliminar las fluctuaciones a corto plazo. Lo que facilita la observación de las tendencias a largo plazo de la serie. Existen diferentes métodos para calcular la media móvil, siendo el más empleado es media móvil simple (Moving Average), en la que se utilizan la media aritmética de n datos. Otro método también utilizado de forma habitual es la media móvil ponderada (Weighted Moving Average), en el que se utiliza la media de n datos ponderados en base a un criterio definido previamente. Un caso particular de esta última es la media móvil exponencial (Exponential Moving Average) la cual es una media móvil ponderada exponencialmente. Veamos a continuación diferentes formas de obtener la media móvil en R.

La función filter() del paquete stats

Una de las formas más sencillas para obtener la media móvil en R es utilizar la función filter(). Función que aplica un filtro a cada uno de los elementos de la serie. Esto es, calcula el producto de los elementos alrededor de este por un filtro y los suma. Así, para obtener una media móvil simple solamente es necesario definir un filtro donde todos los elementos sean 1/n, siendo n el tamaño del filtro.

La función filter() tiene una propiedad llamada sides mediante la que se indica en qué posición se sitúan los valores obtenidos. Estos pueden ser en el centro del filtro, sides igual a 2, o desplazados en la posición final del filtro, valor sides igual a 1. El valor por defecto de esta propiedad es 2, por lo que es necesario indicar el valor 1 para obtener la serie desplazada.

Así se puede calcular una media móvil simple o ponderada tal como se muestra en el siguiente código.

x <- c(1, 1, 3, 2, 5, 6)

# Media móvil simple
n <- 3
filter(x, rep(1 / n, n), sides = 1)

# Media móvil ponderada
filter(x, c(0.25, 0.5, 0,25), sides = 1)

En donde se ha creado el filtro para la media móvil simple con la función rep() y la ponderada con un vector definido manualmente.

La función rollmean() del paquete zoo

Un método alternativo para obtener la media móvil simple es la función rollmean() del paquete zoo. Función con la que es posible obtener las medias, máximos, medianas y sumas de observaciones ordenadas.

El primer parámetro de esta función es la serie de datos y el segundo el tamaño de la venta. Por defecto ignora los elementos para los que no se puede calcular los valores, pero con la propiedad fill se puede indicar el valor que se puede asignar a estos. Otra propiedad interesante es align, con la que se puede seleccionar cómo se alinean los datos, a la izquierda, derecha o centro. Así para obtener la media móvil simple se puede usar el siguiente código.

x <- c(1, 1, 3, 2, 5, 6)

# Media móvil simple
rollmean(x, 3, fill = NA,  align = "right")

Conclusiones

En esta entrada se ha visto cómo se puede utilizar las funciones filter() y rollmean() para obtener las medias móviles en R. Ambos métodos permiten obtener de una forma fácil análisis que son muy útiles en múltiples aplicaciones.

Imagen de Antonio López en Pixabay

¿Te ha parecido de utilidad el contenido?

Daniel Rodríguez

Share
Published by
Daniel Rodríguez

Recent Posts

Curiosidad: El puerto 80 y los números de puerto

Durante décadas, cuando escribías una dirección web y pulsabas Intro, tu navegador hacía algo que…

4 días ago

Cómo Proyectar Cuándo Alcanzarás la Independencia Financiera

La independencia financiera es el punto en el que tus inversiones generan suficientes rendimientos para…

6 días ago

Cómo Elegir el Test de Hipótesis Correcto para tus Datos

Tienes dos grupos de datos y quieres saber si son estadísticamente distintos. O tienes una…

2 semanas ago

Tuplas vs Listas en Python: parecen lo mismo, pero no

A primera vista, tuplas y listas son casi idénticas. Ambas guardan colecciones ordenadas de elementos.…

2 semanas ago

Qué significa realmente “calidad de datos”

"Nuestros datos no tienen buena calidad." Escuchas esto constantemente en reuniones. El problema es que…

3 semanas ago

Cómo Detectar Pseudo-IDs y Data Leakage en el Constructor de Scorecards

El artículo Data Leakage en Credit Scoring explicó por qué este es el error más…

3 semanas ago

This website uses cookies.