Изменить определенные значения вектора на основе среднего значения и стандартного отклонения подмножеств R - PullRequest
0 голосов
/ 21 января 2019

Я пытаюсь ввести аномалии в набор данных, существенно меняя определенные значения. Я использую функцию SlidingWindow из пакета evobiR (в R). Он принимает функцию, данные, размер окна и размер шага. Аномалии вводятся при условии, что они находятся на 3 стандартных отклонения (от этого сегмента) от среднего значения (для этого сегмента). Мой код выглядит следующим образом.

set.seed(1)
x <- rnorm(sample(1:35000, 32000, replace=F),0,1)
y <- cumsum(x)   # generate data 


my.func <- function(in_data){
m = mean(in_data) #calculate mean of segment
s = sd(in_data) # calculate sd of segment
o_data = sample(1:length(in_data),1,replace = F) #select random numbers within the range of length of sample
in_data[o_data] = m + runif(1,min=2.8,max=4) * s #use those numbers as index and change their value based on this condition
}

f = SlidingWindow(my.func, y, 2000, 1) # apply function to segments
plot(f,type="l")

Это дает результат способом, которого я не ожидал. Я ожидал, что точки будут находиться вдали от основной линии данных, как и выбросы, но я получаю вот что.

enter image description here

https://imgur.com/a/7lWWNsP

Как я могу генерировать выбросы / аномалии, которые являются точечными аномалиями и удалены от основных данных?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...