R の複数の列から外れ値を削除する方法
多くの場合、R で複数の列から外れ値を一度に削除したい場合があります。
観測値を外れ値として定義する一般的な方法は、観測値が第 3 四分位 (Q3) より上の四分位範囲の 1.5 倍、または第 1 四分位 (Q1) より下の四分位範囲の 1.5 倍である場合です。
この定義を使用すると、次の手順で外れ値を識別する単純な関数を作成し、この関数を R データ フレームの複数の列に適用できます。
ステップ 1: データ フレームを作成します。
R でデータ フレームを作成することから始めましょう。
df <- data.frame(index=c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), var1=c(4, 4, 5, 4, 3, 2, 8, 9, 4, 5), var2=c(1, 2, 4, 4, 6, 9, 7, 8, 5, 29), var3=c(9, 9, 9, 5, 5, 3, 4, 5, 11, 34))
ステップ 2: 外れ値関数を定義します。
次に、外れ値を特定できる関数と、外れ値を削除できる関数を定義しましょう。
outliers <- function (x) { Q1 <- quantile(x, probs =.25) Q3 <- quantile(x, probs =.75) iqr = Q3-Q1 upper_limit = Q3 + (iqr*1.5) lower_limit = Q1 - (iqr*1.5) x > upper_limit | x < lower_limit } remove_outliers <- function (df, cols = names (df)) { for (col in cols) { df <- df[!outliers(df[[col]]),] } df }
ステップ 3: 外れ値関数をデータ フレームに適用します。
最後に、この関数をデータ フレームのいくつかの列に適用して、外れ値を削除しましょう。
remove_outliers(df, c('var1', 'var2', 'var3')) index var1 var2 var3 1 1 4 1 9 2 2 4 2 9 3 3 5 4 9 4 4 4 4 5 5 5 3 6 5 9 9 4 5 11
その他の R チュートリアルはここで見つけることができます。