stringtranslate.com

Criterio de Peirce

En estadística robusta , el criterio de Peirce es una regla para eliminar valores atípicos de los conjuntos de datos, que fue ideada por Benjamin Peirce .

Valores atípicos eliminados por el criterio de Peirce

El problema de los valores atípicos

En los conjuntos de datos que contienen mediciones con números reales, los valores atípicos sospechosos son los valores medidos que parecen estar fuera del grupo de la mayoría de los demás valores de datos. Los valores atípicos cambiarían en gran medida la estimación de la ubicación si se utilizara la media aritmética como estadística de resumen de la ubicación. El problema es que la media aritmética es muy sensible a la inclusión de valores atípicos; en terminología estadística, la media aritmética no es robusta .

En presencia de valores atípicos, el estadístico tiene dos opciones. En primer lugar, puede eliminar los valores atípicos sospechosos del conjunto de datos y luego utilizar la media aritmética para estimar el parámetro de ubicación. En segundo lugar, puede utilizar una estadística robusta, como la estadística de la mediana .

El criterio de Peirce es un procedimiento estadístico para eliminar valores atípicos.

Usos del criterio de Peirce

El estadístico e historiador de la estadística Stephen M. Stigler escribió lo siguiente sobre Benjamin Peirce : [1]

"En 1852 publicó la primera prueba de significación diseñada para indicarle a un investigador si un valor atípico debía ser rechazado (Peirce 1852, 1878). La prueba, basada en un argumento de tipo razón de verosimilitud , tuvo la distinción de producir un debate internacional sobre la conveniencia de tales acciones ( Anscombe , 1960, Rider, 1933, Stigler , 1973a)."

El criterio de Peirce se deriva de un análisis estadístico de la distribución gaussiana . A diferencia de otros criterios para eliminar valores atípicos, el método de Peirce se puede aplicar para identificar dos o más valores atípicos.

"Se propone determinar en una serie de observaciones el límite de error, más allá del cual todas las observaciones que impliquen un error tan grande pueden ser rechazadas, siempre que haya tantas como tales observaciones. El principio sobre el cual se propone resolver este problema es que las observaciones propuestas deben ser rechazadas cuando la probabilidad del sistema de errores obtenido al retenerlas sea menor que la del sistema de errores obtenido al rechazarlas multiplicada por la probabilidad de hacer tantas, y no más, observaciones anormales." [2]

Hawkins [3] proporciona una fórmula para el criterio.

El criterio de Peirce se utilizó durante décadas en el United States Coast Survey, [4] que pasó a llamarse United States Coast and Geodetic Survey en 1878:

"De 1852 a 1867 se desempeñó como director de las determinaciones de longitud del Servicio Costero de los Estados Unidos y de 1867 a 1874 como superintendente del Servicio. Durante estos años, su prueba fue empleada sistemáticamente por todos los empleados de esta, la organización estadística más activa y con inclinaciones matemáticas de la época". [1]

El criterio de Peirce fue discutido en el libro de William Chauvenet . [2]

Aplicaciones

Una aplicación del criterio de Peirce es la eliminación de puntos de datos deficientes de pares de observaciones para realizar una regresión entre las dos observaciones (por ejemplo, una regresión lineal). El criterio de Peirce no depende de los datos de observación (solo de las características de los datos de observación), por lo que es un proceso altamente repetible que se puede calcular independientemente de otros procesos. Esta característica hace que el criterio de Peirce para identificar valores atípicos sea ideal en aplicaciones informáticas porque se puede escribir como una función de llamada.

Intentos previos

En 1855, BA Gould intentó hacer que el criterio de Peirce fuera más fácil de aplicar creando tablas de valores que representaban los valores de las ecuaciones de Peirce. [5] Todavía existe una desconexión entre el algoritmo de Gould y la aplicación práctica del criterio de Peirce.

