Calculate periodogram for a time-course using Lomb-Scargle, fast Fourier
transform, or selected version of chi-square. The `spectr`

function is a
wrapper for the various methods. `lspgram`

is in turn a wrapper for
`lomb::lsp()`

, and `fftpgram`

a wrapper for `stats::spec.pgram()`

. Among the
versions of chi-square, it is highly recommended to use greedy, which has
lower bias than standard and lower variance than conservative.

## Usage

```
cspgram(
x,
deltat,
periodRange = c(18, 32),
method = c("greedy", "conservative", "standard"),
na.action = stats::na.fail,
dopar = FALSE
)
fftpgram(
x,
deltat,
periodRange = c(18, 32),
pad = 50,
na.action = stats::na.fail,
...
)
lspgram(x, deltat, time, periodRange = c(18, 32), ofac = 50)
spectr(
x,
deltat,
time,
periodRange = c(18, 32),
method = c("greedy_chisq", "conservative_chisq", "standard_chisq", "lombscargle",
"fft"),
ofac = 50,
pad = 50,
na.action = stats::na.fail,
dopar = FALSE,
...
)
```

## Arguments

- x
Numeric vector of measurements.

- deltat
Numeric value of the interval between time-points.

- periodRange
Numeric vector of the minimum and maximum values of the period to consider, in the same units as

`deltat`

or`time`

.- method
Character indicating which method to use. Can be an unambiguous substring of the full name.

- na.action
Function specifying how to handle

`NA`

values in`x`

. Default is`stats::na.fail()`

, which gives an error if any values are missing. Ignored for Lomb-Scargle.- dopar
Logical indicating whether to run calculations in parallel if a parallel backend is already set up, e.g., using

`doParallel::registerDoParallel()`

. Only used for chi-square.- pad
Numeric value of the proportion of the length of

`x`

by which to pad`x`

with zeros. Must be > 0. Only used for FFT.- ...
Other arguments passed to

`stats::spec.pgram()`

for FFT.- time
Numeric vector of time-points. Can be specified instead of

`deltat`

for Lomb-Scargle.- ofac
Integer value of the oversampling factor. Must be >= 1. Only used for Lomb-Scargle.

## Value

A `data.table`

with various columns depending on the method. For any
version of chi-square, columns will be `period`

, `chisq`

, `df`

, and
`log_pval`

. The log p-value is more reliable than the p-value, since R has
finite precision, so p-values less than about 5e-324 would be set to 0. For
Lomb-Scargle and FFT, columns will be `period`

and `power`

.

## Examples

```
library('data.table')
set.seed(1789)
deltat = 0.1
tau = 25
tt = seq(0, 24 * 3, deltat)
x = 3 * sin(tt / tau * 2 * pi) + rnorm(length(tt))
specCsp = spectr(x, deltat, method = 'greedy')
peakCsp = specCsp[which.min(log_pval)]
specLsp = spectr(x, deltat, method = 'lomb')
peakLsp = specLsp[which.max(power)]
specFft = spectr(x, deltat, method = 'fft')
peakFft = specFft[which.max(power)]
```