The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.

Remove extreme values in a time series signal with Hector

# libraries
library(simts)
library(gmwmx)
phase =     0.45
amplitude = 2.5
sigma2_wn =       15
sigma2_powerlaw = 10
d =               0.4
bias =            0
trend =           5/365.25
cosU =            amplitude*cos(phase)
sinU =            amplitude*sin(phase)

# generate model
N = c(1, 7.5, 10, 15, 20)*365

# consider 2 year of data
n = N[1]
model_i = WN(sigma2 = sigma2_wn) 

# define time at which there are jumps
jump_vec =  c(100, 200)
jump_height = c(10, 20)

# define myseed
myseed=123

# set seed
set.seed(myseed)

# generate residuals
eps = simts::gen_gts(model = model_i, n= n)

# add trend, gaps and sin
A = gmwmx::create_A_matrix(1:length(eps), jump_vec, n_seasonal =  1)

# define beta
x_0 = c(bias, trend, jump_height,  cosU,  sinU)

# create time series
yy = A %*% x_0 + eps

We plot the generated time series

plot(yy)

We add extreme values in the signal

n_outliers = 30
set.seed(123)
id_outliers=sample(150:350, size = n_outliers)
val_outliers = rnorm(n = n_outliers, mean = max(yy)+10, sd = 5)
yy[id_outliers] = val_outliers

We plot the corrupted time series

plot(yy)

We create a gnssts object

# save signal in temp
gnssts_obj = create.gnssts(t = 1:length(yy), y = yy, jumps = jump_vec)

We remove extreme values from the signal using removeoutliers function of Hector available by calling remove_outliers_hector()

clean_yy = remove_outliers_hector(x=gnssts_obj, n_seasonal = 1)

We can compare the original and the signal with detected extreme values removed from the signal:

par(mfrow=c(1,2))
plot(yy)
plot(clean_yy$t, clean_yy$y, type = "l", xlab="Time", ylab = "Observation")

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.