Generate periodic filters
sim_pcfilter.Rd
Generates periodic filters.
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 .
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.
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