Как найти корреляции между данными во времени?

Вопрос или проблема

У меня есть ежедневные данные о моих продажах и ежедневное обновление о том, как увеличиваются случаи COVID-19. Мои ежедневные продажи содержат информацию о моих клиентах и о моем продукте. Моя конечная цель – увидеть, связаны ли определенные продукты (продаются больше или меньше) после COVID, чем до. Или если в некоторых регионах было больше продаж до или после COVID.

Моя начальная идея заключалась в том, чтобы провести какой-то анализ событий и сравнить, есть ли у меня больше продаж до и после этого определенного события. У кого-то есть опыт в этом или могут ссылаться на какие-либо статьи/источники по этой теме?

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

Сначала вам нужно будет агрегировать данные о продажах на уровне дня и продукта для определенного региона или в целом.

Агрегация продаж на уровне дня и продукта

например,

день продукт продажи

день_1 p1 продажи_1
день_2 p1 продажи_2
день_3 p1 продажи_3
день_4 p1 продажи_4

день_n p1 продажи_n

аналогично для каждого продукта. например, p2, p3 ….

Случаи COVID-19 на уровне дня

Затем у вас могут быть данные о COVID-19 для этого региона или в целом.

день covid_19_count

день_1 количество_1
день_2 количество_2
день_3 количество_3
день_4 количество_4

день_n количество_n

Объедините данные о продажах и случаях COVID-19

Затем создайте одну таблицу, содержащую день, продажи и covid_19_count для этого региона.

день продукт продажи covid_19_count

день_1 p1 продажи_1 количество_1
день_2 p1 продажи_2 количество_2
день_3 p1 продажи_3 количество_3
день_4 p1 продажи_4 количество_4

день_n p1 продажи_n количество_n

Расчет корреляции

Затем рассчитайте корреляцию между продажами и covid_19_count для данного продукта в этом конкретном регионе или в целом.

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

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

Давайте возьмем пример, используя Python.

Два случайных массива чисел со средним = 100 и стандартным отклонением = 10 генерируются в Python.

mu_1, sigma_1 = 100, 10 # среднее и стандартное отклонение
mu_2, sigma_2 = 100, 10 # среднее и стандартное отклонение
data1 = np.random.normal(mu_1, sigma_1, 1000)
data2 = np.random.normal(mu_2, sigma_2, 1000)

Результаты коинтеграции генерируются в Python с использованием ts.coint:

>>> coin_result = ts.coint(data1, data2)
>>> coin_result

(-31.93013915989978, 0.0, array([-3.90743646, -3.34225305, -3.04869817]))

С p-значением 0.0 это подразумевает, что два ряда полностью коинтегрированы, что мы бы ожидали, поскольку они оба следуют нормальному распределению и имеют одинаковое среднее и стандартное отклонение. Если бы p-значение было больше 0.05, тогда было бы указано, что ряды не коинтегрированы на уровне значимости 5%.

Тем не менее, реальность будет иной, поскольку два ряда никогда не следуют точно одному и тому же распределению. Даже если два ряда коинтегрированы, это никогда не будет идеальной коинтеграцией.

В вашем случае вы могли бы проверить, показывают ли колебания продаж и случаи COVID-19 коинтеграцию. Однако я бы добавил, что вы должны использовать активные случаи, а не просто количество случаев.

Это связано с тем, что общее количество случаев никогда не может уменьшиться, оно может только увеличиваться или оставаться на том же уровне. Учитывая, что вы неизбежно будете видеть колебания в продажах, тогда значительно отличающиеся распределения будут означать, что ваши ряды никогда не будут указаны как коинтегрированные – что может быть не совсем так в реальности.

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

Чтобы подытожить, я бы предпочел следующее:

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

a. Провести тест Чауа, чтобы увидеть, есть ли структурный разрыв между продажами до и после COVID-19.

b. Рассчитать описательную статистику по продажам за эти два периода, например, средние продажи до и после, стандартное отклонение продаж до и после и т. д.

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

Ответ или решение

Для анализа корреляции между данными за различные временные промежутки, в данном случае продажами и случаями COVID-19, вам следует следовать четкому и структурированному подходу. Ваша цель заключается в понимании изменения в продажах определённых продуктов до и после вспышки COVID-19, а также в выявлении региональных различий.

1. Сбор и подготовка данных

А. Агрегация данных по продажам

Сначала вам необходимо агрегировать данные о продажах на дневной основе и по каждому продукту. Это позволит представить данные в следующем формате:

day    product  sales
day_1  p1       sales_1
day_2  p1       sales_2
...
day_n  p2       sales_n

Б. Данные по COVID-19

Аналогично, вам потребуются ежедневные данные о количестве случаев COVID-19:

day   covid_19_count
day_1 count_1
day_2 count_2
...
day_n count_n

В. Объединение данных

После этого объедините обе таблицы, создав единую структуру данных, содержащую дату, информацию о продукте, продажи и количество случаев COVID-19:

day    product  sales   covid_19_count
day_1  p1       sales_1 count_1
day_2  p1       sales_2 count_2
...
day_n  p2       sales_n count_n

2. Проведение анализа корреляции

Для анализа взаимосвязи между продажами и случаями COVID-19 необходимо учитывать, что простое вычисление коэффициента корреляции может быть недостаточным. Вместо этого рекомендуется использовать более сложные методы.

А. Проверка на коинтеграцию

Коинтеграция позволит определить, существует ли долгосрочная связь между временными рядами (в данном случае — продажами и активными случаями COVID-19). Используйте Python для проведения анализа:

import numpy as np
import statsmodels.api as ts

# генерация случайных данных для примера
data1 = np.random.normal(100, 10, 1000)
data2 = np.random.normal(100, 10, 1000)

# проверка коинтеграции
coin_result = ts.coint(data1, data2)
print(coin_result)

Если p-значение меньше 0.05, это будет указывать на наличие коинтеграции, что может служить основанием для дальнейшего анализа.

Б. Тест на структурные изменения (Chow Test)

После того как вы определите, что продажа и случаи COVID-19 коинтегрированы, вы можете использовать тест Чоу для выявления возможных структурных изменений в рядах данных до и после начала пандемии. Это поможет показать, изменились ли продажа одних продуктов после начала пандемии по сравнению с периодом до неё.

Код для теста Чоу может выглядеть примерно так:

from statsmodels.stats.diagnostic import breaks_cusumolsresid

# ваши данные
y = ваш_вектор_продаж
model = sm.OLS(y, X).fit()  # X - ваши независимые переменные
breaks_cusumolsresid(model.resid)

3. Статистический анализ

Для более полного понимания последствий COVID-19 для продаж определённых продуктов и регионов следует провести статистический анализ. Рассмотрите возможность вычисления описательных статистик для периодов «до» и «после»:

  • Среднее значение продаж
  • Стандартное отклонение
  • Максимум и минимум продаж

Заключение

Основной вывод состоит в том, что для выявления корреляции между продажами и случаями COVID-19 необходимо не только использование простых методов корреляционного анализа, но и применение более продвинутых статистических тестов, таких как коинтеграция и тест Чоу. Это позволит получить более уверенные и значимые результаты, которые учитывают сложность изменяющихся рынков и различных влияний, проявляющихся внутри временных рядов.

Оцените материал
Добавить комментарий

Капча загружается...