このデータから標準偏差または平均を計算するために、配列形式の販売統計データがあります。
stats = [100, 98, 102, 100, 108, 23, 120]
+-20% の差は通常の状況ですが、23は明らかに特殊なケースです。
この異常な値を見つけるための最良のアルゴリズムは (任意の言語、疑似または任意の原則で)?
このデータから標準偏差または平均を計算するために、配列形式の販売統計データがあります。
stats = [100, 98, 102, 100, 108, 23, 120]
+-20% の差は通常の状況ですが、23は明らかに特殊なケースです。
この異常な値を見つけるための最良のアルゴリズムは (任意の言語、疑似または任意の原則で)?
それらをZ スコアに変換して、外れ値を探すことができます。
>>> import numpy as np
>>> stats = [100, 98, 102, 100, 108, 23, 120]
>>> mean = np.mean(stats)
>>> std = np.std(stats)
>>> stats_z = [(s - mean)/std for s in stats]
>>> np.abs(stats_z) > 2
array([False, False, False, False, False, True, False], dtype=bool)
平均と標準偏差を計算します。平均から X 標準偏差を超える値を「異常」として扱います (X はおそらく 2.5 から 3.0 程度のどこかにあるでしょう)。
このテーマにはかなりのバリエーションがあります。本当に統計的に健全なものが必要な場合は、それらのいくつかを調べることをお勧めします。境界線として (たとえば) 2.7 標準偏差の恣意的な選択を擁護するようなものを排除できます。
標準偏差を見つけて、3シグマまたは+-3シグマの外側にある値は法外な値です...
理論的には、+-3 シグマで 99 % を超える信頼値が得られます。