Python で grubbs のテスターを実行する方法
グラブス テストは、データ セット内の外れ値の存在を特定するために使用されます。この検定を使用するには、データ セットがほぼ正規分布しており、少なくとも 7 つの観測値が含まれている必要があります。
このチュートリアルでは、Python で Grubbs テストを実行する方法を説明します。
Python でのグラブス テスト
Python で Grubbs テストを実行するには、 outlier_utilsパッケージの smirnov_grubbs() 関数を使用できます。この関数は次の構文を使用します。
smirnov_grubbs.test (データ、アルファ = 0.05)
金:
- data:データ値の数値ベクトル
- alpha:検定に使用する有意水準。デフォルト値は 0.05 です
この機能を使用するには、まずoutlier_utilsパッケージをインストールする必要があります。
pip install outlier_utils
このパッケージをインストールすると、Grubbs テストを実行できます。次の例は、これを行う方法を示しています。
例 1: 両側グラブス検定
次のコードは、データ セットの両端で外れ値を検出する両側 Grubbs テストを実行する方法を示しています。
import numpy as np from outliers import smirnov_grubbs as grubbs #define data data = np.array([5, 14, 15, 15, 14, 19, 17, 16, 20, 22, 8, 21, 28, 11, 9, 29, 40]) #perform Grubbs' test grubbs. test (data, alpha=.05) array([5, 14, 15, 15, 14, 19, 17, 16, 20, 22, 8, 21, 28, 11, 9, 29])
この関数は、外れ値を含まない単純な配列を返します。この場合、最大値 40 は外れ値であるため、削除されました。
例 2: 片側 Grubbs テスト
次のコードは、データ セット内の最小値と最大値に対して片側 Grubbs テストを実行する方法を示しています。
import numpy as np from outliers import smirnov_grubbs as grubbs #define data data = np.array([5, 14, 15, 15, 14, 19, 17, 16, 20, 22, 8, 21, 28, 11, 9, 29, 40]) #perform Grubbs' test to see if minimum value is an outlier grubbs. min_test (data, alpha=.05) array([5, 14, 15, 15, 14, 19, 17, 16, 20, 22, 8, 21, 28, 11, 9, 29, 40]) #perform Grubbs' test to see if minimum value is an outlier grubbs. max_test (data, alpha=.05) array([5, 14, 15, 15, 14, 19, 17, 16, 20, 22, 8, 21, 28, 11, 9, 29])
最小外れ値テストでは、最小値が外れ値として検出されませんでした。ただし、最大外れ値テストでは最大値 40 が外れ値であると判断されたため、削除されました。
例 3: 外れ値のインデックスを抽出する
次のコードは、外れ値のインデックスを抽出する方法を示しています。
import numpy as np from outliers import smirnov_grubbs as grubbs #define data data = np.array([5, 14, 15, 15, 14, 19, 17, 16, 20, 22, 8, 21, 28, 11, 9, 29, 40]) #perform Grubbs' test and identify index (if any) of the outlier grubbs. max_test_indices (data, alpha=.05) [16]
これは、テーブルのインデックス位置 16 に外れ値があることを示しています。
例 4: 外れ値から値を抽出する
次のコードは、外れ値から値を抽出する方法を示しています。
import numpy as np from outliers import smirnov_grubbs as grubbs #define data data = np.array([5, 14, 15, 15, 14, 19, 17, 16, 20, 22, 8, 21, 28, 11, 9, 29, 40]) #perform Grubbs' test and identify the actual value (if any) of the outlier grubbs. max_test_outliers (data, alpha=.05) [40]
これは、値 40 の外れ値があることを示しています。
外れ値を処理する方法
Grubbs テストでデータ セット内の外れ値が特定された場合、いくつかのオプションがあります。
1. 値がタイプミスやデータ入力エラーではないことを再確認します。データセット内で外れ値として表示される値は、データ入力時に個人が行った単なるタイプミスである場合があります。まず、さらなる決定を下す前に、値が正しく入力されたことを確認してください。
2. 外れ値に新しい値を割り当てます。外れ値がタイプミスまたはデータ入力エラーの結果であることが判明した場合は、データセットの平均や中央値などの新しい値を割り当てることができます。
3. 外れ値を削除します。値が本当に外れ値であり、分析に重大な影響を与える場合は、その値を削除することを選択できます。