Python’da Ağırlıklı Hareketli Ortalamalar ile Veri Analizi

Ağırlıklı Hareketli Ortalama Nedir?

Ağırlıklı hareketli ortalama (Weighted Moving Average – WMA), bir dizi veri noktasının ortalamasını alırken, her bir noktaya farklı ağırlıklar atayarak hesaplanan bir ortalama türüdür. Bu, belirli veri noktalarına daha fazla önem vererek, zaman içinde değişen verilere daha fazla duyarlılık sağlar. Örneğin, son dönem verileri genellikle daha güncel ve önemli olabileceğinden, bu verilere daha yüksek ağırlıklar atanır. Bu yöntem, zaman serisi analizlerinde yaygın olarak kullanılmaktadır ve özellikle finansal piyasalarda talep ve fiyat hareketlerini analiz etmek için sıklıkla tercih edilir.

Ağırlıklı hareketli ortalama, basit hareketli ortalama (Simple Moving Average – SMA) ile kıyaslandığında daha esnek bir yapıya sahiptir. SMA, tüm veri noktalarına eşit ağırlık verirken, WMA belirli bir kurallar çerçevesinde hassas bir yaklaşım benimser. Bu yöntem sayesinde veri analizi daha da derinleşir ve kullanıcılar belirli eğilimleri, değişimleri daha net bir şekilde gözlemleyebilirler.

Python, veri analizi ve finansal verilerin işlenmesi konusunda geniş bir kütüphane yelpazesi sunmaktadır. Bu yazıda, Python kullanarak ağırlıklı hareketli ortalama hesaplamanın adımlarını detaylandıracak, örneklerle ele alacak ve bu yöntemle birlikte kullanılabilecek bazı ilginç teknikleri tanıtacağız.

Python’da Ağırlıklı Hareketli Ortalama Hesaplama

Python’da WMA hesaplamak için genellikle Pandas kütüphanesi kullanılmaktadır. Pandas, veri yapıları ve veri analizi araçları sunarak, zaman serisi verilerini daha kolay yönetmeyi sağlar. İlk olarak, Pandas kütüphanesini kurmanız ve kullanmak istediğiniz veri kümesini yüklemeniz gerekmektedir. İşte WMA hesaplamaya başlayabilmek için gerekli adımlar:

import pandas as pd

# Örnek veri seti
veri = {'Tarih': ['2023-01-01', '2023-01-02', '2023-01-03', '2023-01-04', '2023-01-05'],
         'Değerler': [10, 20, 30, 40, 50]}

# Veri çerçevesi oluşturma
veri_df = pd.DataFrame(veri)
veri_df['Tarih'] = pd.to_datetime(veri_df['Tarih'])
devamı = veri_df.set_index('Tarih')

Bu örnekle, verileri Pandas veri çerçevesine yüklüyoruz. Tarihlerin datetime formatında olması, zaman serisi analizinde kritik önem taşır.

Ağırlıklı Hareketli Ortalama Fonksiyonu

Ağırlıklı hareketli ortalamayı hesaplamak için kendi fonksiyonumuzu yazabiliriz. Bu fonksiyon, belirli bir pencere boyutuna göre verileri alacak ve her veri noktasına atanacak ağırlıkları belirleyecektir. Ağırlıklar genellikle son verilerin daha önemli olduğu düşüncesine dayalı olarak, artan bir dizi şeklinde atanır. Şimdi WMA fonksiyonumuzu oluşturalım:

def agirlikli_hareketli_ortalama(data, window):
    weights = list(range(1, window + 1))
    weights = [w / sum(weights) for w in weights]
    return data.rolling(window=window).apply(lambda x: sum(weights * x))

Bu fonksiyon, ‘data’ olarak veri setimizi ve ‘window’ (pencere boyutu) olarak hesaplamak istediğimiz ortalama sayısını alır. Ağırlık dizisi oluşturulduktan sonra, rolling() fonksiyonu ile belirli bir pencere boyutunda işlem yapılıyor. Ağırlıklı ortalamalar, bu fonksiyona uygulandığında beklenen sonuçları verecektir.

Ağırlıklı Hareketli Ortalamayı Veri Çerçevesine Eklemek

Şimdi oluşturduğumuz ‘agirlikli_hareketli_ortalama’ fonksiyonunu kullanarak ana veri çerçevemize ağırlıklı hareketli ortalamayı ekleyelim. Kodlarımızı geliştirecek ve bulduğumuz sonuçları görselleştireceğiz:

veri_df['WMA_3'] = agirlikli_hareketli_ortalama(devamı['Değerler'], window=3)

# Sonuçları görmek için
print(veri_df)

