Búsqueda de irregularidad en una sucesión de números

Intento resolver un problema sobre como detectar una posible irregularidad en una sucesión de números. El problema es muy fácil de explicar pero no encuentro la forma de resolverlo para posteriormente programarlo en Matlab. Intento, a partir de una serie de números muy parecidos/cercanos entre ellos, ver si existe alguna irregularidad, o sea, si existe algún número que no tenga nada que ver con el resto para posteriormente quitarlo. Intento no aplicar ningún patrón ya que esto varía en cada sucesión. En una gráfica se ve claramente la irregularidad. Para que me entiendas, te voy a poner dos ejemplos de sucesiones:
1) 0.5 0.0129 0.0128 0.0128 0.0726 0.0128 0.0127
2) 0.9020 0.1667 0.0373 0.0679 0.0549 0.0364 0.0482 0.0432
Como se puede ver, en el ejemplo uno el número a detectar sería el 0.5 y en el ejemplo dos el 0.9020.
Nota: No me vale buscar el máximo y eliminarlo ya que puede ser que no exista irregularidad (por ejemplo el primer ejemplo sin el 0.5 o el segundo ejemplo con el 0.9020) y por lo tanto no haya que eliminar ningún número.

4 Respuestas

Respuesta
1
Puedes utilizar técnicas parecidas como las que se utilizan en control estadístico de la calidad.
Los gráficos de control, por variable, que lo que hacen establer un límite inferior o superior o ambos, y decir con un probabilidad alpha que valores están fuera de control, una vez eliminado ese número recalculas y observas si sigue habiendo algún más fuera de control.
Respuesta
1
He leído tu problema y no sé si podré ayudarte, porque no sé si lo entiendo bien.
Lo que yo quiero saber es si el número que te da la irregularidad es por la distancia entre ellos, ya que, si es así, puedes hacer un programa que vea qué distancia hay entre cada par de números y que elimine lo que estén a una distancia mayor de un límite (que elegirías tú). Así no eliminas el mayor, sólo eliminas los que estén a mucha distancia, si es que hay alguno que se sale (en caso contrario no eliminarías ninguno). También puedes hacer la comparar, en vez de por parejas, cada número con una media de todos.
Creo que hay alguna medida estadística para medir esto que te digo, áuqnue no lo controlo mucho, creo que será la varianza o la desviación típica.
Si los representas en una gráfica, también puedes hacer un programa que detecte los máx/mín absolutos y estudiar luego tú si se deben eliminar o no.
No sé si te habré ayudado. Si te apetece concretarme algún aspecto más a ver si me puedo ajustar más a la respuesta que necesitas, dímelo.
Respuesta
1
El problema que planteas es complejo ya que la irrgularidad que buscas no siempre va a tener una misma causa.
Los casos que planteas son valores que son sustancialmente distintos que es resto, pero podría ser un dato que rompiera una tendencia u otras muchas causas.
Para los ejemplos que tu pones yo me inclinaría por calcular la media y la desviación típica y despreciar los datos que estén por ejemplo a 2 veces la desviación típica, pero esa proporción la podrías variar según lo riguroso que quieras ser en cada caso (No es un método perfecto, pero si es simple de programar y creo que te puede dar buenos resultados.
Hola de nuevo, ante todo darte mi más sincero agradecimiento por la molestia que te has tomado en contestarme. He estado probando lo que me has sugerido pero parece que una vez más resulta fallido. Te voy a poner 4 ejemplos más y te pondré las desviaciones típicas de cada uno para que observes que ya en el primer caso resulta imposible desde mi punto de vista, tomar dicho proceso:
3) 1    0.5    0.3333    0.3333    0.5    0.5    0.25    0.5
4) 1    0.25    0.0647    0.0588    0.1250    0.0634    0.0652    0.25    0.0759
5) 0.9167    0.25    0.25    0.1667    0.2    0.2    0.2195    0.2857    0.3333
6) 1 0.25 0.2 0.0682 0.1579 0.1667 0.0588 0.0588
Si nos fijamos en el 1), si calculamos la desviación estándar nos da 0.181748 y si la multiplicamos por 2 da 0.3635 por lo tanto nos elimina el 0.5. Si cogemos la misma sucesión de números a excepción del mayor (0.5), nos daría una desviación estándar de 0.0244 y si lo multiplicamos por 2 da 0.0488 lo que significa que nos elimina el 0.0726 que es un valor que no queremos que sea eliminado. Si subimos a una multiplicación por 3 nos daría para el caso del 1) entero, 0.5452 y ya no nos eliminaría dicho 0.5 y para el caso del 1) sin 0.5 nos daría 0.0732 por tanto por poquito se salvó el 0.0726.
Resumiendo es proceso que a priori no sirve. No obstante igual podría restar el primer valor mayor menos el segundo valor mayor y si da un valor por encima de 0.3 hacer algún otro proceso matemático ¿qué te parece?. He probado con el criterio QUE de Dixon, el criterio 2.5d, el 4d y el 2S y ninguno me ha funcionado ya que para unos casos me funcionaba pero para otros fracasaba... Por otro lado decir que la desviación típica del tercer caso da 0.2290 y si la multiplico por 2 sería 0.458 y me eliminaría los 0.5 que aparecen en la sucesión.
Se que es bastante complicado y agradezco muchísimo la ayuda que me puedas ofrecer.
Si se te ocurre algo por pequeño que sea sería maravilloso si no no pasa nada.
Gracias.
Un saludo.
Parece que no me explique bien.
Debes tomar la media aritmética más y menos la desviación típica multiplicada por una cierta cantidad, esa cantidad dependerá de lo exigente que seas al despreciar valores, cuanto más grande sea la cantidad menos exigente serás o menos valores detectaras como erróneos.
Si por es la media y es las desviación típica tomaras como correctos los valores que estén en el intervalo
(x-a·s, x+a·s) donde a es la constante que elijas, yo te ponía por ejemplo 2, que es muy alto y te da como válido casi todos los valores.
Todo esto esta basado en intervalos de confinaza
si tomas (x-1,96·s/n^(1/2), x+1,96·s/n^(1/2)) siendo n el tamaño de la muestra, aceptarías el 95% de los datos, que puede que sea muchos, osea solo desecharías valores muy desviados, pero según disminuyas la constante rechazarás más valores.
Tomando (x-1,28·s/n^(1/2), x+1,28·s/n^(1/2)) aceptarías el 90% que puede que te sea más interesante.
Ok ahora si te entendí mejor. Solo una última cosa, cuando dices n=tamaño de la muestra ¿te refieres al valor mayor de la muestra de la sucesión de números? Por que supongo que no sería de cada muestra ya que (x+-a·s/raiz cuadrada de n) es una región aplicable a todos los valores de la sucesión.
Muchísimas gracias.
Perdona por mi dificultad para entender las cosas.
Un saludo.
Por cierto, igual te gustaría saber la utilidad que le voy a dar:
Todo viene a raíz de un programa que me detecta números en una imagen y a través de una matriz de color verde de dicha imagen intento eliminar un símbolo que viene de color azul. Como puedes observar el primer número de cada sucesión de las 6 que te he escrito está bastante distante de los demás y es el fallido que hay que eliminar pero no siempre saldrá ese símbolo ya que por ejemplo la sucesión 3 puede tener todos los valores menos el 1 (0.5 0.3333 0.3333 0.5 0.5 0.25 0.5) lo que significa que no habría que eliminar ningún valor ya que no hay ninguno excesivamente distante.
Gracias.
Saludos.
N es el numero de valores que tiene la muestra con la que trabajas.
Respuesta
1
Una cosa, ¿has pensado en hallar la correlación? Yo intentaría verla sabiendo el grado de la función, de la forma y=ax^n y ver si la correlación se acerca a 1 o no y entonces sabrás que estas en una sucesión de números con relación, fuera de la irregularidad.
Yo intentaría eso, averiguar el orden de la relación y luego ver si se acerca a uno o no. Si se separa mucho, pues ir eliminando los elementos que discrepen de la correlación en un % que tu elijas para desestimar su aceptación o no.
Espero que te sirva, y si tienes dudas, házmela sabes!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas