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.

1 2 3 4 5 6 |

`X` |
Numeric matrix or multivariate time series object of class |

`k` |
Vector of lags. Lag can be any non-zero positive integer, or a vector consisting of them. Default is |

`eps` |
Convergence tolerance. |

`maxiter` |
Maximum number of iterations. |

`G` |
Function |

`...` |
Further arguments to be passed to or from methods. |

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)*.

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. |

Markus Matilainen

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.

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
``` |

Questions? Problems? Suggestions? Tweet to @rdrrHQ or email at ian@mutexlabs.com.

Please suggest features or report bugs with the GitHub issue tracker.

All documentation is copyright its authors; we didn't write any of that.