stringtranslate.com

El criterio de Peirce

En estadística robusta , el criterio de Peirce es una regla para eliminar valores atípicos de 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 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 el promedio aritmético como estadística resumida 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. Primero, el estadístico puede eliminar los valores atípicos sospechosos del conjunto de datos y luego usar la media aritmética para estimar el parámetro de ubicación. En segundo lugar, el estadístico puede utilizar una estadística sólida, 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 significancia diseñada para decirle a un investigador si un valor atípico debería ser rechazado (Peirce 1852, 1878). La prueba, basada en un argumento del tipo de razón de verosimilitud , tuvo la distinción de producir un debate internacional sobre la sabiduría 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 implican 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 rechazarse cuando la probabilidad del sistema de errores obtenido al retenerlas es 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 determinaciones de longitud del US Coast Survey y de 1867 a 1874 como superintendente del Survey. Durante estos años, su prueba fue empleada consistentemente por todos los empleados de este, el más activo y matemáticamente organización estadística inclinada 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 eliminar 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), lo que lo convierte en un proceso altamente repetible que puede calcularse 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 puede escribirse como una función de llamada.

Intentos anteriores

En 1855, BA Gould intentó hacer que el criterio de Peirce fuera más fácil de aplicar creando tablas de valores que representaban 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 elaboración del algoritmo. Esta metodología todavía se basa en el uso de tablas de consulta, que han sido actualizadas 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ó cierto marco para el algoritmo de Gould, los usuarios no lograron calcular los valores informados por Peirce o Gould.

En 2012, C. Dardis lanzó el paquete R "Peirce" con varias metodologías (criterio de Peirce y método Chauvenet) con comparaciones de eliminaciones de valores atípicos. Dardis y su colega 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 no publicada de los resultados del paquete R. [9]

En 2013, un reexamen 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 de umbral de error cuadrático 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 tanto, cada punto de observación tiene un error residual asociado a una curva ajustada. Al tomar el cuadrado (es decir, el error residual elevado a la potencia de dos), los errores residuales se expresan como valores positivos. Si el error al cuadrado es demasiado grande (es decir, debido a una mala observación), 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, identificarlo como un "valor atípico" que podría eliminarse 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án (n) y el número de parámetros de regresión (por ejemplo, coeficientes) utilizados en la curva. apropiado para obtener los residuos (m). El resultado final de este proceso es calcular un valor umbral (de error al cuadrado) mediante el cual las observaciones con un error al cuadrado menor que este umbral deben mantenerse y las observaciones con un error al cuadrado mayor que este valor deben eliminarse (es decir, como un valor atípico). .

Debido a que el criterio de Peirce no toma observaciones, parámetros de ajuste o errores residuales como entrada, la salida debe volver a asociarse con los datos. Tomar el promedio de todos los errores cuadráticos (es decir, el error cuadrático medio) y multiplicarlo por el error cuadrático umbral (es decir, el resultado de esta función) dará como resultado el valor umbral específico de los datos utilizado para identificar valores atípicos.

El siguiente código Python devuelve valores de x al cuadrado para una N (primera columna) y una n (fila superior) dadas en la Tabla 1 (m = 1) y la Tabla 2 (m = 2) de Gould 1855. [5] Debido a Newton -método de iteración, las tablas de consulta, 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 pitón

#!/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 de error del 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 = flotador ( n ) m = flotador ( m )              # Verifique el número de observaciones:  si  N  >  1 :  # Calcule Q (raíz enésima de la ecuación B de Gould):  Q  =  ( n  **  ( n  /  N )  *  ( N  -  n )  **  (( N  -  n )  /  N ))  /  N  #  # Inicializa los valores de R (como flotantes)  r_new  =  1.0  r_old  =  0.0  # <- Necesario para solicitar el bucle while  #  # Inicia la iteración para converger en R:  while  abs ( r_new  -  r_old )  >  ( N  *  2.0e- 16 ):  # Calcular Lamda  # (1/(Nn)ésima raíz 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:  si  x2  <  0 :  x2  =  0.0  r_old  =  r_new  else :  # Use x-cuadrado para actualizar R (ecuación D de Gould):  r_old  =  r_new  r_new  =  numpy . exp (( x2  -  1 )  /  2.0 )  *  scipy . especial . erfc (  numpy.sqrt ( x2 ) /numpy.sqrt ( 2.0 ) ) más : x2 = 0.0 devolver x2         

