Cómo manejar valores atípicos
En este ejercicio, vas a manejar valores atípicos: puntos de datos tan distintos del resto que conviene tratarlos de forma diferente a los datos con aspecto "normal". Usarás el resultado del ejercicio anterior (el porcentaje de cambio a lo largo del tiempo) para detectar los valores atípicos. Primero escribirás una función que reemplace los valores atípicos por la mediana de toda la serie temporal.
Este ejercicio forma parte del curso
Machine Learning para datos de series temporales en Python
Instrucciones del ejercicio
- Define una función que reciba una serie de entrada y haga lo siguiente:
- Calcula el valor absoluto de la distancia de cada punto de datos a la media de la serie y crea una máscara booleana para los puntos que estén a tres veces la desviación estándar de la media.
- Usa esta máscara booleana para reemplazar los valores atípicos por la mediana de toda la serie.
- Aplica esta función a tus datos y visualiza los resultados usando el código proporcionado.
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
def replace_outliers(series):
# Calculate the absolute difference of each timepoint from the series mean
absolute_differences_from_mean = np.abs(series - np.mean(series))
# Calculate a mask for the differences that are > 3 standard deviations from zero
this_mask = absolute_differences_from_mean > (np.____(series) * ____)
# Replace these values with the median accross the data
series[this_mask] = np.____(series)
return series
# Apply your preprocessing function to the timeseries and plot the results
prices_perc = prices_perc.____
prices_perc.loc["2014":"2015"].plot()
plt.show()