Yukarıdaki kod, oluşturduğumuz veri çerçevesine üç dönemlik ağırlıklı hareketli ortalamayı ekleyecektir. WMA hesaplamalarının sonuçları, analizin daha iyi anlaşılmasını sağlayacaktır. Şimdi bu sonuçları grafik üzerinde gösterelim:

import matplotlib.pyplot as plt

plt.figure(figsize=(10,5))
plt.plot(veri_df['Tarih'], veri_df['Değerler'], label='Değerler')
plt.plot(veri_df['Tarih'], veri_df['WMA_3'], label='Ağırlıklı Hareketli Ortalama (3 dönem)')
plt.title('Değerler ve Ağırlıklı Hareketli Ortalama')
plt.xlabel('Tarih')
plt.ylabel('Değer')
plt.legend()
plt.show()

Yukarıdaki kod, Python’da Matplotlib kütüphanesini kullanarak basit bir grafik oluşturur. Değerlerin ve WMA’nın görsel karşılaştırmasını sağlarken, verilerin trendlerini ve hareketlerini daha derinlemesine analiz etmeye yardımcı olur.

WMA’nın Uygulama Alanları ve Avantajları

Ağırlıklı hareketli ortalama, finansal analizden meteorolojik tahminlere kadar geniş bir uygulama yelpazesine sahiptir. Özellikle borsa analizlerinde kullanılan WMA, yatırım kararlarının alınması sırasında önemli bir rol oynar. Bu sayede yatırımcılar, geçmiş veri trendlerini daha kolay analiz ederek, gelecekteki fiyat hareketlerini öngörmeye çalışırlar. Aşağıda WMA’nın bazı avantajlarına değinelim:

  • Güncel Verilere Öncelik Verir: WMA, son verilere daha fazla ağırlık vererek, analizde güncelliği ön plana çıkartır.
  • Daha Duyarlı Sonuçlar: WMA’nın bu yapısı sayesinde, veri setindeki ani değişimlere daha hızlı yanıt verilir.
  • Esneklik: Kullanıcılar, farklı ağırlık dizileri oluşturmak suretiyle WMA’yı kendi ihtiyaçlarına göre şekillendirebilirler.

Karmaşık WMA Hesaplamaları ve Özelleştirme

Ağırlıklı hareketli ortalama hesaplamaları daha karmaşık hale getirilebilir. Örneğin, farklı ağırlık dizileri belirlemek veya mevsimsel eğilimleri hesaba katmak mümkündür. Ağırlıklar, kullanıcıların belirlediği herhangi bir dizi ile uyumlu hale getirilebilmekte, bu da analizin daha hedeflenmiş ve özel bir biçimde gerçekleştirilmesini sağlar.

Özelleştirilmiş ağırlık dizileri ile WMA hesaplamak için, öncelikle bir ağırlık matrisinin tanımlandığından emin olmalısınız. Örneğin, daha önce tanımladığımız ‘agirlikli_hareketli_ortalama’ fonksiyonunu birkaç değişiklikle güncelleyebiliriz:

def agirlikli_hareketli_ortalama_ozel(data, window, weights):
    return data.rolling(window=window).apply(lambda x: sum(weights * x))

Burada, kullandığımız ‘weights’ parametresi, kullanıcının belirlediği ağırlık dizisini alır ve bu diziyi temel alarak hesaplama yapar. Bu özellik, kullanıcılara daha fazla esneklik sağlar.

Sonuç ve Teşvik

Ağırlıklı hareketli ortalama, Python ile veri analizi yaparken oldukça yararlı bir araçtır. Borsa verilerinden, hava durumu tahminlerine kadar geniş uygulama alanlarına sahiptir. Python ve Pandas kütüphanesi ile bu tür hesaplamaları kolaylıkla yapmanın yanı sıra, görsel olarak analiz etme imkanı da sunmaktadır. Yazdığımız örnekler ile WMA’nın nasıl çalıştığını öğrenmiş oldunuz.

Öğrendiklerinizi uygulamak, kendi projelerinizde Ağırlıklı Hareketli Ortalama hesaplamaları yapmak için harika bir fırsat. Unutmayın ki deneme yanılma ile daha fazla pratik yaparak bu tür analiz becerilerinizi geliştirebilirsiniz. Sizin için ilginç ve faydalı olacağını düşündüğünüz başka verileri araştırmak ve WMA’yı kullanarak daha iyi anlayışlar kazanmak üzerine düşünün!

Ve tabii ki, sorularınız veya merak ettiğiniz başka konular varsa, benimle paylaşmaktan çekinmeyin. Python ve veri analizi dünyasına yeni katılanlara karşı dostça bir yaklaşım benimsemekteyim ve öğrendiklerimizi birlikte daha da ileri taşıyabiliriz.

Scroll to Top