código java

importar org.apache.commons.math3.special.Erf ; clase pública PierceCriterion {    /**  * Criterio de Peirce  * <p>  * Devuelve la desviación de error del umbral al cuadrado 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, error al cuadrado umbral (x2)  **/ public static final double peirce_dev ( double N , double n , double m ) { // Verifique el número de observaciones: double x2 = 0.0 ; if ( N > 1 ) { // Calcular Q (raíz enésima de la ecuación B de Gould): doble Q = ( Math . pow ( n , ( n / N )) * Math . pow (( N - n ), ( ( norte - norte ) / norte ))) / norte ;                                         // Inicializa los valores R (como flotantes) double r_new = 1.0 ; doble r_old = 0,0 ; // <-Necesario para solicitar el bucle while          // Iniciar la 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 Gould ecuación A'): ​​doble ldiv = Math . poder ( r_nuevo , n ); si ( ldiv == 0 ) { ldiv = 1.0e-6 ; } doble Lamda = Matemáticas . pow (( Math . pow ( Q , N ) / ( ldiv )), ( 1.0 / ( N - n ))); // Calcular x al cuadrado (ecuación C de Gould): 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_viejo = r_nuevo ; } else { // Usa x cuadrado para actualizar R (ecuación D de Gould): r_old = r_new ; r_new = Matemáticas . exp (( x2 - 1 ) / 2.0 ) * Erf . erfc ( Math . sqrt ( x2 ) / Math . sqrt ( 2.0 )); } } } más { x2 = 0.0 ; } devolver x2 ; } }                                                                                                

implementación de R

El código de Thomsen se escribió 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 de error, . Para complementar el código Python presentado en la sección anterior, también se presenta aquí el equivalente R de "peirce_dev", que devuelve la desviación de error máxima al cuadrado, . Estas dos funciones devuelven valores equivalentes 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". Las diferencias ocurren 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 posibles valores atípicos aumenta hacia el número de observaciones (arroja un error de valor faltante y una advertencia de NaN).

Al igual que con la versión de Python, el error cuadrático (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 cuadrático (es decir, Δ2). Utilice Δ2 para comparar los valores de error cuadrático del ajuste del modelo. Cualquier par de observaciones con un error cuadrático mayor que Δ2 se considera atípico y puede eliminarse 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 cuadrados de 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 posibles valores atípicos 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 ) # # Log 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 ) # # Iguala 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 - sqrt ( 2 / pi / exp ( 1 )) R2d <- x * ( N - k ) / ( N - m - k * x ^ 2 ) * R2 viejox <- x x <- viejox - ( 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 (p. ej., parámetros de regresión) # # Verifique el número de observaciones : if ( N > 1 ) { # Calcular Q (raíz enésima de la ecuación B de Gould): Q = ( n ^ ( n / N ) * ( N - n ) ^ (( N - n ) / N )) / N # # Inicializar valores de R: Rnew = 1.0 Rold = 0.0 # <- Necesario para solicitar el bucle while # while ( abs ( Rnew - Rold ) > ( N * 2.0e-16 )) { # Calcular raíz Lamda (1/(Nn)ésima de la ecuación A' de Gould): ldiv = Rnew ^ n if ( ldiv == 0 ) { ldiv = 1.0e-6 } Lamda = (( Q ^ N ) / ( ldiv )) ^ ( 1.0 / ( N - n )) # # Calcular x al cuadrado (ecuación C de Gould): x2 = 1,0 + ( N - m - n ) / n * ( 1,0 - Lamda ^ 2,0 ) # # Si x2 se vuelve negativo, igual a cero: si ( x2 < 0 ) { x2 = 0 Rold = Rnew } else { # # Utilice x-cuadrado para actualizar R (ecuación D de Gould): # NOTA: la función de error (erfc) se reemplaza con pnorm (Rbasic): # fuente: # 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 )) } } } else { x2 = 0 } x2 }            

Notas

  1. ^ ab SM Stigler, "Estadísticas matemáticas en los primeros estados", 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 cita Un manual de astronomía (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 estadística y probabilidad aplicadas). Chapman y 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 a 12, 2003.
  7. ^ Thomsen, K., "Tema: Computación de tablas para usar 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, "Criterio de Peirce para el rechazo de valores atípicos anormales; 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