Как объединить данные за месяц, день и неделю?

11

Google Trends возвращает еженедельные данные, поэтому мне нужно найти способ объединить их с моими ежедневными / ежемесячными данными.

Пока что я разбил каждую серию на ежедневные данные, например:

от:

2013-03-03 - 2013-03-09 37

чтобы:

2013-03-03 37 2013-03-04 37 2013-03-05 37 2013-03-06 37 2013-03-07 37 2013-03-08 37 2013-03-09 37

Но это добавляет сложности моей проблеме. Я пытался предсказать результаты поиска в Google по значениям за последние 6 месяцев или по 6 значениям в ежемесячных данных. Ежедневные данные подразумевают работу на 180 прошлых значений. (У меня есть данные за 10 лет, поэтому 120 баллов в месячных данных / 500+ в еженедельных данных / 3500+ в ежедневных данных)

Другой подход заключается в «объединении» ежедневных данных в еженедельные / ежемесячные данные. Но некоторые вопросы возникают из этого процесса. Некоторые данные могут быть усреднены, потому что их сумма представляет что-то. Например, количество осадков за определенную неделю будет суммой сумм за каждый день, составляющий недели.

В моем случае я имею дело с ценами, финансовыми ставками и другими вещами. Для цен в моем поле принято учитывать объем обмена, поэтому еженедельные данные будут средневзвешенными. Для финансовых ставок это немного сложнее, некоторые формулы используются для построения еженедельных ставок из дневных ставок. Что касается других вещей, я не знаю основных свойств. Я думаю, что эти свойства важны, чтобы избежать бессмысленных показателей (например, среднее значение финансовых показателей было бы бессмысленным).

Итак, три вопроса:

Для известных и неизвестных свойств, как мне перейти от ежедневных к еженедельным / ежемесячным данным?

Я чувствую, что разбивать еженедельные / ежемесячные данные на ежедневные данные, как я сделал, несколько неправильно, потому что я ввожу количества, которые не имеют смысла в реальной жизни. Итак, почти тот же вопрос:

Для известных и неизвестных свойств, как мне перейти от еженедельных / ежемесячных к ежедневным данным?

И последнее, но не менее важное: что лучше для двух временных рядов с разными временными шагами: использовать самый низкий или самый большой временной шаг? Я думаю, что это компромисс между количеством данных и сложностью модели, но я не вижу убедительных аргументов в пользу выбора между этими вариантами.

Изменить: если вы знаете инструмент (в R Python и Excel), чтобы сделать это легко, было бы очень полезно.

lcrmorin
источник
для python стандартным инструментом являются панды. Он был специально разработан для работы с финансовыми данными временных рядов.
серии времени
Уход расширить немного о том , что вы имеете в виду под «неизвестным свойством»?
TheGrimmScientist

Ответы:

8

когда даны два ряда с разными шагами по времени, что лучше: Используя низкий или самый большой шаг по времени?

Для анализа временных рядов вы должны выполнить оба действия: получить максимально возможную гранулярность с ежедневным набором данных, а также повторить анализ с ежемесячным набором данных. С ежемесячным набором данных у вас есть 120 точек данных, что достаточно для получения модели временных рядов даже с учетом сезонности в ваших данных.

Для известных и неизвестных свойств, как мне перейти от ежедневных к еженедельным / ежемесячным данным?

Чтобы получить, например, еженедельные или ежемесячные данные из ежедневных данных, вы можете использовать функции сглаживания. Для финансовых данных вы можете использовать скользящее среднее или экспоненциальное сглаживание, но если они не работают для ваших данных, то вы можете использовать функцию сглаживания сплайнов «smooth.spline» в R: https://stat.ethz.ch/R -manual / R-заплата / библиотека / статистика / HTML / smooth.spline.html

Модель вернулась будет меньше шума, чем оригинальный ежедневный набор данных, и вы можете получить значения для требуемых моментов времени. Наконец, эти точки данных могут быть использованы в анализе временных рядов.

Для известных и неизвестных свойств, как мне перейти от еженедельных / ежемесячных к ежедневным данным?

Для получения ежедневных данных, когда у вас есть ежемесячные или еженедельные данные, вы можете использовать интерполяцию. Во-первых, вы должны найти уравнение для описания данных. Для этого вы должны построить данные (например, цену с течением времени). Когда вам известны факторы, эти факторы должны влиять на это уравнение. Когда факторы неизвестны, вы можете использовать уравнение наилучшего соответствия. Простейшей будет линейная функция или кусочно-линейная функция, но для финансовых данных это не сработает. В этом случае вы должны рассмотреть кусочно-кубическую сплайн-интерполяцию. Эта ссылка более подробно описывает возможные функции интерполяции: http://people.math.gatech.edu/~meyer/MA6635/chap2.pdf .

В R есть метод для выполнения интерполяции данных временных рядов. Здесь вы должны создать вектор с, скажем, недельными значениями и NA в промежутках для дневных значений, а затем использовать функцию «interpNA» для получения интерполированных значений для NA. Однако эта функция использует функцию «приблизительно» для получения интерполированных значений, которая применяет линейную или постоянную интерполяцию. Чтобы выполнить кубическую сплайн-интерполяцию в R, вы должны использовать вместо этого функцию «splinefun».

