Learn R Programming

kzfs (version 1.5.0.2)

smpg: Smooth and Plot One Dimensional Kolmogorov-Zurbenko Periodogram

Description

kz.smpg is designed to smooth and plot 1D KZ periodogram easily. It will calculate the raw periodogram, mark the spikes, smooth the periodogram, and then output the plot.

Usage

kz.smpg(x, dpct = 0.01, rg = c(0, 0.5), log = F, plot = F, ...)

Arguments

x

The data vector for analyses. Missing values are allowed.

dpct

A pre-specified percentage of total variation. Defaults to 1%.

rg

The frequency range of the outputted periodogram. Default is 0 to 0.5.

log

TRUE or FLASE. Use log scale for output periodogram. Defaults to FLASE.

plot

TRUE or FLASE. Flag for output periodogram plot or not. Defaults to FLASE.

...

Other arguments.

  • m : The window size for a regular Fourier transform

  • k : The number of iterations for the KZFT

  • n : The sampling frequency rate as a multiplication of the Fourier frequencies

  • p : The distance between two successive intervals as a percentage of the total length of the data series

  • w : Size of smoothing window. Default value is 20.

  • lvl : "min" or "max". Threshold strategy for marking frequency spikes. "min" is used for cases with weak singles mixed with dominating strong spikes. Defaults to "max".

  • cut : Set the minimum value for a marked frequency spike. Recommend to use argument lvl instead of setting this value directly.

Value

Data frame for outputted periodogram, including column spg for the periodogram values, and freq for the frequencies.

Details

The smoothing process is based on a modified DiRienzo-Zurbenko (DZ) method, for which the smoothing window is not symmetric around the value point. The smoothing algorithm is implemented in C.

See Also

kzp, kzp2, kz.ft

Examples

Run this code
# NOT RUN {
## Adapted from kzft::kzp example 2
t <- 1:2000
y <- 1.1*sin(2*pi*0.0339*t)+7*sin(2*pi*0.0366*t)+5*rnorm(length(t),0,1)
y[sample(t,100,replace=FALSE)] <- NA

# }
# NOT RUN {
# system.time(op <- kz.smpg(y, dpct=0.0001, rg=c(0.025,0.05),  
#		plot=TRUE, log=TRUE, lvl="min", n=10, k=2))
# }
# NOT RUN {
op <- kz.smpg(y, dpct=0.0000, f=c(0.0339,0.0366), rg=c(0.025,0.05), 
	n=10, k=2, plot=TRUE, lvl="min", log=FALSE)
# }

Run the code above in your browser using DataLab