Una forma de pensar en la detección de valores atípicos es que está creando un modelo predictivo, luego está verificando si un punto cae dentro del rango de predicciones. Desde un punto de vista teórico de la información, puede ver cuánto aumenta cada observación la entropía de su modelo.
Si está tratando estos datos solo como una colección de números, y no tiene un modelo propuesto para la forma en que se generan, también podría mirar el promedio. Si está seguro de que los números no se distribuyen normalmente, no puede hacer declaraciones sobre qué tan 'alejado' está un número determinado del promedio, pero puede verlo en términos absolutos.
Aplicando esto, puede tomar el promedio de todos los números, luego excluir cada número y tomar el promedio de los demás. El promedio más diferente del promedio global es el mayor valor atípico. Aquí hay algo de python:
def avg(a):
return sum(a)/len(a)
l = [100, 50, 150, 200, 35, 60 ,50, 20, 500]
m = avg(l)
for idx in range(len(l)):
print("outlier score of {0}: {1}".format(l[idx], abs(m - avg([elem for i, elem in enumerate(l) if i!=idx]))))
>>
outlier score of 100: 4
outlier score of 50: 10
outlier score of 150: 3
outlier score of 200: 9
outlier score of 35: 12
outlier score of 60: 9
outlier score of 50: 10
outlier score of 20: 14
outlier score of 500: 46