Следует иметь в виду, что модели временных рядов обычно выполняют какое-то усреднение для прогнозирования будущих значений, независимо от того, смотрите ли вы среди других на методы экспоненциального сглаживания или авторегрессионного интегрированного скользящего среднего (ARIMA). Таким образом, модель временных рядов для прогнозирования ежедневных значений может быть не лучшим выбором, но недельные или месячные модели могут быть лучше.

gchaks
источник
Кажется, это практический ответ. Не уверен, что это применимо к финансовым временным рядам из-за арбитража.
lcrmorin
Я думаю, что ответы на ваши вопросы все еще актуальны. Для модели таймсерии вы можете посмотреть на модели ARCH (авторегрессионными условной гетероскедастичности).
gchaks
Когда вы будете интерполировать, используя, например, кубический сплайн, в финансовых временных рядах, разве вы не будете вводить смещение в будущее? я думаю , что это может быть особенно важно , если внедрение для модели машинного обучения?
tsando
5

Я не эксперт в этой области, но я считаю, что ваш вопрос связан с агрегацией и дезагрегацией временных рядов . Если это так, вот некоторые, надеюсь, соответствующие ресурсы, которые могут помочь в решении вашей проблемы (первые пять пунктов являются основными, но репрезентативными, а последние два являются дополнительными):

Александр Блех
источник
2

Это не будет очень удовлетворительным ответом, но вот мое мнение ...

Для известных и неизвестных свойств, как мне перейти от ежедневных к еженедельным / ежемесячным данным?

Для известных и неизвестных свойств, как мне перейти от еженедельных / ежемесячных к ежедневным данным?

Один и тот же ответ для обоих: вы не можете сделать это для неизвестных свойств, и для известных свойств это будет зависеть от того, как были вычислены значения.

Как вы намекали на:

(например, средний процентный показатель будет бессмысленным)

Не существует единственного преобразования, которое будет уместным во всех случаях, независимо от того, известны ли свойства / значения или неизвестны. Даже с известными свойствами вам, вероятно, понадобится уникальное преобразование для каждого типа: среднее, медиана, мода, минимальное, максимальное, логическое и т. Д.

когда даны два ряда с разными шагами по времени, что лучше: Используя низкий или самый большой шаг по времени?

По возможности старайтесь сохранить полную детализацию наименьшего возможного шага. Предполагая, что вы знаете, как преобразовать значения, вы всегда можете свернуть шаги (например, день в месяц, месяц в год) ... но вы не обязательно сможете восстановить меньшие шаги из более крупных после преобразования с потерями ,

Чарли Гринбакер
источник
2

Для известных и неизвестных свойств, как мне перейти от ежедневных к еженедельным / ежемесячным данным?

Aggregation.

Например, у вас есть количество раз, когда люди искали «виджеты» каждый день. Сложите ежедневные итоги за месяц, чтобы получить месячные итоги. Мне нужно было бы увидеть больше подробностей о фактических данных, собранных при каждой детализации, чтобы дать вам более полную версию.

Для известных и неизвестных свойств, как мне перейти от еженедельных / ежемесячных к ежедневным данным?

Ты не можешь

В физике сопоставимой идеей является частота Найквиста . Общая идея заключается в том, что вы не можете добавить больше информации, чем то, что уже представлено в ваших данных, без ввода большего количества данных. Учитывая только день, когда кто-то выполнил запрос, как вы можете определить, в какое время дня этот запрос был выполнен? Вы можете сделать некоторые выводы, но единственный способ ответить на вопрос - это прямо или косвенно ввести в систему больше информации. Есть вещи, которые вы можете сделать, чтобы сделать обоснованные предположения о ежедневном состоянии месячных переменных (как упоминалось в gchaks, интерполяция), но ваши данные по-прежнему в основном ежемесячные данные, растянутые для ежедневного просмотра.

Что лучше, если даны два временных ряда с разными временными шагами: использование самого низкого или самого большого временного шага?

Это полностью зависит от того, что вы пытаетесь ответить.

Чем меньше зернистость будет более чувствительна к шуму и другим аномалиям. Лагер зернистость будет иметь возможность отвечать на вопросы более уверенно, но потерять некоторые из его полезности. Например, если вы пытаетесь узнать, когда люди начинают искать места проведения выходных, планируют узнать, когда начинать маркетинговые кампании для нового ночного клуба, вы захотите посмотреть на ежедневные данные, если не меньше. Если вы смотрите на общем тренде ночных клубов, чтобы выяснить, кто вы хотите инвестировать, то в месяц, вероятно, будет лучше.

TheGrimmScientist
источник
2

Возможность агрегировать данные, основанные на сегментах даты, является простой задачей при использовании программного обеспечения Tableau. Вы просто подключите свои данные к инструменту, а затем сможете перетаскивать метрические измерения и измерения даты в пространство основной части отчета. Tableau будет мгновенно взбивать агрегатных визуализации и / или таблицы, подробные данные, на лету. Вы можете группировать / сумма по год, квартал, месяц, неделя, день, час и т.д. (стандартный, встроенный, из функциональных возможностей коробки, предлагаемого инструмента)

Кроме того, если вы захотите включить дополнительные данные позже (что, как я полагаю, вы подразумевали под «неизвестными свойствами»), вы можете импортировать другой набор данных и легко добавить его к первому, если он также предлагает даты.

Я бы порекомендовал проверить бесплатную версию, которая, я считаю, называется Tableau Public.

Дипрадж Куннат
источник