私はRui Barradas氏に、それ以上考慮せずに外れ値を取り除くことは悪い習慣であることに同意します。値が有効である限り、データに保持するか、影響力のある値の有無にかかわらず、少なくとも2つの別々の分析を実行する必要があります。 forループを使用して、データセット内のすべての変数に関数を適用できます。
train2<-train # Copy old dataset
outvalue<-list() # Create two empty lists
outindex<-list()
for(i in 1:ncol(train2){ # For every column in your dataset
outvalue[[i]]<-boxplot(train2[,i])$out # Plot and get the outlier value
outindex[[i]]<-which(train2[,i] == outvalue[[i]]) # Get the outlier index
train2[outindex[[i]],i] <- NA # Remove the outliers
}
これが動作し、データをプロットしますが、それはかなり遅いです。データをプロットするのではなく、他の異常値関数を調べることができる異常値が必要な場合、extremevalues
パッケージには、異常値を特定するための別の方法があり、プロットを必要としない関数があります。 これはextremevalues
パッケージからgetOutliers
機能を使用しています
outRight<-list()
outLeft<-outRight
for(i in 1:ncol(train2){
outRight[[i]]<-getOutliers(train2[,i])$iRight
outLeft[[i]]<-getOutliers(train2[,i])$iLeft
train2[outRight[[i]],i] <- NA
train2[outLeft[[i]],i] <- NA
}
情報をありがとう、私はパッケージ 'extremevalues'について知りませんでした。興味深いですね。 'boxplot'には' plot'という引数があり、 'FALSE'に設定するとグラフがプロットされないことに注意してください。これにより、時間を節約し、スクリーンの不動産を監視することができます。 –
ありがとうございました –