Convert a periodic time variable into components usable in linear models
Source:R/limorhyde.R
limorhyde.Rd
Decompose a periodic time variable into multiple components based on either the first harmonic of a Fourier series or on a periodic smoothing spline.
Usage
limorhyde(
time,
colnamePrefix = NULL,
period = 24,
sinusoid = TRUE,
nKnots = 3,
intercept = FALSE
)
Arguments
- time
Numeric vector of times, e.g., at which samples were acquired.
- colnamePrefix
Character string with which to prefix the column names of the basis.
- period
Number corresponding to the period to use for the decomposition (in the same units as
time
).- sinusoid
If
TRUE
, the decomposition is based on cosinor, i.e., cosine and sine. IfFALSE
, the decomposition is based on a periodic smoothing spline from thepbs
package.- nKnots
Number of internal knots for the periodic spline. Only used if
sinusoid
isFALSE
.- intercept
If
TRUE
, a column of ones will be included in the basis.
Value
A matrix with a row for each sample and a column for each component of the time decomposition.
Examples
# create an example data frame
nSamples = 12
d = data.frame(
sample = paste0('sample_', 1:nSamples),
genotype = factor(rep(c('WT', 'KO'), each = nSamples / 2),
levels = c('WT', 'KO')),
zt = rep(seq(0, 24 - 24 / nSamples * 2, 24 / nSamples * 2), times = 2),
stringsAsFactors = FALSE)
# call limorhyde
limo = limorhyde(d$zt, 'zt_')
d = cbind(d, limo)
# create a design matrix that could be used with methods such as limma
design = model.matrix(~ genotype * (zt_cos + zt_sin), data = d)