Я пытался получить средние месячные значения для финансового индекса, но не могу заставить их точно соответствовать календарному месяцу с помощью TimeSeriesAggregate.
Например. будь то
Data2018AgM = TimeSeriesAggregate[FinancialData["HP", "2018"], "Month"];
Column[Data2018AgM]
Выдает значения для января-1 февраля, 2 февраля-1 марта, 2 марта-1 апреля и т. д.
{{1, "Month"}, {-1, "Day"}}
Выдает значения для января - 31 января, 1 февраля - 27 февраля, 28 февраля - 27 марта и т. д.
“EndOfMonth”
Выдает значения для января - 30 января, 31 января - 27 февраля, 28 февраля - 30 марта и т. д.
Мне нужно, чтобы данные точно соответствовали окнам с 1 по 31 января, с 1 по 28 февраля, с 1 по 31 марта, с 1 по 30 апреля (...), но не смог. Должен быть простой элегантный способ сделать это, который мне не хватает.
Любая помощь будет оценена по достоинству.
Я экспериментировал с несколькими различными спецификациями окон, но не смог добиться среднего значения TimeSeriesAggregate
за целые месяцы. Сначала я подумал, что это может быть потому, что FinancialData
возвращает даты в форме {YYYY, MM, DD}
, а не DateObject
, поэтому я попробовал это
data = {DateObject[First[#]], Last[#]} & /@ FinancialData["HP", "2018"];
TimeSeriesAggregate[data, "Month"]
Но все равно это было неверно. Похоже на ошибку в TimeSeriesAggregate
.
Вот способ вычислить среднее значение по месяцам
byMonth = GroupBy[data, DateValue[First[#], "MonthName"] &, #[[All, 2]] &];
meanByMonth = Mean[#] & /@ byMonth
Оценивает до
<|"January" -> 70.09, "February" -> 66.39, "March" -> 65.7829, "April" -> 70.189, "May" -> 69.5391, "June" -> 64.3086, "July" ->
62.4019, "August" -> 63.3765, "September" -> 65.9926, "October" -> 70.4233|>