Есть ли способ приблизить периодичность временных рядов в пандах? Для R объекты xts
имеют метод, называемый periodicity
, который служит именно для этой цели. Есть ли реализованный метод для этого?Как я могу приблизиться к периодичности периода панды Серия
Например, можно ли вывести частоту из временных рядов, которые не указывают частоту?
import pandas.io.data as web
aapl = web.get_data_yahoo("AAPL")
<class 'pandas.tseries.index.DatetimeIndex'>
[2010-01-04 00:00:00, ..., 2013-12-19 00:00:00]
Length: 999, Freq: None, Timezone: None
Частота этой серии может быть приближена к ежедневной.
Update:
Я думаю, что это может быть полезно, чтобы показать исходный код реализации АиР методы периодичности.
function (x, ...)
{
if (timeBased(x) || !is.xts(x))
x <- try.xts(x, error = "'x' needs to be timeBased or xtsible")
p <- median(diff(.index(x)))
if (is.na(p))
stop("can not calculate periodicity of 1 observation")
units <- "days"
scale <- "yearly"
label <- "year"
if (p < 60) {
units <- "secs"
scale <- "seconds"
label <- "second"
}
else if (p < 3600) {
units <- "mins"
scale <- "minute"
label <- "minute"
p <- p/60L
}
else if (p < 86400) {
units <- "hours"
scale <- "hourly"
label <- "hour"
}
else if (p == 86400) {
scale <- "daily"
label <- "day"
}
else if (p <= 604800) {
scale <- "weekly"
label <- "week"
}
else if (p <= 2678400) {
scale <- "monthly"
label <- "month"
}
else if (p <= 7948800) {
scale <- "quarterly"
label <- "quarter"
}
structure(list(difftime = structure(p, units = units, class = "difftime"),
frequency = p, start = start(x), end = end(x), units = units,
scale = scale, label = label), class = "periodicity")
}
Я думаю, что эта линия является ключом, который я не совсем понимаю, p <- median(diff(.index(x)))
Возможно, поможет преобразование Фурье? – Paul