Bueno es algo así como un discriminador de información, se trata de algo mas o menos como esto:
A:
1 - Almacenar un número determinado de veces contenido de la información.
2 - Calcular la desviación típica que la información está sufriendo cada determinado número de muestras.
B:
1 - Obtener una nueva muestra.
2 - Calcular la desviación que existe entre la muestra y la referencia obtenida anteriormente.
C: Resolver:
1- Si la desviación sobrepasa el umbral denominado "% de confianza" el dato es fiable
2 - Si la desviación no alcanza el umbral de confianza el dato es literalmente "ignorado"
D: Post Solve:
1 - Si el dato es confiable se añade a la pila de datos, introduciendolo en la lista y por ende eliminando la primera muestra que se obtuvo en el paso A.
2 - Si el dato no es confiable se ignora y se vuelve al punto B.
Todo esto por que?
Simple, en una comunicación en red "especialmente por UDP" no hay ningún control de errores, esto quiere decir que un cliente puede estar enviando un número entero como 1024 y realmente no existe la seguridad de que el dato va a llegar a su destino con "integridad", en el 1% de los casos o mas el dato llegará corrupto o no llegará, si, el dato puede perfectamente llegar con un valor como 389 por ejemplo.. y claramente se ve que nada tiene que ver con el contenido original, esto es un serio problema para una aplicación donde por ejemplo se está enviando la posición de un objeto.. ya que el usuario verá el objeto "flasheando" de vez en cuando.
Existen técnicas de predicción para evitar este efecto tan molesto, una es la que voy a implementar yo, un analizador de información dinámico por estadística que es capaz de deducir si un dato es fiable o no, claro.. esto hay que saber usarlo.. no sirve para cualquier cosa, y por supuesto el test Q de Dixon es solo la punta de un izeberg muy grande donde existen complicados mecanismos para obtener predicciónes mucho mejores.