Teknik Analiz Dünyasına Hoşgeldiniz. Paylaşmak Güzeldir.

Yayından kaldırmak istediğiniz formüller için algoritmabul@gmail.com ile iletişime geçebilirsiniz... 

  • DİKKAT: Formüller, Sistemler sadece eğitim amaçlıdır. Alım satım, olası anapara kaybı ve diğer kayıplar dahil olmak üzere "YÜKSEK RİSK" içerir.

Makine Öğrenimi - Python AutoRegressive Integrated Moving Average (ARIMA)

Machine Learning Algorithms - Makine Öğrenimi Algoritmaları BORSA

algoritma

eiπ + 1 = 0
Algorithmist
Algoritma
Katılım
23 Eki 2020
Mesajlar
1,797
ARIMA (AutoRegressive Integrated Moving Average)

Zaman serisi analizi ve tahmininde yaygın olarak kullanılan bir istatistiksel yöntemdir. ARIMA modeli, verilerin içindeki trendleri, dönemsel desenleri ve rassal dalgalanmaları yakalamak için kullanılır. ARIMA, önceki gözlemleri ve hata terimlerini kullanarak gelecekteki değerleri tahmin eder.

ARIMA modeli üç temel bileşenle tanımlanır:
  1. AR (AutoRegressive - Otoregresif) Terimler: Bu bileşen, önceki zaman noktalarının tahmin için kullanıldığı otoregresif terimleri ifade eder. Önceki zaman noktaları, gelecekteki değerleri tahmin etmek için kullanılır.
  2. I (Integrated - Entegre) Terimler: Bu bileşen, verilerin farklarını alarak veri serisinin durağan hale getirilmesini ifade eder. Durağanlık, verilerin sabit bir ortalama ve varyansa sahip olduğu anlamına gelir.
  3. MA (Moving Average - Hareketli Ortalama) Terimler: Bu bileşen, önceki hataları tahmin için kullanılan hareketli ortalama terimlerini ifade eder. Hatalar, modelin tahminlerinin gerçek değerlerden ne kadar sapabileceğini düzeltmek için kullanılır.
ARIMA modellerinin parametreleri şunlardır:
  • p (AR terimi): Otoregresif terimlerin sayısı, yani önceki zaman noktalarının sayısı.
  • d (I terimi): Durağanlık elde etmek için fark alma işlemi sayısı.
  • q (MA terimi): Hareketli ortalama terimlerin sayısı, yani önceki hataların sayısı.
ARIMA modeli, verilerin durağanlığı ve dönemsel yapıları tahmin etmek için analiz edilir. Bu nedenle veri serisinin incelenmesi ve uygun parametrelerin seçilmesi önemlidir. ARIMA modeli, gelecekteki zaman serisi değerlerini tahmin etmek için kullanılabilir.

Python'da ARIMA modeli oluşturmak ve tahminler yapmak için yaygın olarak kullanılan kütüphaneler arasında statsmodels, pmdarima ve Prophet gibi bulunmaktadır. ARIMA modelinin nasıl oluşturulacağına dair örnek kodlar ve örnekler bu kütüphanelerin dokümantasyonlarında bulunabilir.
 

algoritma

