Нарисуйте линию, соединяющую большинство точек данных во временных рядах - PullRequest
0 голосов
/ 19 мая 2019

Я хотел бы узнать, как нарисовать линию наилучшего соответствия или линию, которая соединяет большинство точек;одна строка для локальных минимас и другая строка для локальных максима.

Примерно так же, как на этом рисунке: enter image description here

Ниже приведены коды для поиска локальных минимас имаксимальные баллы

import numpy as np
import pandas as pd  
import matplotlib.pyplot as plt
from pandas_datareader import data as pdr
import fix_yahoo_finance as yf
yf.pdr_override() 

startdate = dt.date(2016, 1, 1)
#enddate = dt.date(2018, 10, 22)
today = dt.date.today()
index_ticker = "^GSPC"
index_df = pdr.get_data_yahoo(index_ticker, start=startdate, end=today)

from scipy.signal import argrelextrema
n=50 # number of points to be checked before and after 

# Find local peaks/bottoms
index_df['min'] = index_df.iloc[argrelextrema(index_df['Adj Close'].values, np.less_equal, order=n)[0]]['Adj Close']
index_df['max'] = index_df.iloc[argrelextrema(index_df['Adj Close'].values, np.greater_equal, order=n)[0]]['Adj Close']

# Plot results
plt.scatter(index_df['Adj Close'].index, index_df['min'], c='r')
plt.scatter(index_df['Adj Close'].index, index_df['max'], c='g')
plt.plot(index_df['Adj Close'].index, index_df['Adj Close'])
plt.show()

Я наткнулся на этот урок https://prappleizer.github.io/Tutorials/Plotting/Plotting.html, который рисует линию наилучшего соответствия с заштрихованной областью неопределенности.

enter image description here

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

Ценю, если кто-нибудь может посоветовать.Спасибо!

1 Ответ

0 голосов
/ 19 мая 2019

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

...