Error medio absoluto y error cuadrático medio en Arduino

El error cuadrático y el R cuadrado se usan como medidas para evaluar el desempeño de un estimador. Es decir cual es el error que comete al estimar un valor. Un ejemplo de estimador seria, por ejemplo, una regresión, ahora si no interesa saber lo bien que estima esa función podemos hacerlo a partir de direrente estimadores.

Para calcularlos se usan dos valores, el valor real y el valor devuelto por nuestro estimador (representado por la Y con «sombrerito»). El error para cada caso es el valor absoluto de la resta de ambos valores:

Error = |\hat{Y_{i}}-Y_{i}|

Se puede entender intuitivamente de forma muy simple, es la diferencia entre el valor que obtenido del estimador y el valor real. Se usa el valor absoluto para que cuando se sumen varios errores no se «cancelen». Si al estimar un valor se equivoca en 3 y al estimar otro en -3 el error total es 6 no 0.

Su calculo en Arduino seria:

double error = abs(y - ey);

Error medio absoluto

No podemos valorar un estimador solo por el error en una estimación, habrá que usar varias y calcular la media del error a lo que se le llama «error medio absoluto«, la suma del error de cada medida partido por el número de muestras:

MAE = \frac{1}{n} * \sum _{i=1}^{n}|\hat{Y_{i}}-Y_{i}|

Para implementarlo en Arduino vamos a usar el mismo «truco» que usamos para calcular diferentes estadisticos en Arduino. Usando la versión acumulada del calculo de la media para no tener que guardar todos los valores:

meanError = meanError + ((error - meanError)/n);

Error cuadrático medio

Otro valor usado es la media del error al cuadrado:

MSE = \frac{1}{n} * \sum _{i=1}^{n}(\hat{Y_{i}}-Y_{i})^{2}

Para implmentarla en Arduino vamos a usar el mismo «truco» que antes para el error medio:

 meanError2 = meanError2 + (((error*error) - meanError2)/n);

El problema de elevar los valores al cuadrado es que cuantificar su diferencia resulta poco intuitivo. Para hacer el valor más entendible se puede usar la raiz cuadrada del error cuadrático medio:

RMSE = \sqrt{MSE}

En código para Arduino:

sqrt(meanError2);

Todo esto lo puedes ver implementado en los ficheros error.h y error.cpp de SimpleStatisticsArduino

Un comentario en “Error medio absoluto y error cuadrático medio en Arduino

  1. Pingback: Regresión lineal segmentada en Arduino | Construyendo a Chispas

Los comentarios están cerrados.