En 2003, SM Ross (Universidad de New Haven) volvió a presentar el algoritmo de Gould (ahora llamado "método de Peirce") con un nuevo conjunto de datos de ejemplo y una explicación del algoritmo. Esta metodología todavía se basa en el uso de tablas de consulta, que se han actualizado en este trabajo (tabla de criterios de Peirce). [6]

En 2008, el geólogo danés K. Thomsen intentó escribir un pseudocódigo. [7] Si bien este código proporcionó un marco para el algoritmo de Gould, los usuarios no lograron calcular los valores informados por Peirce o Gould.

En 2012, C. Dardis publicó el paquete R "Peirce" con varias metodologías (criterio de Peirce y método de Chauvenet) con comparaciones de eliminaciones de valores atípicos. Dardis y su colaborador Simon Muller implementaron con éxito el pseudocódigo de Thomsen en una función llamada "findx". El código se presenta en la sección de implementación de R a continuación. Las referencias para el paquete R están disponibles en línea [8] , así como una revisión inédita de los resultados del paquete R. [9]

En 2013, un nuevo examen del algoritmo de Gould y la utilización de módulos de programación avanzados de Python (es decir, numpy y scipy) hicieron posible calcular los valores umbral de error al cuadrado para identificar valores atípicos.

Implementación de Python

Para utilizar el criterio de Peirce, primero se deben comprender los valores de entrada y retorno. El análisis de regresión (o el ajuste de curvas a los datos) da como resultado errores residuales (o la diferencia entre la curva ajustada y los puntos de observación). Por lo tanto, cada punto de observación tiene un error residual asociado con una curva ajustada. Al tomar el cuadrado (es decir, el error residual elevado a la potencia dos), los errores residuales se expresan como valores positivos. Si el error al cuadrado es demasiado grande (es decir, debido a una observación deficiente), puede causar problemas con los parámetros de regresión (por ejemplo, pendiente e intersección para una curva lineal) recuperados del ajuste de la curva.

Fue idea de Peirce identificar estadísticamente lo que constituía un error como "demasiado grande" y, por lo tanto, se lo identificaba como un "valor atípico" que se podía eliminar de las observaciones para mejorar el ajuste entre las observaciones y una curva. K. Thomsen identificó que se necesitaban tres parámetros para realizar el cálculo: el número de pares de observaciones (N), el número de valores atípicos que se eliminarían (n) y el número de parámetros de regresión (por ejemplo, coeficientes) utilizados en el ajuste de la curva para obtener los residuos (m). El resultado final de este proceso es calcular un valor umbral (de error al cuadrado) por medio del cual las observaciones con un error al cuadrado menor que este umbral se deben mantener y las observaciones con un error al cuadrado mayor que este valor se deben eliminar (es decir, como un valor atípico).

Como el criterio de Peirce no toma como entrada observaciones, parámetros de ajuste ni errores residuales, la salida debe volver a asociarse con los datos. Si se toma el promedio de todos los errores al cuadrado (es decir, el error cuadrático medio) y se lo multiplica por el error cuadrático umbral (es decir, la salida de esta función), se obtendrá el valor umbral específico de los datos que se utiliza para identificar los valores atípicos.

El siguiente código Python devuelve valores de x al cuadrado para un N (primera columna) y n (fila superior) dados en la Tabla 1 (m = 1) y la Tabla 2 (m = 2) de Gould 1855. [5] Debido al método de iteración de Newton, las tablas de búsqueda, como N versus log Q (Tabla III en Gould, 1855) y x versus log R (Tabla III en Peirce, 1852 y Tabla IV en Gould, 1855) ya no son necesarias.

Código Python

