Necesito obtener un valor lo más preciso posible para el brillo de una fuente de luz principalmente estable dados doce valores de luminosidad de muestra. El sensor es imperfecto, y la luz ocasionalmente puede "parpadear" más brillante o más oscura, lo que puede ignorarse, de ahí mi necesidad de detección de valores atípicos (¿creo?).
He leído un poco sobre varios enfoques aquí y no puedo decidir qué enfoque seguir. El número de valores atípicos nunca se conoce de antemano y, a menudo, será cero. El parpadeo es generalmente una desviación muy grande del brillo estable (suficiente para realmente interferir con cualquier promedio tomado con uno grande presente), pero no necesariamente.
Aquí hay un conjunto de muestra de 12 medidas para completar la pregunta:
295.5214, 277.7749, 274.6538, 272.5897, 271.0733, 292.5856, 282.0986, 275.0419, 273.084, 273.1783, 274.0317, 290.1837
Mi intuición es que probablemente no haya valores atípicos en ese conjunto en particular, aunque 292 y 295 se ven un poco altos.
Entonces, mi pregunta es, ¿cuál sería el mejor enfoque aquí? Debo mencionar que los valores provienen de tomar la distancia euclidiana de los componentes RG y B de la luz desde un punto cero (negro). Sería programáticamente doloroso, pero posible, volver a estos valores si fuera necesario. La distancia euclidiana se usó como una medida de "fuerza general" ya que no estoy interesado en el color, solo en la fuerza de salida. Sin embargo, existe una posibilidad razonable de que los parpadeos que mencioné tengan una composición RGB diferente a la salida habitual.
En este momento estoy jugando con algún tipo de función que se repetirá hasta que se alcance una membresía estable de las medidas permitidas:
- Encontrar la desviación estándar
- Poniendo todo afuera, digamos 2 SD en una lista de ignorados
- Recalculando el promedio y SD con la lista de ignorados excluida
- Volver a decidir a quién ignorar según el nuevo promedio y la DE (evalúe los 12)
- Repita hasta que esté estable.
¿Hay algún valor en ese enfoque?
¡Todos los comentarios agradecidos!
fuente
Respuestas:
Los valores atípicos en muestras pequeñas siempre pueden ser muy difíciles de detectar. En la mayoría de los casos, realmente recomendaría que si considera que sus datos no están corruptos, un valor "atípico" podría no ser problemático y su exclusión podría no ser razonable. Probablemente el uso de técnicas estadísticas robustas será más sensible y más cercano a una solución intermedia. Tienes una pequeña muestra; trate de hacer que cada punto de muestra cuente. :)
Con respecto a su enfoque sugerido: no aplicaría apresuradamente una suposición de normalidad a sus datos con una regla 68-95-99.7 sobre ellos (como parece hacer de alguna manera con su regla heurística 2SD). La desigualdad de Chebyshev por una vez supone una regla 75-88.9-93.8 sobre ellos, que es claramente menos rígida. También existen otras " reglas "; la valores atípicos Identificación de sección en el Outlier lema en Wikipedia tiene un conjunto de heurísticas.
Aquí hay otro: una referencia de libro gratuita que he encontrado sobre el tema, NIST / SEMATECH e-Handbook of Statistical Methods , presenta la siguiente idea de Iglewicz y Hoaglin (1993): Use -scores modificado de tal manera que:MZ METRO
Una vez más, dado que tiene una muestra realmente pequeña, si cree que su muestra no está obviamente corrompida (un humano de 9'4 "de altura), le aconsejaría que no excluya los datos apresuradamente. Sus" presuntos atípicos "podrían ser datos no corrompidos; su uso en realidad podría ayudar en lugar de dañar su análisis.
fuente
La prueba Q de Dixon para valores atípicos en conjuntos de datos muy pequeños parece ajustarse bien a este tipo de situación:
http://en.wikipedia.org/wiki/Dixon%27s_Q_test
http://www.chem.uoa.gr/applets/AppletQtest/Text_Qtest2.htm
fuente
Apunte el primero: puede valer la pena volver al color rgb. Raramente es bueno descartar datos, y la magnitud del vector rgb no es la única forma de representar el brillo: el brillo percibido es diferente, al igual que el valor en HSV.
Pero dejando eso a un lado y tratando con los datos que tiene, ¿ha considerado formar esto como un problema de clasificación en lugar de un problema de modelado y hacer algo de aprendizaje automático? Tiene una entrada, que es un vector con 12 valores reales (las lecturas de brillo). Tiene una salida, que es un vector de 12 valores binarios (1 = inlier, 0 = outlier). Obtenga varios conjuntos de lectura de brillo y etiquételos a mano, mostrando qué lectura de brillo en cada conjunto es inlier / outlier. Algo como esto:
Luego, ejecuta todo el lote a través de un clasificador de algún tipo:
¡Y tu estas listo! No hay necesidad de preocuparse por encontrar la "regla" que separa a los intrusos de los propios valores. Solo obtenga algunos conjuntos de datos que se vean razonables y deje que la máquina lo haga por usted :)
~~~
EDITAR: Incidentalmente, su método propuesto, en el que ajusta iterativamente un gaussiano y luego clasifica cada muestra a más de 2 desviaciones estándar como un valor atípico, se parece mucho a un algoritmo de maximización de expectativas. Algo como esto:
Si sigue esa ruta, puede valer la pena buscar en Google algoritmos EM y verificar qué suposiciones está incorporando en su modelo.
fuente