Я пытаюсь ввести аномалии в набор данных, существенно меняя определенные значения в зависимости от условия.У меня есть набор данных, есть 10 подмножеств.Условие состоит в том, что аномалии будут в 2,8-3 раза превышать стандартное отклонение каждого сегмента от среднего значения этого подмножества.Для этого я делю набор данных на 10 равных частей, затем вычисляю среднее и стандартное отклонение каждого подмножества и изменяю определенные значения, помещая их 3 стандартных отклонения этого подмножества от среднего значения этого подмножества.Код выглядит следующим образом:
set.seed(1)
x <- rnorm(sample(1:35000, 32000, replace=F),0,1) #create dataset
y <- cumsum(x) #cumulative sum of dataset
j=1
for(i in c(1:10)){
seg = y[j:j+3000] #name each subset seg
m = mean(seg) #mean of subset
print(m)
s = sd(seg) # standard deviation of subset
print(s)
o_data = sample(j:j+3000,10) #draw random numbers from j to j + 3000
print(o_data)
y[o_data] = m + runif(10, min=2.8, max=3) * s #values = mean + 2.8-3 * sd
print(y[o_data])
j = j + 3000 # increment j
print(j)
}
Я получаю сообщение об ошибке: стандартное отклонение равно NA, поэтому я не могу установить значения.
Какой другой подход позволяет мне выполнить задачу?У меня есть впрыскиваемые аномалии, которые по существу составляют 2,8-3 стандартных отклонения от скользящего среднего.