تعریف سری زمانی به این شکله که مجموعه ای از داده ها که بر اساس زمان مرتب شده باشند، حالا این داده ها میتونن قیمت بیت کوین باشن یا فروش سالانه ی یک شرکت!
اگه بخوایم عوامل تاثیر گذار بر روی سری های زمانی رو نام ببریم میتونیم به چهار مورد اشاره کنیم.
منظور از روند، تغییرات دراز مدت در میانگین سری زمانی هست؛ تغییرات فصلی به تغییراتی میگیم که با دوره تناوب های کوچک تری رخ میدن؛ حرکت نوسانی در بازه های بزرگتر نسبت به تغییرات فصلی رو تغییرات دوره ای میگیم؛ در اخر هم در هر سری زمانی ممکن است عامل تصادفی وجود داشته باشه که غیر قابل پیش بینی بوده و به طریقی نامنظم رفتار میکنه که به اون تغییرات نامنظم میگیم.
برای پیدا کردن مقدار میانگین متحرک از مرتبه ی N در یک روز کافی است میانگین N روز قبل رو محاسبه کنیم.
برای مثال :
import yfinance as yf
import matplotlib.pyplot as plt
data = yf.download('BTC-USD', start="2021-01-01")
data['SMA30'] = data['Close'].rolling(100).mean()
plt.figure(figsize=(15, 10))
data['Close'].plot()
data['SMA30'].plot()
plt.ylabel('Close')
plt.xlabel(None)
plt.savefig("mygraph.png")
۲. روش نصف کردن داده ها
خیلی ساده میتونیم داده ها رو به دو قسمت تقسیم کنیم و میانگین هر کدوم رو بگیریم و به هم وصل کنیم!
۳. روش کمترین مربعات
در این روش به دنبال یافتن منحنی ای هستیم که حاصل جمع توان دوم های اختلاف مقادیر اون از داده های اصلی کمترین باشه
import yfinance as yf
import matplotlib.pyplot as plt
import numpy as np
from sklearn.linear_model import LinearRegression
data = yf.download('BTC-USD', start="2021-01-01")
lm = LinearRegression()
y = data['Close'].values
x = range(len(data['Close']))
x = np.array(x).reshape(-1, 1)
lm = lm.fit(x,y)
data['Trend'] = lm.predict(x)
plt.figure(figsize=(15, 10))
data['Close'].plot()
data['Trend'].plot()
plt.ylabel('Close')
plt.xlabel(None)
plt.savefig("mygraph.png")
ادامه دارد ...