¿Hay alguna manera de automatizar/escribir el proceso Winsor de filtrado de valores atípicos?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />| ¿Hay alguna manera de automatizar/escribir el proceso Winsor de filtrado de valores atípicos? Encontré los dos complementos de Brady, pero esos no excluyen las filas atípicas, solo pertenecen a la mejora de la función Resumen. |
Complemento de imputación
Complemento de resumen extendido
Re: ¿Hay alguna manera de automatizar/escribir el proceso Winsor de filtrado de valores atípicos?Gracias, eso tiene mucho sentido. Supongo que no entendí bien la parte del resumen de AMC que se refiere a Huber... Pensé que se referían a la estimación M de Huber, pero estoy de acuerdo en que es simplemente sorprendente.
Gracias por ese enlace. Es útil.
Re: ¿Hay alguna manera de automatizar/escribir el proceso Winsor de filtrado de valores atípicos?Probablemente valdría la pena leer algunos artículos de wiki.La winsorización es solo un proceso, similar al recorte.
Wikipedia:
Winsorising o Winsorización es la transformación de las estadísticas al limitar los valores extremos en los datos estadísticos para reducir el efecto de valores atípicos posiblemente espurios.
Solo necesitamos un percentil, aquí usamos 1.5sigma.
En el artículo al que se hace referencia, usan la mediana para winsorizar, luego usaron los datos winsorizados para predecir mejor el centro y la dispersión.Luego vuelven a winsorizar para predecir aún mejor el centro y la propagación.Aquí hacemos winsorize para obtener una media/desviación estándar robusta y precisa.
La constante de sintonía se utiliza en las estimaciones M de Huber.Este proceso es lo contrario, en su lugar, utiliza estimaciones M para generar una media/desviación estándar sólida y precisa para luego winsorizar los datos.Cuando K se acerca al infinito, la media estimada M = media.Cuando K se aproxima a 0, la estimación M media = mediana.
Puedes ver la página 16 de esta presentación http://www.bauer.uh.edu/rsusmel/phd/ec1-25.pdf
Entonces, para responder a su pregunta, la constante de sintonización K no se usa porque no usamos las estimaciones M de Huber.
Re: ¿Hay alguna manera de automatizar/escribir el proceso Winsor de filtrado de valores atípicos?Para el ejemplo del resumen técnico de AMC en el que se basa el código de este hilo, ¿cuál es la constante de ajuste k?He visto las ecuaciones teóricas que se relacionan con la constante de afinación, pero no he visto nada que describa windsorizing +/- n*sigma, y sigma_new = x * stddev(datos), donde (supongo que) n y x están relacionados con la constante de sintonía.
Gracias,
Miguel
Re: ¿Hay alguna manera de automatizar/escribir el proceso Winsor de filtrado de valores atípicos?Esencialmente, lo que estamos haciendo es dar cuenta de las sobreestimaciones de la mediana/MAD.En nuestro conjunto de datos de ejemplo, usar la mediana/MAD en el proceso de winzorización ajusta demasiado el punto atípico.
x_orig = [ 4.5 , 4.9 , 5.6 , 4.2 , 6.2 , 5.2 , 9.9 ] ;
estimaciones medianas y locas:
media = 5,2; y sigma = 1,05;
el uso de estas estimaciones cambia los datos a:
x_primerpaso = [ 4.5 , 4.9 , 5.6 , 4.2 , 6.2 , 5.2 , 6.775 ] ;
Estos datos nos dan una mejor aproximación de nuestra media y sigma:
media ajustada = 5,34; sigma = 1,04;
Si usamos las mejores estimaciones para winzorizar el conjunto de datos, esto conduciría a:
x_segundopaso = [ 4.5 , 4.9 , 5.6 , 4.2 , 6.2 , 5.2 , 6.905 ] ;
Sin embargo, si usamos x en lugar de x_orig, el código no encontrará el punto atípico 9.9 para ajustarlo en consecuencia, b/c 6.775 no es un atípico cuando la media = 5.34 y sigma = 1.04.
de este modo:
x_segundopaso = [ 4.5 , 4.9 , 5.6 , 4.2 , 6.2 , 5.2 , 6.775 ] ;
media y sigma serán lo mismo:
media ajustada = 5,34; sigma = 1,04;
sigma - sigma_antiguo = 0
y nuestra convergencia creerá que está completa.
tl:dr: si está tratando de encontrar el punto cero óptimo, su código debe ser lo suficientemente robusto como para ejecutarse en ambas direcciones.
Re: ¿Hay alguna manera de automatizar/escribir el proceso Winsor de filtrado de valores atípicos?No entiendo exactamente el x=x_orig.
Parece que esto crearía un ciclo infinito; pero funciona, así que no puedo discutir con eso.
¡gracias!
Re: ¿Hay alguna manera de automatizar/escribir el proceso Winsor de filtrado de valores atípicos?¡Este código lo hizo por mí!¡¡¡Gracias!!!
Re: ¿Hay alguna manera de automatizar/escribir el proceso Winsor de filtrado de valores atípicos?¡Gracias!
Re: ¿Hay alguna manera de automatizar/escribir el proceso Winsor de filtrado de valores atípicos?Sí Sí.Querríamos ejecutar el proceso de winsorización en el conjunto de datos original con la media ajustada y el cambio de sigma.Agregar x=xorig es correcto.Como dije, lo codifiqué rápidamente.
En cuanto a hacer coincidir el papel:
Dado que el conjunto de datos tiene solo 1 grado de libertad (qué valor para aproximar el valor atípico), tanto sigma como la media se fijan en función de la winsorización.Dado este hecho, no hay forma de obtener una media de 5,36 Y sigma de 1,15. 5,386 y 1,145 redondeados al segundo dígito darían 5,39 y 1,15. Por lo tanto, m Lo mejor que puedo suponer es que se trata de un simple error tipográfico, y no de un matemático error.Dada la corrección del artículo hasta ese momento, y que proviene del Comité de métodos analíticos de la Royal Society of Chemistry, les daré el beneficio de la duda.
Re: ¿Hay alguna manera de automatizar/escribir el proceso Winsor de filtrado de valores atípicos?Eso es esencialmente lo que tenía, aunque tenía todo en formato de matriz para poder inspeccionar los datos de cada iteración. El tuyo es más limpio, así que espero que no te importe que lo haya modificado un poco. Reemplacé el ciclo for() con la función Loc, ya que podría ser más eficiente en caso de que alguien más esté usando esto para grandes conjuntos de datos. (Descargo de responsabilidad, he usado esta función solo una o dos veces... espero que sea la elección correcta).
Cuando ejecuté su función y la mía, descubrí que convergía en 1 iteración con una media de 5,339 y un sigma de 1,044. El documento parece indicar que tomaría varias iteraciones. Pensé que se referían incluso a este conjunto de datos, pero tal vez estaban generalizando. Continúan diciendo que la media estimada de Huber es 5,36 y sigma es 1,15. No pude reproducir esa media estimada, pero cuando reemplacé los datos 'x' con x_orig (datos originales) en cada iteración, obtuve una media de 5,386 y un sigma de 1,1459. Puede ver la línea en el código a continuación para habilitar / deshabilitar esto. Esto realmente no se siente como la forma correcta de iterar algo, pero no estoy realmente seguro de dónde me equivoqué al poder calcular esto. Perdonen los errores de dígitos sig, pero quería mostrar más sobre los contenidos variables aquí.
Del papel:

