Last data update: 2014.03.03

R: A Variant of SOBI for Blind Source Separation
vSOBIR Documentation

A Variant of SOBI for Blind Source Separation

Description

The vSOBI method for blind source separation problem. It is used in case of time series with stochastic volatility. The method is a variant of SOBI, which is a method designed to separate ARMA sources.

Usage


vSOBI(X, ...)

## Default S3 method:
vSOBI(X, k = 1:12, eps = 1e-06, maxiter = 1000, ...)
## S3 method for class 'ts'
vSOBI(X, ...)

Arguments

X

Numeric matrix or multivariate time series object of class ts. Missing values are not allowed.

k

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

eps

Convergence tolerance.

maxiter

Maximum number of iterations.

...

Further arguments to be passed to or from methods.

Details

Assume that Y has p columns and it is whitened, i.e. Y = S^(-1/2)*(X - (1/T)*sum_t(X_(ti))), where S is a sample covariance matrix of X. The algorithm finds an orthogonal matrix U by maximizing

D(U) = sum_i(sum_k(((1/(T - k))*sum_t[(u_i' Y_t)^2*(u_i' Y_(t + k)^2 - 1])^2)),

where i = 1, …, p, k = 1, …, K and t = 1, …, T.

The algorithm works iteratively starting with diag(p) as an initial value for an orthogonal matrix U = (u_1, u_2, …, u_p)'. Matrix T_ik is a partial derivative of D_k(U) with respect to u_i, where

D_k(U) = sum_i(((1/(T - k))*sum_t[(u_i' Y_t)^2*(u_i' Y_(t + k)^2 - 1])^2).

Then T_k = (T_1k, …, T_pk)', where p is the number of columns in Y, and T = sum(T_k). The update for the orthogonal matrix U.new = (TT')^(-1/2)*T is calculated at each iteration step. The algorithm stops when

||U.new - U.old||

is less than eps. The final unmixing matrix is then W = U S^(-1/2).

Value

A list with class 'bss' containing the following components:

W

The estimated unmixing matrix.

k

The vector of the used lags.

S

Estimated sources as time series object standardized to have mean 0 and unit variances.

Author(s)

Markus Matilainen

References

Belouchrani, A., Abed-Meriam, K., Cardoso, J.F. and Moulines, R. (1997), A blind source separation technique using second-order statistics, IEEE Transactions on Signal Processing, 434–444.

Matilainen, M., Miettinen, J., Nordhausen, K., Oja, H. and Taskinen, S. (2016), A variant of SOBI to accommodate stochastic volatility, Submitted.

See Also

SOBI

Examples

library(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 <- vSOBI(X)
res
coef(res)
plot(res)
head(bss.components(res))

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

Results