#!/usr/bin/env python3 importar  numpy importar  scipy.specialdef  peirce_dev ( N :  int ,  n :  int ,  m :  int )  ->  float : """Criterio de Peirce  Devuelve la desviación del error umbral al cuadrado para la identificación de valores atípicos  utilizando el criterio de Peirce basado en la metodología de Gould.  Argumentos:  - int, número total de observaciones (N)  - int, número de valores atípicos que se eliminarán (n)  - int, número de incógnitas del modelo (m)  Devuelve:  float, umbral de error al cuadrado (x2)  """ # Asignar flotantes a las variables de entrada: N = float ( N ) n = float ( n ) m = float ( m )              # Verificar el número de observaciones:  si  N  >  1 :  # Calcular Q (raíz N de la ecuación de Gould B):  Q  =  ( n  **  ( n  /  N )  *  ( N  -  n )  **  (( N  -  n )  /  N ))  /  N  #  # Inicializar valores R (como flotantes)  r_new  =  1.0  r_old  =  0.0  # <- Necesario para solicitar el bucle while  #  # Iniciar la iteración para converger en R:  while  abs ( r_new  -  r_old )  >  ( N  *  2.0e-16 ):  # Calcular Lamda  # (raíz 1/(Nn) de la ecuación de Gould A'):  ​​ldiv  =  r_new  **  n  si  ldiv  ==  0 :  ldiv  =  1.0e-6  Lamda  =  (( Q  **  N )  /  ( ldiv ))  **  ( 1.0  /  ( N  -  n ))  # Calcular x al cuadrado (Ecuación de Gould C):  x2  =  1.0  +  ( N  -  m  -  n )  /  n  *  ( 1.0  -  Lamda  **  2.0 )  # Si x2 se vuelve negativo, devuelve 0:  if  x2  <  0 :  x2  =  0.0  r_old  =  r_new  else :  # Usa x al cuadrado para actualizar R (Ecuación de Gould D):  r_old  =  r_new  r_new  =  numpy . exp (( x2  -  1 )  /  2.0 )  *  scipy . special . erfc (  numpy . sqrt ( x2 )  /  numpy . sqrt ( 2.0 )  )  else :  x2  =  0.0  return  x2

Código Java

