Cost functions for differening types of univariate gaussion anomalies
Details
Collective anomalies are represented either as changes in parameters describing the mean (gaussRegMean
),
variance (gaussRegVar
) or mean and variance (gaussRegMeanVar
). Changes in variance are represented as a scaling parameter, not changes to the covariance. See vignettes for details.
Each element of the input x
should be a list containing a vector of observations y
and corresponding design matrix X
. Optionally in can also include a vector of parameter m
and covariance matrix S
.
Methods
Get the length of time series
Method new()
Initialise the cost function
Arguments
x
a list of regressions (see details)
non_neg
should only non-negative paraemter solutions be considered
Method baseCost()
Compute the non-anomalous cost of a segment
Usage
gaussRegCost$baseCost(a, b, pen = 0)
Arguments
a
start of period
b
end of period
pen
penalty cost
Method pointCost()
Compute the point anomaly cost of a time step
Usage
gaussRegCost$pointCost(b, pen)
Arguments
b
time step
pen
penalty cost
Method clone()
The objects of this class are cloneable with this method.
Usage
gaussRegCost$clone(deep = FALSE)
Arguments
deep
Whether to make a deep clone.
Super class
anomalous::gaussRegCost
-> gaussRegMean
Methods
Inherited methods
Method collectiveCost()
Compute the anomalous cost of a segment
Usage
gaussRegMean$collectiveCost(a, b, pen, len)
Arguments
a
start of period
b
end of period
pen
penalty cost
len
minimum number of observations
Compute parameters of a segment if anomalous
Arguments
a
start of period
b
end of period
Method clone()
The objects of this class are cloneable with this method.
Usage
gaussRegMean$clone(deep = FALSE)
Arguments
deep
Whether to make a deep clone.
Super class
anomalous::gaussRegCost
-> gaussRegVar
Methods
Inherited methods
Method collectiveCost()
Compute the anomalous cost of a segment
Usage
gaussRegVar$collectiveCost(a, b, pen, len)
Arguments
a
start of period
b
end of period
pen
penalty cost
len
minimum number of observations
Compute parameters of a segment if anomalous
Arguments
a
start of period
b
end of period
Method clone()
The objects of this class are cloneable with this method.
Usage
gaussRegVar$clone(deep = FALSE)
Arguments
deep
Whether to make a deep clone.
Super class
anomalous::gaussRegCost
-> gaussRegMeanVar
Methods
Inherited methods
Method collectiveCost()
Compute the anomalous cost of a segment
Usage
gaussRegMeanVar$collectiveCost(a, b, pen, len)
Arguments
a
start of period
b
end of period
pen
penalty cost
len
minimum number of observations
Compute parameters of a segment if anomalous
Usage
gaussRegMeanVar$param(a, b)
Arguments
a
start of period
b
end of period
Method clone()
The objects of this class are cloneable with this method.
Usage
gaussRegMeanVar$clone(deep = FALSE)
Arguments
deep
Whether to make a deep clone.
Examples
## simple test
set.seed(10)
x <- list()
n <- 120
for(ii in 1:48){
if(ii < 10){ theta = c(1,0); sigma <- 0.1 }
if(ii >= 10 & ii <12){ theta <- c(10,0); sigma <- 2}
if(ii >= 12 & ii < 44){ theta <- c(5,1); sigma <- 2}
if(ii >= 44 ){ theta <- c(1,0); sigma <- 0.1}
X <- cbind(rep(1,n),runif(n,ii-1,ii))
y <- rnorm(n, X%*%theta, sigma)
x[[ii]] <- list(y=y,X=X)
}
fCost <- gaussRegMeanVar$new(x)
p <- partition(4*log(sum(sapply(y,length))),NA,2)
res <- pelt(p,fCost)