A Variant of SOBI for Blind Source Separation

Share:

Description

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

Usage

1
2
3
4
5
6
vSOBI(X, ...)

## Default S3 method:
vSOBI(X, k = 1:12, eps = 1e-06, maxiter = 1000, G = "pow", ...)
## 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.

G

Function G(x). Choices are pow (default) and lcosh.

...

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_k(D_k(U))

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

where i = 1, …, p, k = 1, …, K and t = 1, …, T. For function G(x) the choices are x^2 and log(cosh(x)).

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. 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), ICA and Stochastic Volatility Models, Proceedings of the XI International Conference on Computer Data Analysis and Modeling (CDAM'2016), 30–37.

See Also

FixNA,SOBI

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
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