PVC {tsBSS}R Documentation

A Modified Algorithm for Principal Volatility Component Estimator

Description

PVC (Principal Volatility Component) estimator for the blind source separation (BSS) problem. This method is a modified version of PVC by Hu and Tsay (2014).

Usage

PVC(X, ...)

## Default S3 method:
PVC(X, k = 1:12, ordered = FALSE, acfk = NULL, original = TRUE, alpha = 0.05, ...)
## S3 method for class 'ts'
PVC(X, ...)
## S3 method for class 'xts'
PVC(X, ...)
## S3 method for class 'zoo'
PVC(X, ...)

Arguments

X

A numeric matrix or a multivariate time series object of class ts, xts or zoo. Missing values are not allowed.

k

A vector of lags. It can be any non-zero positive integer, or a vector consisting of them. Default is 1:12.

ordered

Whether to order components according to their volatility. Default is FALSE.

acfk

A vector of lags to be used in testing the presence of serial autocorrelation. Applicable only if ordered = TRUE.

original

Whether to return the original components or their residuals based on ARMA fit. Default is TRUE, i.e. the original components are returned. Applicable only if ordered = TRUE.

alpha

Alpha level for linear correlation detection. Default is 0.05.

...

Further arguments to be passed to or from methods.

Details

Assume that a p-variate {\bf Y} with T observations is whitened, i.e. {\bf Y}={\bf S}^{-1/2}({\bf X}_t - \frac{1}{T}\sum_{t=1}^T {\bf X}_{t}), for t = 1, \ldots, T, where \bf S is the sample covariance matrix of \bf X. Then for each lag k we calculate

\widehat{Cov}({\bf Y}_t {\bf Y}_t', Y_{ij, t-k}) = \frac{1}{T}\sum_{t = k + 1}^T \left({\bf Y}_t {\bf Y}_t' - \frac{1}{T-k}\sum_{t = k+1}^T {\bf Y}_t {\bf Y}_t' \right)\left(Y_{ij, t-k} - \frac{1}{T-k}\sum_{t = k+1}^T {Y}_{ij, t-k}\right),

where t = k + 1, \ldots, T and Y_{ij, t-k} = Y_{i, t-k} Y_{j, t-k}, i, j = 1, \ldots, p. Then

{\bf g}_k({\bf Y}) = \sum_{i = 1}^p \sum_{j=1}^p (\widehat{Cov}({\bf Y}_t {\bf Y}_t', Y_{ij, t-k}))^2.

where i,j = 1, \ldots, p. Thus the generalized kurtosis matrix is

{\bf G}_K({\bf Y}) = \sum_{k = 1}^K {\bf g}_k({\bf Y}),

where k = 1, \ldots, K is the set of chosen lags. Then \bf U is the matrix with eigenvectors of {\bf G}_K({\bf Y}) as its rows. The final unmixing matrix is then {\bf W} = {\bf US}^{-1/2}, where the average value of each row is set to be positive.

For ordered = TRUE the function orders the sources according to their volatility. First a possible linear autocorrelation is removed using auto.arima. Then a squared autocorrelation test is performed for the sources (or for their residuals, when linear correlation is present). The sources are then put in a decreasing order according to the value of the test statistic of the squared autocorrelation test. For more information, see lbtest.

Value

A list of class 'bssvol', inheriting from class 'bss', containing the following components:

W

The estimated unmixing matrix. If ordered = TRUE, the rows are ordered according to the order of the components.

k

The vector of the used lags.

S

The estimated sources as time series object standardized to have mean 0 and unit variances. If ordered = TRUE, then components are ordered according to their volatility. If original = FALSE, the sources with linear autocorrelation are replaced by their ARMA residuals.

MU

The mean vector of X.

If ordered = TRUE, then also the following components included in the list:

Sraw

The ordered original estimated sources as time series object standardized to have mean 0 and unit variances. Returned only if original = FALSE.

fits

The ARMA fits for the components with linear autocorrelation.

armaeff

A logical vector. Is TRUE if ARMA fit was done to the corresponding component.

linTS

The value of the modified Ljung-Box test statistic for each component.

linP

p-value based on the modified Ljung-Box test statistic for each component.

volTS

The value of the volatility clustering test statistic.

volP

p-value based on the volatility clustering test statistic.

Author(s)

Jari Miettinen, Markus Matilainen

References

Miettinen, M., Matilainen, M., Nordhausen, K. and Taskinen, S. (2020), Extracting Conditionally Heteroskedastic Components Using Independent Component Analysis, Journal of Time Series Analysis,41, 293–311.

Hu, Y.-P. and Tsay, R. S. (2014), Principal Volatility Component Analysis, Journal of Business & Economic Statistics, 32(2), 153–164.

See Also

comVol, gSOBI, lbtest, auto.arima

Examples

if(require("stochvol")) {
n <- 10000
A <- matrix(rnorm(9), 3, 3)

# Simulate SV models
s1 <- svsim(n, mu = -10, phi = 0.8, sigma = 0.1)$y
s2 <- svsim(n, mu = -10, phi = 0.9, sigma = 0.2)$y
s3 <- svsim(n, mu = -10, phi = 0.95, sigma = 0.4)$y

# Create a daily time series
X <- ts(cbind(s1, s2, s3) %*% t(A), end = c(2015, 338), frequency = 365.25)

res <- PVC(X)
res
coef(res)
plot(res)
head(bss.components(res))

MD(res$W, A) # Minimum Distance Index, should be close to zero
}

[Package tsBSS version 1.0.0 Index]