eiπ + 1 = 0
Algorithmist
Algoritma
Katılım
23 Eki 2020
Mesajlar
1,797
ARIMA (AutoRegressive Integrated Moving Average) modelinin temel bir versiyonu vardır, ancak ARIMA'nın farklı varyasyonları ve gelişmiş modelleri mevcuttur. Bu varyasyonlar, özellikle zaman serisi verilerinin özel özelliklerine veya durağanlık düzeyine bağlı olarak tasarlanmıştır. İşte bazı ARIMA türevleri ve ilgili modeller:
  1. SARIMA (Seasonal ARIMA): SARIMA, mevsimsel etkilere sahip zaman serileri için uyarlanmış bir ARIMA modelidir. Mevsimsel etkilere sahip verilerdeki tekrarlanan dönemsel desenleri ve etkileri yakalamak için kullanılır.
  2. SARIMAX (Seasonal ARIMA with Exogenous Variables): SARIMAX, SARIMA modeline dışsal (exogenous) değişkenlerin eklenmesine olanak tanır. Bu, mevsimsel etkilere sahip zaman serilerini, dışsal faktörlerin etkisiyle daha iyi açıklamak ve tahmin etmek için kullanılır.
  3. ARIMAX (ARIMA with Exogenous Variables): ARIMAX modeli, durağanlık düzeyi olan zaman serilerine dışsal değişkenlerin eklenmesine olanak tanır. Bu, durağanlık düzeyine sahip olmayan verileri modellemek ve tahmin etmek için kullanılır.
  4. VARMA (Vector Autoregressive Moving Average): VARMA, çok değişkenli zaman serilerini modellemek için kullanılır. Birden fazla değişkenin zaman serileri, bu modelle bir araya getirilir.
  5. GARCH (Generalized Autoregressive Conditional Heteroskedasticity): GARCH modeli, volatilite değişkenliği ve dalgalanmaları açıklamak için kullanılır. Özellikle finansal verilerdeki volatilite tahminleri için kullanılır.
  6. Prophet: Prophet, günlük seviyede ölçülen zaman serilerini modellemek ve tahmin etmek için kullanılan bir açık kaynaklı bir modeldir. Facebook tarafından geliştirilmiştir ve özellikle günlük zaman serileri için uygun bir modeldir.
Bu, ARIMA modelinin çeşitli türevleri ve ilgili modellerin bazı örnekleridir. Hangi modelin kullanılacağı, verilerin durağanlık düzeyine, mevsimsel desenlere ve modelin amacına bağlı olarak değişir. Her bir modelin kendine özgü özellikleri ve parametreleri vardır, bu nedenle verilerinizin özelliğine en uygun modeli seçmek için analiz yapmanız önemlidir.
 

algoritma

eiπ + 1 = 0
Algorithmist
Algoritma
Katılım
23 Eki 2020
Mesajlar
1,797
DARIMA modelinin temel bileşenleri şunlardır:
  1. Differencing (Fark Alma): Veri serisinin mevsimsel ve/veya trendsel değişimlerini düzgünleştirmek için fark alınır. Bu, veri serisindeki durağanlık koşulunu sağlamak amacıyla yapılır.
  2. AutoRegressive (AR) Terimleri: Önceki dönemlerdeki değerlere bağlı olarak gelecekteki değerleri tahmin etmek için kullanılır. AR terimleri, serinin otokorelasyonunu temsil eder.
  3. Integrated (Entegrasyon): İlk fark alımının ardından seriyi durağan hale getirmek için kaç kez fark alınması gerektiğini ifade eder. Entegrasyon derecesi, seriyi durağan hale getirebilmek için kaç kez fark alınması gerektiğini belirtir.
  4. Moving Average (MA) Terimleri: Geçmiş hatalara bağlı olarak gelecekteki değerleri tahmin etmek için kullanılır. MA terimleri, serinin hata terimlerinin otokorelasyonunu temsil eder.
  5. Seasonal (Mevsimsel): Mevsimsel etkileri modellemek ve mevsimsel desenleri ele almak için kullanılır. Mevsimsel terimler, zaman serisindeki düzenli tekrarlanan desenleri temsil eder.
DARIMA modeli, zaman serisinin analizinde ve tahmininde oldukça etkilidir. Bu model, verilerin mevsimsel ve trendsel değişimlerini dikkate alarak gelecekteki değerleri tahmin etmek için kullanılır. Modelin karmaşıklığı, veri serisinin özelliklerine ve mevsimsel etkilerin yoğunluğuna bağlı olarak değişebilir. DARIMA modeli, zaman serisi analizi alanında yaygın olarak kullanılan bir yöntemdir.

SARIMA (Seasonal AutoRegressive Integrated Moving Average)

