Power BI’da Hareketli Ortalamalar: Trendler ve Sezonlar

Veri analizinde sıklıkla karşılaştığımız gürültülü veriler, altında yatan gerçek trendleri ve sezon dönemlerini maskeleyebilir. Bu durum, özellikle hisse senedi fiyatları, satış rakamları gibi sürekli değişen verilerde daha belirgindir. Hareketli ortalama, bu gürültüyü filtreleyerek, verinin genel eğilimini daha net bir şekilde ortaya koymamızı sağlar. Bu sayede, gelecekteki hareketler hakkında daha iyi tahminlerde bulunabiliriz. Bugünkü konumuzda, DAX’ta basit hareketli ortalama hesaplamayı mercek altına alıyoruz.

Basit Hareketli Ortalama (Simple Moving Average, SMA) Nedir?

Basit hareketli ortalama (SMA), bir veri kümesindeki belirli bir sayıda veri noktasının aritmetik ortalamasıdır. Bu ortalama, zaman içinde hareket ederek, veri serisinin genel eğilimini gösterir. Daha basit bir ifadeyle, SMA, verilerin geçmişteki bir periyod içerisindeki ortalama değerini verir. Genellikle çizgi grafikle ifade edilir. Örneğin 50 gün hareketli ortalama dendiğinde, seçili tarihten (ya da çizgi üzerindeki noktadan) geriye 50 gün giden zaman periyodunun ortalama değeri anlaşılır. 

Basit Hareketli Ortalama Nasıl Hesaplanır?

SMA’yı hesaplamak için, belirli bir dönemdeki tüm veri noktalarının toplamı, bu dönemdeki veri noktası sayısına bölünür.

SMA = (Veri Noktası 1 + Veri Noktası 2 + ... + Veri Noktası N) / N

// Burada N, hareketli ortalama periyodunu (yani kaç veri noktası üzerinden ortalama alınacağı) temsil eder.

DAX’ta Basit Hareketli Ortalama Nasıl Hesaplanır?

AVERAGEX(): AVERAGEX() tarih tablosundaki gün (örnekte gün olduğu için) ortalaması bulunur.

DATESINPERIOD(): Dönem başlangıcından geriye N gün (ay, yıl vb) giden periyod hesaplanır. Dönemin geriye gideceği (-1) ile çarparak ifade edilir. Örneğin (-1) * Gün.

CALCULATE(): Hesaplanan periyod CALCULATE() içerisinde filtrelenir.

Satış adedi hareketli ortalamalarını bulduğumuz bir örnek yapalım. 

Hareketli Ortalama Satışlar 20 gün = 

VAR Gun = 20
VAR DonemBaslangici = MAX('Calendar'[DateKey])
VAR Donem = DATESINPERIOD('Calendar'[DateKey], DonemBaslangici, -1 * Gun, DAY)
VAR HareketliOrtalama = 
    CALCULATE(
        AVERAGEX(
            VALUES('Calendar'[DateKey]),
            [Satış Adedi]
        ),
    Donem
    )
RETURN HareketliOrtalama

Değişkenlerle çalışmanın güzel yanlarından biri formülü uyarlamanın kolay olması. Saniyeler içinde, örnek formül kopyalanarak ve “Gun” değişkenindeki sayı değiştirilerek farklı gün ortalamaları için ölçüler oluşturulabilir. Örneğin 50 gün, 200 gün gibi. Trendleri daha iyi anlamak için bu kıyaslamaya ihtiyacımız var. 

Borsa analizlerinde, piyasaların açık olduğu1 yıllık dönem yaklaşık 200 gün kabul edildiği için 200 hareketli ortalama yaygın olarak kullanılıyor. Tüm günlere ilişkin verilerin bulunduğu bir veri seti olsaydı bu periyod 365 gün belirlenebilirdi. 

Grafiği kısaca yorumlarsak, görselde siyah renk ile belirtilen 200 hareketli ortalamaya bakarak yukarı yönlü bir trend olduğunu görebiliyoruz. Hareketli ortalama yöntemlerinde dönem uzadıkça gürültü azalır ve trendler belirginleşir. Görselde kırmızı  ile ifade edilen 50 gün hareketli ortalamanın, 200 hareketli ortalamanın üstünde ve altında kaldığı dönemleri de, sezonsallık araştırması için  ip ucu olarak değerlendirebiliriz. 

Yeri gelmişken hatırlatalım. Basit hareketli ortalama, geçmişteki tüm veri noktalarına eşit ağırlık verdiği için güncel döneme yeterince ağırlık veremez. Bu durum, özellikle sezonluk etkilerin olduğu verilerde sorun olabilir. Örneğin, bir ürünün satışlarında yılın belirli dönemlerinde artışlar gözlemlenebilir. Basit hareketli ortalama, bu sezonluk etkileri tespit etmekte gecikebilir ve gösterdiği sezon dönemleri çoktan başlamış olabilir. Sezonluk etkileri daha doğru bir şekilde takip etmek için üssel hareketli ortalama (EMA) gibi, daha yeni verilere daha fazla ağırlık veren yöntemler tercih edilebilir. Yine de, ana akım yayınların aksine, hareketli ortalamaların kesin dönemleri işaret edemeyeceğini ve, en belirgin formunda bile, yalnızca ilgili konuya ilişkin daha isabetli tahminler (educated guess) oluşturmak için ip ucu olarak değerlendirilmesi gerektiğini lütfen unutmayın.

DAX’ta hareketli ortalamalar, zaman serileri analizinde sıkça kullanılan güçlü bir araçtır. Verilerde trendleri belirlemek, sezonsallık durumunu gözlemlemek, derinleştirilebilecek analizler için rehber olmak, anlatımı kolaylaştırmak gibi birçok açıdan oldukça faydalıdır. Yaygın kanının aksine finans dışında satış, üretim, tedarik, lojistik ve daha birçok alanda kullanıma da uygun olduğunu belirterek bugünkü yazımızın sonuna gelelim. DAX’la kalın..