既存のデータフレームに異常値を挿入する関数を作成しようとしています。データフレームに異常値を挿入する
オリジナルのデータフレームのmax
とmin
の値を使用して、新しいデータフレームouts
の作成を開始しました。このouts
データフレームには、特定のamount
のアウトライアドデータが含まれます。 後で元のデータフレームにouts
データフレームのアウトライアされた値を挿入します。
私が得たいのは、元のデータフレームに特定量の異常値を注入する機能です。 私は、例えば、異なる問題を抱えている:私は正しく使用していますが、外れ値のデータフレームを作成するためにrunifと第二私はtemp
今まで私が試したコードに外れ値を注入する方法がわからない場合、私は知っていますか:
addOutlier <- function (data, amount){
maxi <- apply(data, 2, function(x) (mean(x)+(3*(sd(x)))))
mini <- apply(data, 2, function(x) (mean(x)-(3*(sd(x)))))
temp <- data
amount2 <- ifelse(amount<1, (prod(dim(data))*amount), amount)
outs <- runif(amount2, 2, min = mini, max = maxi) # outliers
if (amount2 >= prod(dim(data))) stop("exceeded data size")
for (i in 1:length(outs))
temp[sample.int(nrow(temp), 1), sample.int(ncol(temp), 1)] <- outs
return (temp)
}
この作品を作るために任意のヘルプは、深く
あなたの目標を理解しているかどうかはわかりませんが、あなたのコードに誤りがあると思います。 'runif(n、mini、maxi)'は、あなたが定義した2つの極端な値の間に 'n'の値を与えます。外れ値になることはまずありませんし、確かに1になることは保証されていません。 –
@Alex私は問題を見る、どのように私が外れ値を持つことを保証するために作ることができるかの提案 – mina
"外れ値"の意味を明確に定義していない....明らかに 'runif(n、-Inf、mini)' 、 'runif(n、maxi、Inf)'は動作しますが、それはおそらく現実的ではありません。 –