Zaman serileri analizi ve tahmini için kullanılan bir istatistiksel model türüdür. SARIMA, ARIMA (AutoRegressive Integrated Moving Average) modelinin mevsimsel bileşenleri ile genişletilmiş bir versiyonudur. ARIMA modeli, genellikle trend ve istasyoner olmayan bir zaman serisini düzgünleştirmek ve gelecekteki değerleri tahmin etmek için kullanılırken, SARIMA modeli mevsimsel değişkenlerin etkisini de ele alır.

SARIMA modelinin temel özellikleri şunlardır:
  1. AR (AutoRegressive) Bileşeni: Aynı zamansal dönemin önceki dönemlerdeki değerlere bağlı ilişkileri modeller. AR bileşeni "p" derecesi ile ifade edilir ve "AR(p)" olarak bilinir.
  2. I (Integrated) Bileşeni: Verinin fark alınarak durağan hale getirilmesini ifade eder. I bileşeni "d" derecesi ile ifade edilir.
  3. MA (Moving Average) Bileşeni: Hata terimlerinin geçmiş dönemlerdeki ağırlıklı birleşimini ifade eder. MA bileşeni "q" derecesi ile ifade edilir ve "MA(q)" olarak bilinir.
  4. Mevsimsel Bileşenler: SARIMA modeli, mevsimsel etkileri modellemek için mevsimsel AR, I ve MA bileşenlerini içerir. Mevsimsel AR bileşeni "P" derecesi ile ifade edilir, mevsimsel I bileşeni "D" derecesi ile ifade edilir ve mevsimsel MA bileşeni "Q" derecesi ile ifade edilir.
SARIMA modeli, zaman serilerinin hem trend hem de mevsimsel etkilerini modellemek için kullanılır. Bu, özellikle mevsimsel verilere sahip veri kümeleri için uygundur, çünkü SARIMA modeli mevsimsel değişkenlerin etkisini hesaba katar.

SARIMA modeli, zaman serileri analizi ve tahmini için kullanışlıdır ve istasyoner olmayan verileri analiz etmek ve gelecekteki değerleri tahmin etmek için yaygın olarak kullanılır. SARIMA modeli, veri analizi ve tahmini işlemlerinde özellikle finansal zaman serileri, ekonomik veriler ve mevsimsel veriler gibi birçok uygulamada kullanılmaktadır.
DARIMA (Difference AutoRegressive Integrated Moving Average) modeli, zaman serisi analizi için kullanılan bir istatistiksel modeldir. Bu model, zaman serisinin düzgünleştirilmesi ve tahmin edilmesi için kullanılır. DARIMA, ARIMA modelinin bir genişlemesi olarak kabul edilebilir ve veri serisindeki mevsimsel değişiklikleri de ele alabilir.

VARIMA (Vector AutoRegressive Integrated Moving Average)

Birden fazla zaman serisini aynı anda analiz etmek ve tahmin etmek için kullanılan bir istatistiksel model türüdür. VARIMA, temelde ARIMA modelinin çoklu serilere genişletilmiş bir versiyonudur. Bu model, zaman serileri arasındaki ilişkileri incelemek ve tahmin etmek için kullanılır.

VARIMA modelinin temel özellikleri şunlardır:
  1. Çoklu Zaman Serileri: VARIMA modeli, iki veya daha fazla zaman serisini aynı anda modelleyebilir. Bu zaman serileri genellikle birbirleriyle ilişkilidir ve bu ilişkileri incelemek önemlidir.
  2. ARIMA Temel Bileşenleri: VARIMA modeli, ARIMA modelinin temel bileşenlerini içerir, yani AR (AutoRegressive), I (Integrated), ve MA (Moving Average) bileşenlerini. Ancak bu bileşenler her bir zaman serisi için ayrı ayrı tanımlanır.
  3. Çapraz Bağlantılar: VARIMA modeli, zaman serileri arasındaki çapraz ilişkileri incelemek için kullanılır. Bu, bir zaman serisinin geçmiş değerlerinin başka bir zaman serisinin mevcut veya gelecekteki değerlerini tahmin etmek için kullanılabilir.
