Frequency Increment Test
Arguments
- object
A \(m \times p\)
numeric
matrix
ordata.frame
of count data (absolute frequencies giving the number of individuals for each category, i.e. a contingency table). Adata.frame
will be coerced to anumeric
matrix
viadata.matrix()
.- dates
A length-\(m\)
numeric
vector of dates.- ...
Currently not used.
- calendar
An
aion::TimeScale
object specifying the calendar ofdates
(seecalendar()
). Defaults to Gregorian Common Era.- level
A length-one
numeric
vector giving the confidence level.- roll
A
logical
scalar: should each time series be subsetted to look for episodes of selection?- window
An odd
integer
giving the size of the rolling window. Only used ifroll
isTRUE
.
Value
An IncrementTest
object.
Details
The Frequency Increment Test (FIT) rejects neutrality if the distribution of normalized variant frequency increments exhibits a mean that deviates significantly from zero.
If roll
is TRUE
, each time series is subsetted according to window
to
see if episodes of selection can be identified among variables that might
not show overall selection.
References
Feder, A. F., Kryazhimskiy, S. & Plotkin, J. B. (2014). Identifying Signatures of Selection in Genetic Time Series. Genetics, 196(2): 509-522. doi:10.1534/genetics.113.158220 .
Examples
## Data from Crema et al. 2016
data("merzbach", package = "folio")
## Keep only decoration types that have a maximum frequency of at least 50
keep <- apply(X = merzbach, MARGIN = 2, FUN = function(x) max(x) >= 50)
counts <- merzbach[, keep]
## Group by phase
## We use the row names as time coordinates (roman numerals)
dates <- as.numeric(utils::as.roman(rownames(counts)))
## Frequency Increment Test
freq <- fit(counts, dates, calendar = NULL)
## Plot time vs abundance
plot(freq, calendar = NULL, ncol = 3, xlab = "Phases")
## Plot time vs abundance and highlight selection
freq <- fit(counts, dates, calendar = NULL, roll = TRUE, window = 5)
plot(freq, calendar = NULL, ncol = 3, xlab = "Phases")