Skip to contents

Generates periodic filters.

Usage

sim_pcfilter(period, n.root, order = n.root, mo.col, ...)

Arguments

period

the period.

n.root

number of non-zero roots (poles).

order

order of the filter.

...

additional parameters to be passed down to sim_mc.

mo.col

the last non-zero column in the top of the mc-matrix. The default is dim.

Details

Generates periodic filters using the multicompanion approach (Boshnakov and Iqelan 2009) .

By default the generated filter is stable and may be used as the autoregressive or moving average part of a periodic autoregressive moving average model. The filter is generated from the specified spectral information by factoring a multi-companion matrix. Any non-specified quantities are generated randomly. Randomly generated eigenvalues correspond to stable filter. The user may specify non-stable roots, unit roots in particular, see sim_mc.

Value

A list as obtained from sim_mc with an addtional component for the filter.

pcfilter

a matrix with the filter coefficients for the i-th season in the i-th row.

References

Boshnakov GN (2002). “Multi-companion matrices.” Linear Algebra Appl., 354, 53--83. ISSN 0024-3795, doi:10.1016/S0024-3795(01)00475-X .

Boshnakov GN, Iqelan BM (2009). “Generation of time series models with given spectral properties.” J. Time Series Anal., 30(3), 349--368. ISSN 0143-9782, doi:10.1111/j.1467-9892.2009.00617.x .

Author

Georgi N. Boshnakov

Note

todo: a) Allow different orders for the individual seasons. This is not trivial and maybe not natural for this method. In the singular case it may make sense to implement different strategies for choosing the factorization (when it is not unique) and to choose more carefully the order of the filter to ensure existence of factorization, see my paper.

See also

Examples

rfi <- sim_pcfilter(2,3)
rfi
#> $eigval
#> [1] -0.52546448+0.00000000i -0.05037456-0.06119371i -0.05037456+0.06119371i
#> 
#> $len.block
#> [1] 1 1 1
#> 
#> $mo
#> [1] 2
#> 
#> $eigvec
#>               [,1]                      [,2]                      [,3]
#> [1,] -0.3222813+0i  0.003378321-0.008471077i  0.003378321+0.008471077i
#> [2,] -0.4891777+0i -0.402569202+0.055240273i -0.402569202-0.055240273i
#> [3,]  0.6133265+0i  0.055425082+0.100832839i  0.055425082-0.100832839i
#> 
#> $co
#>               [,1]                  [,2]                  [,3]
#> [1,] -0.4891777+0i -0.4025692+0.0552403i -0.4025692-0.0552403i
#> [2,]  0.6133265+0i  0.0554251+0.1008328i  0.0554251-0.1008328i
#> 
#> $mo.col
#> [1] 3
#> 
#> $mat
#>            [,1]         [,2]        [,3]
#> [1,] -0.5926960 -0.009129852 -0.04260956
#> [2,] -0.3563008 -0.033517643  0.20514418
#> [3,]  1.0000000  0.000000000  0.00000000
#> 
#> $pcfilter
#>            [,1]        [,2]        [,3]
#> [1,] -0.3563008 -0.03351764  0.20514418
#> [2,] -0.2077054 -0.66670156 -0.01609165
#> 
mo <- cbind(c(1,1),rfi$pcfilter)
mo
#>      [,1]       [,2]        [,3]        [,4]
#> [1,]    1 -0.3563008 -0.03351764  0.20514418
#> [2,]    1 -0.2077054 -0.66670156 -0.01609165