Выравнивание TimeSeriesAggregate с календарными месяцами - PullRequest
0 голосов
/ 17 октября 2018

Я пытался получить среднемесячные значения для финансового индекса, но не могу их точно согласовать с календарным месяцем, используя TimeSeriesAggregate.

Например,

Data2018AgM = TimeSeriesAggregate[FinancialData["HP", "2018"], "Month"];

Column[Data2018AgM]

Возвращает значения для января-февраля-1, февраля-марта-1, марта-апреля-1 и т. Д.

{{1, "Month"}, {-1, "Day"}}

Возвращает значения для января-января-31, февраля-27 февраля, 28 февраля-27 марта и т. Д.

“EndOfMonth”

Возвращает значения для января-января-30, января-февраля-27, февраля-марта-30 и т. Д.

Мне нужно, чтобы данные точно соответствовали окнам с 1 января по 31 января, 28 февраля, 28 марта, 31 апреля, 30 апреля (...), но я не смог.Должен быть простой элегантный способ сделать это, которого мне не хватает.

Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 18 октября 2018

Я экспериментировал с несколькими различными спецификациями окон, но не смог получить 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|>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...