Однако методы, обсуждаемые в этой статье, могут применяться не только к финансовым временным рядам, но и ко многим другим областям. В этой статье вы узнаете, как идентифицировать выбросы, используя скользящую статистику.
— Идентификация выбросов с помощью фильтра Хампеля
— Выявление точек изменения во временном ряду
— Выявление трендов во временных рядах
- Использование показателя Херста для выявления закономерностей во временном ряду.
— Изучение общих характеристик доходности активов.
Скользящая статистика для обнаружения выбросов
Наблюдения, которые сильно отклоняются от большинства, при работе с данными называются выбросами. Это может произойти в результате неправильного ценообразования, рыночных событий или ошибок обработки данных. На статистические методы и алгоритмы машинного обучения могут сильно влиять выбросы, что приводит к неточным или необъективным результатам. Поэтому идентификация и управление этими выбросами имеют решающее значение перед разработкой любых моделей.
Используя скользящее среднее и стандартное отклонение, мы представляем простой метод, использующий фильтр для выявления выбросов. В течение 2019 и 2020 годов мы будем изучать цены акций Tesla.
Выполнение этой задачи включает в себя следующие шаги:
Следующие шаги помогут вам определить выбросы, используя скользящую статистику, и построить их график:
Должны быть включены необходимые библиотеки.
import pandas as pd import yfinance as yf
Чтобы вычислить простую доходность Tesla, получите цены на ее акции за период с 2019 по 2020 год.
df = yf.download("TSLA", start="2019-01-01", end="2020-12-31", progress=False) df["rtn"] = df["Adj Close"].pct_change() df = df[["rtn"]].copy()
Среднее значение скользящего окна за 21 день и стандартное отклонение следующие:
df_rolling = df[["rtn"]].rolling(window=21) \ .agg(["mean", "std"]) df_rolling.columns = df_rolling.columns.droplevel()
Добавьте скользящие данные в исходный DataFrame.
df = df.join(df_rolling)
Пределы должны быть определены на верхнем и нижнем концах.
N_SIGMAS = 3 df["upper"] = df["mean"] + N_SIGMAS * df["std"] df["lower"] =…