importar org.apache.commons.math3.special.Erf ; clase pública PierceCriterion {    /**  * Criterio de Peirce  * <p>  * Devuelve el cuadrado de la desviación del error umbral para la identificación de valores atípicos  * utilizando el criterio de Peirce basado en la metodología de Gould.  * <p>  * Argumentos:  * - int, número total de observaciones (N)  * - int, número de valores atípicos que se eliminarán (n)  * - int, número de incógnitas del modelo (m)  * Devuelve:  * float, umbral de error al cuadrado (x2)  **/ public static final double peirce_dev ( double N , double n , double m ) { // Verificar el número de observaciones: double x2 = 0.0 ; if ( N > 1 ) { // Calcular Q (raíz N de la ecuación B de Gould): double Q = ( Math . pow ( n , ( n / N )) * Math . pow (( N - n ), (( N - n ) / N ))) / N ;                                         // Inicializar valores R (como flotantes) double r_new = 1.0 ; double r_old = 0.0 ; // <-Necesario para solicitar el bucle while          // Iniciar iteración para converger en R: while ( Math . abs ( r_new - r_old ) > ( N * 2.0e-16 )) { // Calcular Lamda // (1 / (N - n) ésima raíz de la ecuación de Gould A'): ​​double ldiv = Math . pow ( r_new , n ); if ( ldiv == 0 ) { ldiv = 1.0e-6 ; } double Lamda = Math . pow (( Math . pow ( Q , N ) / ( ldiv )), ( 1.0 / ( N - n ))); // Calcular x -cuadrado(ecuación de Gould C): x2 = 1.0 + ( N - m - n ) / n * ( 1.0 - Math . pow ( Lamda , 2.0 )); // Si x2 se vuelve negativo, devuelve 0: if ( x2 < 0 ) { x2 = 0.0 ; r_old = r_new ; } else { // Usa x al cuadrado para actualizar R(ecuación de Gould D): r_old = r_new ; r_new = Math . exp (( x2 - 1 ) / 2.0 ) * Erf . erfc ( Math . sqrt ( x2 ) / Math . sqrt ( 2.0 )); } } } else { x2 = 0.0 ; } return x2 ; } }                                                                                                

Implementación de R

El código de Thomsen se ha escrito con éxito en la siguiente llamada de función, "findx" por C. Dardis y S. Muller en 2012, que devuelve la desviación máxima del error, . Para complementar el código Python presentado en la sección anterior, aquí también se presenta el equivalente en R de "peirce_dev", que devuelve la desviación máxima del error al cuadrado, . Estas dos funciones devuelven valores equivalentes, ya sea elevando al cuadrado el valor devuelto por la función "findx" o tomando la raíz cuadrada del valor devuelto por la función "peirce_dev". Se producen diferencias con el manejo de errores. Por ejemplo, la función "findx" devuelve NaN para datos no válidos, mientras que "peirce_dev" devuelve 0 (lo que permite que los cálculos continúen sin manejo adicional de valores NA). Además, la función "findx" no admite ningún manejo de errores cuando el número de valores atípicos potenciales aumenta hacia el número de observaciones (lanza un error de valor faltante y una advertencia de NaN).

Al igual que con la versión de Python, el error al cuadrado (es decir, ) devuelto por la función "peirce_dev" debe multiplicarse por el error cuadrático medio del ajuste del modelo para obtener el valor delta al cuadrado (es decir, Δ2). Utilice Δ2 para comparar los valores del error al cuadrado del ajuste del modelo. Cualquier par de observaciones con un error al cuadrado mayor que Δ2 se considera atípico y se puede eliminar del modelo. Se debe escribir un iterador para probar valores crecientes de n hasta que el número de valores atípicos identificados (comparando Δ2 con los errores al cuadrado del ajuste del modelo) sea menor que los supuestos (es decir, n de Peirce).

Código R

findx <- function ( N , k , m ) { # método de K. Thomsen (2008) # escrito por C. Dardis y S. Muller (2012) # Disponible en línea: https://r-forge.r-project.org/R/?group_id=1473 # # Definiciones de variables: # N :: número de observaciones # k :: número de valores atípicos potenciales que se eliminarán # m :: número de cantidades desconocidas # # Requiere la función de error complementaria, erfc: erfc <- function ( x ) 2 * pnorm ( x * sqrt ( 2 ), lower.tail = FALSE ) # x <- 1 if (( N - m - k ) <= 0 ) { return ( NaN ) print ( NaN ) } else { x <- min ( x , sqrt (( N - m ) / k ) - 1e-10 ) # # Logaritmo de la ecuación B de Gould: LnQN <- k * log ( k ) + ( N - k ) * log ( N - k ) - N * log ( N ) # # Ecuación de Gould D: R1 <- exp (( x ^ 2 - 1 ) / 2 ) * erfc ( x / sqrt ( 2 )) # # Ecuación de Gould A' resuelta para R con sustitución Lambda: R2 <- exp ( ( LnQN - 0.5 * ( N - k ) * log (( N - m - k * x ^ 2 ) / ( N - m - k                                                                                              )) ) / k ) # # Igualar las dos ecuaciones R: R1d <- x * R1 - sqrt ( 2 / pi / exp ( 1 )) R2d <- x * ( N - k ) / ( N - m - k * x ^ 2 ) * R2 # # Actualizar x: oldx <- x x <- oldx - ( R1 - R2 ) / ( R1d - R2d ) # # Bucle hasta la convergencia: while ( abs ( x - oldx ) >= N * 2e-16 ) { R1 <- exp (( x ^ 2 - 1 ) / 2 ) * erfc ( x / sqrt ( 2 )) R2 <- exp ( ( LnQN - 0.5 * ( N - k ) * log (( N - m - k * x ^ 2 ) / ( N - m - k )) ) / k ) R1d <- x * R1 - raíz cuadrada ( 2 / pi / exp ( 1 )) R2d <- x * ( N - k ) / ( N - m - k * x ^ 2 ) * R2 x antiguo <- x x <- x antiguo - ( R1 - R2 ) / ( R1d - R2d ) } }                                                                                                            devolver ( x ) }
peirce_dev <- function ( N , n , m ) { # N :: número total de observaciones # n :: número de valores atípicos que se eliminarán # m :: número de incógnitas del modelo (por ejemplo, parámetros de regresión) # # Verificar el número de observaciones: if ( N > 1 ) { # Calcular Q (raíz N de la ecuación de Gould B): Q = ( n ^ ( n / N ) * ( N - n ) ^ (( N - n ) / N )) / N # # Inicializar valores R: Rnew = 1.0 Rold = 0.0 # <- Necesario para solicitar el bucle while # while ( abs ( Rnew - Rold ) > ( N * 2.0e-16 )) { # Calcular Lamda (raíz 1/(Nn) de la ecuación de Gould A'): ​​ldiv = Rnew ^ n if ( ldiv == 0 ) { ldiv = 1.0e-6 } Lamda = (( Q ^ N ) / ( ldiv )) ^ ( 1.0 / ( N - n )) # # Calcular x al cuadrado (ecuación de Gould C): x2 = 1.0 + ( N - m - n ) / n * ( 1.0 - Lamda ^ 2.0 ) # # Si x2 se vuelve negativo, configúrelo igual a cero: if ( x2 < 0 ) { x2 = 0 Rold = Rnew } else { # # Usar x al cuadrado para actualizar R (ecuación de Gould D): # NOTA: la función de error (erfc) se reemplaza con pnorm (Rbasic): # source: # http://stat.ethz.ch/R-manual/R-patched/library/stats/html/Normal.html Rold = Rnew Rnew                                                                                   = exp (( x2 -1 ) / 2.0 ) * ( 2 * pnorm ( sqrt ( x2 ) / sqrt ( 2 ) * sqrt ( 2 ), inferior = FALSO )) } } } de lo contrario { x2 = 0 } x2 }            

Notas

  1. ^ ab SM Stigler, "Estadísticas matemáticas en los primeros tiempos", The Annals of Statistics, vol. 6, núm. 2, pág. 246, 1978. Disponible en línea: https://www.jstor.org/stable/2958876
  2. ^ ab Citado en la nota editorial de la página 516 de Collected Writings of Peirce (edición de 1982). La cita hace referencia a A Manual of Astronomy (2:558) de Chauvenet.
  3. ^ DM Hawkins (1980). "Breve historia temprana del rechazo de valores atípicos", Identificación de valores atípicos (Monografías sobre probabilidad y estadística aplicadas). Chapman & Hall, página 10.
  4. ^ Peirce (1878)
  5. ^ ab Gould, BA, "Sobre el criterio de Peirce para el rechazo de observaciones dudosas, con tablas para facilitar su aplicación", Astronomical Journal, número 83, vol. 4, núm. 11, págs. 81–87, 1855. DOI: 10.1086/100480.
  6. ^ Ross, SM, "Criterio de Peirce para la eliminación de datos experimentales sospechosos", Journal of Engineering Technology, vol. 2, núm. 2, págs. 1–12, 2003.
  7. ^ Thomsen, K., "Tema: Cálculo de tablas para su uso con el criterio de Peirce - en 1855 y 2008", The Math Forum @ Drexel, publicado el 5 de octubre de 2008. Consultado el 15 de julio de 2013.
  8. ^ C. Dardis, "Paquete: Peirce", R-forge, consultado en línea: https://r-forge.r-project.org/scm/viewvc.php/*checkout*/pkg/Peirce/Peirce-manual.pdf?root=peirce
  9. ^ C. Dardis, "El criterio de Peirce para el rechazo de valores atípicos no normales; definición del rango de aplicabilidad", Journal of Statistical Software (inédito). Disponible en línea: https://r-forge.r-project.org/scm/viewvc.php/*checkout*/pkg/Peirce/PeirceSub.pdf?root=peirce

Referencias