# NOT RUN {
# Generating time series data
Nlength = 100; N = 150; p = 6; b = 3; threshold = 1e-8;
I = diag( p )
A = 0.5 * matrix( rbinom( p * p, 1, 0.2 ), p, p )
A[ lower.tri( A ) ] = 0
diag( A ) = 0.5
G = matrix( 0, p, p )
K = matrix( 0, p, p * Nlength )
lambda = seq( 0, Nlength - 1, 1 ) * 2 * base::pi / Nlength
K0 = matrix( 0, p, p * Nlength )
K_times = matrix( 1, p, p )
for( k in 1 : Nlength )
{ # Compute K0
K0[ , ( k * p - p + 1 ) : ( k * p ) ] = I + t( A ) %*% A +
complex( 1, cos( -lambda[ k ] ), sin( -lambda[ k ] ) ) * A +
complex( 1, cos( lambda[ k ] ), sin( lambda[ k ] ) ) * t( A )
K_times = K_times * ( K0[ , ( k * p - p + 1 ) : ( k * p ) ] != 0 )
diag( K[ , ( k * p - p + 1 ) : ( k * p ) ] ) = 1
}
G0 = K_times
diag( G0 ) = 0
D = K
# d is the Fourier coefficients of X
d = array( 0, c( p, Nlength, N ) )
x = array( 0, c( p, Nlength, N ) )
for( n in 1 : N )
{ # Generate X
e = matrix( rnorm( p * Nlength ), p, Nlength )
x[ , 1, n ] = e[ , 1 ]
for( t in 2 : Nlength )
x[ , t, n ] = A %*% x[ , t - 1, n ] + e[ , t ]
}
P = 0 * D
for( n in 1 : N )
{ # Compute Pk
X = x[ , , n ]
for( i in 1 : p )
d[ i, , n ] = fft( X[ i, ] )
for( i in 1 : Nlength )
P[,(i*p-p+1):(i*p)] = P[,(i*p-p+1):(i*p)]+d[,i,n] %*% t(Conj(d[,i,n]))
}
bdgraph.obj = bdgraph.ts( P, Nlength, N, iter = 1000 )
summary( bdgraph.obj )
compare( G0, bdgraph.obj, vis = TRUE )
# }
Run the code above in your browser using DataLab