AMUSE method for the second order blind source separation problem. The function estimates
the unmixing matrix in a second order stationary source separation model by jointly diagonalizing
the covariance matrix and an autocovariance matrix at lag k.
Usage
AMUSE(x, ...)
## Default S3 method:
AMUSE(x, k = 1, ...)
## S3 method for class 'ts'
AMUSE(x, ...)
Arguments
x
a numeric matrix or a multivariate time series object of class ts. Missing values are not allowed.
k
integer lag for the autocovariance matrix, must be larger than 0. Default is 1.
...
further arguments to be passed to or from methods.
Details
The lag k has a huge effect on the performance and it should be chosen so that the eigenvalues of autocovariance matrix are distinct. The function assumes always as many sources as there are time series.
Value
A list with class 'bss' containing the following components:
W
estimated unmixing matrix.
EV
eigenvectors of autocovariance matrix.
k
lag of the autocovariance matrix used.
S
estimated sources as time series objected standardized to have mean 0 and unit variances.
Author(s)
Klaus Nordhausen
References
Tong, L., Soon, V.C., Huang, Y.F. and Liu, R. (1990), AMUSE: a new blind identification algorithm, in Proceedings of IEEE International Symposium on
Circuits and Systems 1990, 1784–1787.
Miettinen, J., Nordhausen, K., Oja, H. and Taskinen, S. (2012), Statistical properties of a blind source separation estimator for stationary time series,
Statistics & Probability Letters, 82, 1865–1873.
See Also
ts
Examples
# creating some toy data
A<- matrix(rnorm(9),3,3)
s1 <- arima.sim(list(ar=c(0.3,0.6)),1000)
s2 <- arima.sim(list(ma=c(-0.3,0.3)),1000)
s3 <- arima.sim(list(ar=c(-0.8,0.1)),1000)
S <- cbind(s1,s2,s3)
X <- S %*% t(A)
res1<-AMUSE(X)
res1
coef(res1)
plot(res1) # compare to plot.ts(S)
MD(coef(res1),A)
# input of a time series
X2<- ts(X, start=c(1961, 1), frequency=12)
plot(X2)
res2<-AMUSE(X2, k=2)
plot(res2)
Results
R version 3.3.1 (2016-06-21) -- "Bug in Your Hair"
Copyright (C) 2016 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)
R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type 'license()' or 'licence()' for distribution details.
R is a collaborative project with many contributors.
Type 'contributors()' for more information and
'citation()' on how to cite R or R packages in publications.
Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.
> library(JADE)
> png(filename="/home/ddbj/snapshot/RGM3/R_CC/result/JADE/AMUSE.Rd_%03d_medium.png", width=480, height=480)
> ### Name: AMUSE
> ### Title: AMUSE Method for Blind Source Separation
> ### Aliases: AMUSE AMUSE.default AMUSE.ts
> ### Keywords: multivariate ts
>
> ### ** Examples
>
> # creating some toy data
> A<- matrix(rnorm(9),3,3)
> s1 <- arima.sim(list(ar=c(0.3,0.6)),1000)
> s2 <- arima.sim(list(ma=c(-0.3,0.3)),1000)
> s3 <- arima.sim(list(ar=c(-0.8,0.1)),1000)
>
> S <- cbind(s1,s2,s3)
> X <- S %*% t(A)
>
> res1<-AMUSE(X)
> res1
W :
[,1] [,2] [,3]
[1,] 0.63997459 0.2131164 0.4644763
[2,] 0.54414996 -0.1779521 0.5748095
[3,] 0.01891987 0.3358455 0.3277988
EV :
[1] 0.6931903 -0.3593242 -0.8984338
k :
[1] 1
> coef(res1)
[,1] [,2] [,3]
[1,] 0.63997459 0.2131164 0.4644763
[2,] 0.54414996 -0.1779521 0.5748095
[3,] 0.01891987 0.3358455 0.3277988
> plot(res1) # compare to plot.ts(S)
> MD(coef(res1),A)
[1] 0.07211348
>
> # input of a time series
> X2<- ts(X, start=c(1961, 1), frequency=12)
> plot(X2)
> res2<-AMUSE(X2, k=2)
> plot(res2)
>
>
>
>
>
> dev.off()
null device
1
>