faultSwitch: Induce the Specified Fault on NOC Observations

View source: R/faultSwitch.R

faultSwitchR Documentation

Induce the Specified Fault on NOC Observations

Description

Infect the input data frame with a specific fault, then return the infected data frame.

Usage

faultSwitch(
  df,
  fault,
  period = 7 * 24 * 60,
  faultStartIndex = round(0.8433 * period),
  shift = 2,
  postStateSplit = FALSE
)

Arguments

df

A data frame returned by the processNOCdata() function.

fault

A character string. Options are "NOC", "A1", "B1", "C1", "A2", "B2", "C2", "A3", "B3", or "C3". See "details" of mspProcessData() for more information.

period

The observation cycle length. Defaults to one week's worth of minute-level observations (10,080 observations).

faultStartIndex

An integer specifying the index at which the faults will start. Defaults to roughly 85 percent through the cycle.

shift

The fault parameter for faults "A1" and "B1" corresponding to the positive shock value added to features. Defaults to 2. See "details" of mspProcessData() for more information.

postStateSplit

Should we induce faults before or after state-splitting? Defaults to FALSE. Make this argument TRUE for faults 1C, 2C, 3C.

Details

The faults return data frames as follows:

A1 –

A data frame with 10080 rows and five columns, corresponding by default to one week worth of data recorded at a 1-minute interval (as defined by the "period" argument of this function and the "increment" argument of the processNOCdata() function). The fault is a system shift to each of the three features by 2 (the "shift" argument). The fault starts at row 8500 (specified by the argument "faultStartIndex"), and the five columns under the fault state are defined here:

dateTime :

a POSIXct column

state :

the state indicator for the multivariate system, with three levels when the argument "multiState" is TRUE and one level otherwise

x :

x(t) = t + shift + error

y :

y(t) = t ^ 2 - 3t + shift + error

z :

z(t) = -t ^ 3 + 3t ^ 2 + shift + error

where t is a 10080-entry vector of autocorrelated and non-stationary hidden process realizations generated within the processNOCdata() function.

B1 –

A matrix as defined in A1, but with x, y, and z feature columns defined as follows:

x :

x(t) = t + shift + error

y :

y(t) = t ^ 2 - 3t + error

z :

z(t) = -t ^ 3 + 3t ^ 2 + error

C1 –

A matrix as defined in A1, but with x, y, and z feature columns defined as follows:

x :

x(t) = t + shift / 4 + error

y :

y(t) = t ^ 2 - 3t + error

z :

z(t) = -t ^ 3 + 3t ^ 2 + shift / 4 + error

This shift is applied only in State 3.

A2 –

The fault is a drift on each feature by (s - faultStartIndex / 10 ^ 3, where s is the observation index. The fault starts at "faultStartIndex", and the x, y, and z feature columns are defined as follows:

x :

x(t) = t + drift + error

y :

y(t) = t ^ 2 - 3t + drift + error

z :

z(t) = -t ^ 3 + 3t ^ 2 + drift + error

B2 –

The fault is a drift a drift on the "y" and "z" feature by (s - faultStartIndex / 10 ^ 3, where s is the observation index. The fault starts at "faultStartIndex", and the x, y, and z feature columns are defined as follows:

x :

x(t) = t + error

y :

y(t) = t ^ 2 - 3t + drift + error

z :

z(t) = -t ^ 3 + 3t ^ 2 + drift + error

C2 –

The fault is a negative drift on the "y" feature by 1.5 * (s - faultStartIndex) / (period - faultStartIndex). Thus,

x :

x(t) = t + error

y :

y(t) = t ^ 2 - 3t - drift + error

z :

z(t) = -t ^ 3 + 3t ^ 2 + error

This drift is applied only in State 2.

A3 –

The fault is a signal amplification in the determining latent t vector. The fault starts at "faultStartIndex", and the x, y, and z features under the fault state are defined here:

x :

x(t_*) = t_* + error

y :

y(t_*) = (t_*) ^ 2 - 3t_* + error

z :

z(t_*) = -(t_*) ^ 3 + 3(t_*) ^ 2 + error

where t_* = 5 x t x (period - s) / (period - faultStartIndex) and s is the observation index.

B3 –

The fault is a signal amplification in the determining latent t vector for the "z" feature only. The fault starts at "faultStartIndex", and the x, y, and z features under the fault state are defined here:

x :

x(t) = t + error

y :

y(t) = (t) ^ 2 - 3t + error

z :

z(t_*) = -(t_*) ^ 3 + 3(t_*) ^ 2 + error

where t_* = 3 x t x (period - s) / (2 x period) and s is the observation index.

C3 –

This fault is a change in the error structure of feature "y". We let errorNew = 2 * error - 0.25, so that

x :

x(t) = t + error

y :

y(t) = t ^ 2 - 3t + errorNew

z :

z(t) = -t ^ 3 + 3t ^ 2 + error

This new error structure is applied only in State 2.

Value

A data frame with the same structure as df, but with faults induced across all observations. The mspProcessData() function then subsets the observations necessary to corrupt the normal data frame, and binds them together by row. This function is called by mspProcessData(). See ?mspProcessData for more details.

See Also

Called by: mspProcessData.

Examples

nrml <- processNOCdata()
faultSwitch(nrml, fault = "NOC")

gabrielodom/mvMonitoring documentation built on Nov. 23, 2023, 6:39 p.m.