VARIMA modeli, özellikle ekonomik ve finansal veriler gibi birden fazla bağımlı zaman serisinin analizi için kullanışlıdır. Model, Granger nedensellik testleri gibi yöntemlerle zaman serileri arasındaki nedensel ilişkileri incelemek ve analiz etmek için kullanılabilir.

VARIMA modelinin uygulanması, zaman serileri analizi ve tahmini için özel yazılım veya programlama dilleri gibi araçlar kullanılarak yapılabilir. Bu model, çeşitli sektörlerde zaman serileri verilerinin analizi ve tahmini için kullanılır ve özellikle ekonometri ve ekonomik veri analizi alanlarında önemlidir.
 

algoritma

eiπ + 1 = 0
Algorithmist
Algoritma
Katılım
23 Eki 2020
Mesajlar
1,797
Bir model oluşturalım
Kod:
import pandas as pd
import yfinance as yf
import matplotlib.pyplot as plt
import pmdarima as pm
import numpy as np
from sklearn.metrics import mean_squared_error, mean_absolute_error, r2_score
import math

# Veriyi yükle
data = pd.read_csv('xu100/sise.is.csv')
data["Date"] = pd.to_datetime(data["Date"])
data = data[["Date", "Close"]]
data = data.tail(98)

best_order = (0, 0, 0)
best_seasonal_order = (0, 0, 0, 0)

# Tüm olası kombinasyonları dene
for p in range(5):
    for d in range(2):
        for q in range(5):
            for P in range(2):
                for D in range(2):
                    for Q in range(2):
                        for m in [12]:
                            order = (p, d, q)
                            seasonal_order = (P, D, Q, m)
                            try:
                                arima_model = pm.ARIMA(order=order, seasonal_order=seasonal_order, suppress_warnings=True, error_action="ignore")
                                arima_model.fit(data["Close"])
                                if arima_model.aic() < best_aic:
                                    best_aic = arima_model.aic()
                                    best_order = order
                                    best_seasonal_order = seasonal_order
                            except:
                                pass

# En iyi modeli seç
print(f"En iyi ARIMA order: {best_order}")
print(f"En iyi ARIMA seasonal order: {best_seasonal_order}")

# ARIMA modeliyle tahminler yap
arima_model = pm.ARIMA(order=best_order, seasonal_order=best_seasonal_order)
arima_model.fit(data["Close"])
arima_forecast = arima_model.predict(n_periods=30)

# SARIMA modeliyle tahminler yap
sarima_model = pm.ARIMA(order=best_order, seasonal_order=best_seasonal_order)
sarima_model.fit(data["Close"])
sarima_forecast = sarima_model.predict(n_periods=30)

# Tahminleri çiz
last_date = data["Date"].iloc[-1]
forecast_dates = pd.date_range(start=last_date + pd.DateOffset(days=1), periods=30)
plt.plot(data["Date"], data["Close"], label="Gerçek Veri")
plt.plot(forecast_dates, arima_forecast, label="ARIMA Tahminler", linestyle="--")
plt.plot(forecast_dates, sarima_forecast, label="SARIMA Tahminler", linestyle="--")
plt.xlabel("Tarih")
plt.ylabel("Kapanış Fiyatı")
plt.title("ARIMA ve SARIMA Tahminleri")
plt.legend()
plt.grid()
plt.show()

sonuç
arima-sarima.jpg
 

algoritma

eiπ + 1 = 0
Algorithmist
Algoritma
Katılım
23 Eki 2020
Mesajlar
1,797
daha basit bir model
Kod:
import pandas as pd
import yfinance as yf
import datetime
from datetime import date, timedelta
import matplotlib.pyplot as plt
import pmdarima as pm
import numpy as np

# Veriyi yükle
data = pd.read_csv('xu100/sise.is.csv')
data["Date"] = pd.to_datetime(data["Date"])
data = data[["Date", "Close"]]
data = data.tail(98)