los nombres predeterminados aquí ( 1 ) ;
borrar registro () ;
//Conjunto de datos en papel
x_orig = [ 4.5 , 4.9 , 5.6 , 4.2 , 6.2 , 5.2 , 9.9 ] ;
X = [ 4.5 , 4.9 , 5.6 , 4.2 , 6.2 , 5.2 , 9.9 ] ;
//Determinar mediana y robusta Sigma (MAD)
significar = cuantil ( .5 , X ) ;
y = Abdominales ( X - significar ) ;
ENOJADO = cuantil ( .5 , y ) ;
sigma = ENOJADO * 1.5 ;
sigmaold = 0 ;
//Converger
Mientras ( Abdominales ( sigma - sigmaold ) > 2e-16 ,
//x = origen_x; // intenta activar/desactivar esto
X [ ubicación ( X > ( significar + 1.5 * sigma ))] = significar + 1.5 * sigma ;
X [ ubicación ( X < ( significar - 1.5 * sigma ))] = significar - 1.5 * sigma ;
malo viejo = significar ;
sigmaold = sigma ;
significar = Significar ( X ) ;
sigma = 1.134 * Desv estándar ( X ) ;
espectáculo ( significar , sigma ) ;
) ;
Gracias,
Miguel
Re: ¿Hay alguna manera de automatizar/escribir el proceso Winsor de filtrado de valores atípicos?CHCampos : para responder a su pregunta original: Sí, hay una manera de automatizar el filtrado de valores atípicos.De hecho, hay un número muy grande (si no infinito) de formas.
El msharp script (media de datos original de 5,785 con JMP Robust Mean/Huber Center de 5,735) produce una media Winsorizada de 5,339. Si realmente quiere ir por la madriguera del conejo, un estimador W de Hampel de un paso 12A (una media sólida recomendada por Andrews, DF, et. al (1972); Estimaciones Robustas de Ubicación: Relevamiento y Avances ; Princeton University Press) arroja 5,256 con los mismos datos.
¿Es preocupante que todas estas medidas de ubicación sean tan diferentes en los mismos datos?No precisamente.Como dijo San Gregorio el Hacedor de Milagros: "Lo que es diferente no es lo mismo".Los investigadores reflexivos no utilizarán la media sin al menos alguna forma de procedimiento de rechazo razonable.Sería genial si ese procedimiento razonable se implementara fácilmente en una función JMP que pudiera llamarse desde un script, pero sin que eso sea una opción, el script Winsorizing de msharp sería una excelente alternativa, siempre que identifique el método utilizado y también preste atención a las advertencias anteriores de "mal gusto y malas prácticas".
¡Que tengas un día robusto!
Re: ¿Hay alguna manera de automatizar/escribir el proceso Winsor de filtrado de valores atípicos?Aquí está mi código rápido siguiendo el papel exacto:
//Conjunto de datos en papel
x = [4.5,4.9,5.6,4.2,6.2,5.2,9.9];
//Determinar mediana y robusta Sigma (MAD)
media = cuantil(.5,x);
y = abs(x - media);
MAD = cuantil(.5,y);
sigma = DAM*1,5;
sigmaantiguo = 0;
//Converger
while(abs(sigma - sigmaold) > 2e-16,
para(i=1,i<=nfilas(x),i++,
si(x
X = media-1.5*sigma
);
si(x >media+1.5*sigma,
X = media+1.5*sigma
);
);
medioantiguo = medio;
sigmaantiguo = sigma;
media = media(x);
sigma = 1,134*desv estándar(x);
);
//Evaluar
imprimir(x);
Re: ¿Hay alguna manera de automatizar/escribir el proceso Winsor de filtrado de valores atípicos?Seguí el método Huber descrito en el documento de AMC al que se vincula msharp.Scripting no fue tan malo, la parte difícil es saber si he interpretado el algoritmo correctamente.Parecería que a medida que itero (digamos N veces) y actualizo la matriz de datos con un nuevo valor de sombrero medio +/- 1.5 x sigma-hat, que para la i-ésima iteración usaría la matriz de datos de i-1 pero esto no funciona para mi Obtengo mejores resultados al actualizar siempre los datos originales (i = 0) mientras uso el sombrero medio y el sombrero sigma actualizados.Mejores resultados pero parece incorrecto. ¿Alguien tiene experiencia implementando este algoritmo?
Por cierto, según esta página ( El informe de distribución ), la media sólida/desviación estándar de JMP en la plataforma de distribución está utilizando la estimación M de Huber, pero no estoy seguro de cómo se están explicando. Mi script produce resultados similares en algunos casos y no tan similares en otros. Pero como dije anteriormente, no estoy seguro de si lo estoy haciendo correctamente.
Gracias,
Miguel
Re: ¿Hay alguna manera de automatizar/escribir el proceso Winsor de filtrado de valores atípicos?Hay muchas formas de calcular la media robusta y la desviación estándar robusta.El artículo al que hago referencia muestra cómo calcular la mediana (por definición, es una media robusta) y MAD (desviación estándar robusta).Estos son los más básicos.Sin embargo, cualquier métrica que calcule el centro y la dispersión y que sea resistente al cambio debido a datos atípicos puede considerarse una media robusta o una desviación estándar robusta y ciertamente hay algoritmos más complejos que el enfoque de la mediana/MAD.
La razón por la que elegí compartir ese artículo es porque muestra los conceptos básicos del proceso Winsorizing utilizando la mediana/MAD fácil de entender.Si tuviera que programar el proceso desde cero, comenzaría aquí.
No soy un programador de JMP, así que no sé el método real que usan; pero dudo que usen el método descrito en ese artículo.Ese documento realmente es útil para comprender los conceptos básicos.El documento en sí establece la mayoría de las fallas, una que se destaca más para un programador es la convergencia lenta.
Re: ¿Hay alguna manera de automatizar/escribir el proceso Winsor de filtrado de valores atípicos?A CHCampos : Entiendo mejor ahora.¡Ese no es el ÚNICO procedimiento robusto que no es fácilmente programable!Las medias robustas y la desviación estándar robusta de la plataforma de distribución tampoco son funciones disponibles para JSL.Por favor vea la Lista de Navidad del año pasado para Santa...
A msharp : Cuando le pedí a JMP una referencia para la media robusta y la desviación estándar robusta, el desarrollador me dirigió a Huber, PJ (1973); "Regresión robusta: asintóticas, conjeturas y Monte Carlo"; The Annals of Statistics, Vol 1, No. 5, pp799-821, que detalla procedimientos sustancialmente diferentes de la referencia que citó.Peter Huber es un titán de Robust Statistics, y sus libros más modernos sobre el tema (Robust Statistics 2004) cantan las alabanzas de las estimaciones M (que también se detalla en el artículo de Annals), por lo que no sé si JMP realmente está haciendo Winsorizing. haces referencia.¿Es realmente?
Las estimaciones de Huber M no parecen demasiado divertidas para escribir desde cero.De ahí la solicitud de la Lista de Navidad.
Re: ¿Hay alguna manera de automatizar/escribir el proceso Winsor de filtrado de valores atípicos?En general, se considera de mal gusto y mala práctica filtrar valores atípicos sin conocer la causa.Incluso cuando se conoce una causa, el uso de un criterio de filtrado que no se aplica a su conjunto de datos introducirá aún más errores que simplemente dejar los valores atípicos en el conjunto de datos.Se deben hacer preguntas importantes, ¿los datos son simétricos? sesgado? ¿normal? ¿Hay algún enmascaramiento?¿Su conjunto de datos es realmente dos distribuciones diferentes?¿Sería mejor dividirlos?Es imposible conocer realmente sus datos sin mirarlos.Automatizar el filtrado de valores atípicos conducirá a conclusiones falsas.Una práctica tan mala como "p-hacking".
Por supuesto, esto no significa que no haya razones para automatizar un proceso.Por ejemplo, usar un criterio de filtrado de valores atípicos para automatizar la actualización de los límites de control en un gráfico de control donde los datos se visualizan/supervisan a lo largo del tiempo.
Si desea automatizarlo, deberá escribir el script.Puedes ver http://www.rsc.org/images/robust-statistics-technical-brief-6_tcm18-214850.pdf para obtener más información sobre lo que realmente está haciendo el Método Huber.Espero que esto ayude.
Re: ¿Hay alguna manera de automatizar/escribir el proceso Winsor de filtrado de valores atípicos?La mayoría de las acciones en JMP se pueden programar yendo al triángulo rojo y vaya a GUIÓN > COPIAR GUIÓN
De esta manera, puede unir estos fragmentos de secuencias de comandos en un programa automatizado más grande.
Esto es cierto para cada acción/función de JMP, etc.... con la EXCEPCIÓN de la función Robust Outlier Filter en:
COL > UTILIDADES DE MODELADO > EXPLORAR OTROS
Quiero automatizar el filtro Huber con K=3 en un conjunto dado de parámetros.Haré esto una y otra vez.
Quiero automatizarlo para aliviar mi carga de trabajo.
Re: ¿Hay alguna manera de automatizar/escribir el proceso Winsor de filtrado de valores atípicos?Tu pregunta me confunde.Winsorising outliers generalmente se define como establecer los valores extremos en un percentil específico, sin excluirlos.Es análogo al recorte en el procesamiento de señales.Excluir filas de valores atípicos generalmente no es Winsorising.
Dicho esto, cualquier enfoque algorítmico que tu corazón desee puede ser programado.Si escribe un script para hacerlo, use matrices.Se ejecutan mucho más rápido, especialmente con grandes conjuntos de datos.