Learn R Programming

dlm (version 1.1-6)

dlmModTrig: Create Fourier representation of a periodic DLM component

Description

The function creates a dlm representing a specified periodic component.

Usage

dlmModTrig(s, q, om, tau, dV = 1, dW = 0, m0, C0)

Value

An object of class dlm, representing a periodic component.

Arguments

s

the period, if integer.

q

number of harmonics in the DLM.

om

the frequency.

tau

the period, if not an integer.

dV

variance of the observation noise.

dW

a single number expressing the variance of the system noise.

m0

\(m_0\), the expected value of the pre-sample state vector.

C0

\(C_0\), the variance matrix of the pre-sample state vector.

Author

Giovanni Petris GPetris@uark.edu

Details

The periodic component is specified by one and only one of s, om, and tau. When s is given, the function assumes that the period is an integer, while a period specified by tau is assumed to be noninteger. Instead of tau, the frequency om can be specified. The argument q specifies the number of harmonics to include in the model. When tau or omega is given, then q is required as well, since in this case the implied Fourier representation has infinitely many harmonics. On the other hand, if s is given, q defaults to all the harmonics in the Fourier representation, that is floor(s/2).

The system variance of the resulting dlm is dW times the identity matrix of the appropriate dimension.

References

Giovanni Petris (2010), An R Package for Dynamic Linear Models. Journal of Statistical Software, 36(12), 1-16. https://www.jstatsoft.org/v36/i12/.
Petris, Petrone, and Campagnoli, Dynamic Linear Models with R, Springer (2009).
West and Harrison, Bayesian forecasting and dynamic models (2nd ed.), Springer (1997).

See Also

dlmModSeas, dlmModARMA, dlmModPoly, dlmModReg

Examples

Run this code
dlmModTrig(s = 3)
dlmModTrig(tau = 3, q = 1) # same thing
dlmModTrig(s = 4) # for quarterly data
dlmModTrig(s = 4, q = 1)
dlmModTrig(tau = 4, q = 2) # a bad idea!
m1 <- dlmModTrig(tau = 6.3, q = 2); m1
m2 <- dlmModTrig(om = 2 * pi / 6.3, q = 2)
all.equal(unlist(m1), unlist(m2))

Run the code above in your browser using DataLab