# Otomatik ARIMA modelini seç
model = pm.auto_arima(data["Close"], seasonal=True, m=12, stepwise=True, suppress_warnings=True, error_action="ignore", trace=True)
best_p, best_d, best_q = model.order

# Gelecekteki tahminleri yap
forecast_period = 30
arima_model = pm.ARIMA(order=(best_p, best_d, best_q), seasonal_order=(0, 0, 0, 0))
arima_model.fit(data["Close"])
predictions = arima_model.predict(n_periods=forecast_period)

# Tahminleri çiz
last_date = data["Date"].iloc[-1]
forecast_dates = pd.date_range(start=last_date + pd.DateOffset(days=1), periods=forecast_period + 1)
actual_and_forecast = np.append(data["Close"].tail(1), predictions)
plt.plot(data["Date"], data["Close"], label="Gerçek Veri")
plt.plot(forecast_dates, actual_and_forecast, label="Tahminler", linestyle="--")
plt.xlabel("Tarih")
plt.ylabel("Kapanış Fiyatı")
plt.title("ARIMA İle Kapanış Fiyatı Tahminleri")
plt.legend()
plt.grid()
plt.show()

# Son 10 günün tahminini ekrana yazdır
print("Son 10 Günün Tahmini:")
print(predictions)
arima-sarima.jpg

sonuç çıktıları incelenirse burada p d q sayılarını bilmemize imkan yok fakat her iki kodda pdq yu en iyeye ayarlıyor ve oyle tahmin ediyor
 

algoritma

eiπ + 1 = 0
Algorithmist
Algoritma
Katılım
23 Eki 2020
Mesajlar
1,797
en iyi p d q yu bulur aic ve bic e gore değil
Kod:
import pandas as pd
import yfinance as yf
import datetime
from datetime import date, timedelta
import matplotlib.pyplot as plt
import pmdarima as pm
import numpy as np

# Veriyi yükle
data = pd.read_csv('xu100/sahol.is.csv')
data["Date"] = pd.to_datetime(data["Date"])
data = data[["Date", "Close"]]
data = data.tail(98)

# Otomatik ARIMA modelini seç
model = pm.auto_arima(data["Close"], seasonal=True, m=12, stepwise=True, suppress_warnings=True, error_action="ignore", trace=True)
best_p, best_d, best_q = model.order

# Gelecekteki tahminleri yap
forecast_period = 30
arima_model = pm.ARIMA(order=(best_p, best_d, best_q), seasonal_order=(0, 0, 0, 0))
arima_model.fit(data["Close"])
predictions = arima_model.predict(n_periods=forecast_period)

# Tahminleri çiz
last_date = data["Date"].iloc[-1]
forecast_dates = pd.date_range(start=last_date + pd.DateOffset(days=1), periods=forecast_period + 1)
actual_and_forecast = np.append(data["Close"].tail(1), predictions)
plt.plot(data["Date"], data["Close"], label="Gerçek Veri")
plt.plot(forecast_dates, actual_and_forecast, label="Tahminler", linestyle="--")
plt.xlabel("Tarih")
plt.ylabel("Kapanış Fiyatı")
plt.title("ARIMA İle Kapanış Fiyatı Tahminleri")
plt.legend()
plt.grid()
plt.show()

# Son 10 günün tahminini ekrana yazdır
print("Son 10 Günün Tahmini:")
print(predictions)
arima-automatic.jpg
 

Forumdan daha fazla yararlanmak için giriş yapın yada üye olun!

Forumdan daha fazla yararlanmak için giriş yapın veya kayıt olun!

Kayıt ol

Forumda bir hesap oluşturmak tamamen ücretsizdir.

Şimdi kayıt ol
Giriş yap

Eğer bir hesabınız var ise lütfen giriş yapın

Giriş yap
Başlatan Benzer Konular Forum Cevap Tarih
algoritma A 5