Zaman zekâsı ve Gelişmiş zaman hesapları derslerinde dönemleri karşılaştırmayı (YTD, geçen yıl, hareketli ortalama) öğrendin. Bu derste soruyu değiştiriyoruz: Seri neden böyle hareket ediyor ve bir sonraki ay ne bekleyebiliriz?
Bir zaman serisinin dört bileşeni
| Bileşen | Ne demek? | Anadolu Market'te |
|---|---|---|
| Eğilim (trend) | Uzun dönemli yön | Yıllık net satış hızla büyüyor |
| Mevsimsellik (seasonality) | Takvime bağlı, her yıl tekrarlanan desen | Kasım–Aralık yüksek, Ocak ve Nisan düşük |
| Döngü (cycle) | Takvime bağlı olmayan, yıllardan uzun dalgalar (ekonomik döngü) | Üç yıllık veride ayırt edilemez |
| Düzensizlik (noise) | Kalan rastgele oynama | Tek bir büyük siparişin ayı yukarı çekmesi |
Önce veriye bak: 2022 eksik bir yıl
Tarih tablosu 1 Ocak 2022'de başlıyor, ama ilk satış 22 Haziran 2022'de. Yıllık net satış: 2022'de 102.837 TL (yalnızca ~6 ay), 2023'te 400.870 TL, 2024'te 747.066 TL. Bu bilgi aşağıdaki her hesabı etkiler:
- 2022'yi tam yıl gibi kullanan bir büyüme oranı abartılı çıkar.
- Takvim günlerine bölünen ortalamalarda 2022'nin ilk yarısı (satış olmayan 172 gün) payda olarak girerse ortalama düşer.
- Mevsimsellik endeksinde 2022'nin boş ayları (Ocak–Mayıs) o ayları “düşük sezon” gibi gösterir.
Kural: Analize başlamadan önce serinin başlangıç ve bitiş tarihini ve aradaki boş dönemleri yaz.
Haftanın günü etkisi
“Hangi gün daha çok satıyoruz?” sorusunun cevabı paydaya bağlıdır. Haftanın gününe göre toplam satış, o günden kaç tane olduğuna bağlı olarak yanıltabilir; bu yüzden gün başına ortalama hesaplanır:
Gün Başına Satış = VAR Ilk = CALCULATE(MIN(Satislar[Tarih]), REMOVEFILTERS()) RETURN DIVIDE([Net Satış], COUNTROWS(FILTER(Tarih, Tarih[Tarih] >= Ilk)))
Payda, verinin başladığı günden itibaren o haftanın gününe düşen tüm takvim günleridir (satışsız günler dahil). Sonuç: Çarşamba 1.590 TL ile en yüksek, Perşembe 1.266 TL ve Pazartesi 1.268 TL ile en düşük; tüm günlerin ortalaması 1.354 TL.
AVERAGEX(VALUES(Tarih[Tarih]), [Net Satış]) boş günleri atlar ve “satış olan günlerin ortalaması”nı verir: bu hesapta en yüksek gün Cumartesi (2.758 TL) çıkar. Birinci ölçü “ortalama bir Çarşamba ne getirir?”, ikincisi “satış olan bir Cumartesi ne getirir?” sorusunu cevaplar. Hangisini sorduğunu bil. Ayrıca az veride (1.620 satır) günler arasındaki farkın bir kısmı tesadüftür.Çalışma çizelgesi (run chart) ve medyan çizgisi
Çalışma çizelgesi, zaman ekseninde bir ölçünün çizgi grafiği ve üzerinde medyan çizgisidir. Medyan, uç aylardan etkilenmediği için ortalamadan daha sağlam bir referanstır. Power BI'da çizgi grafiği seç, Analiz bölmesinden Medyan çizgisi ekle; ya da ölçüyle:
Aylık Medyan = VAR Seri = FILTER(ADDCOLUMNS(ALLSELECTED(Tarih[YilAy]), "S", [Net Satış]), NOT ISBLANK([S])) RETURN MEDIANX(Seri, [S])
Satış olan 31 ayın medyanı 40.258 TL. Okuma kuralı: Medyanın aynı tarafında art arda 6 ya da daha çok nokta varsa bu rastlantı değil, bir kaymadır (shift). Ekim 2023–Mart 2024 arası 6 ay, Mayıs–Aralık 2024 arası 8 ay üst üste medyanın üstünde: seri kalıcı olarak yukarı kaymış. Böyle bir durumda tek bir medyan çizgisi tüm dönemi temsil etmez; çizgiyi kayma noktasından sonra yeniden hesapla.
Mevsimsellik endeksi
Mevsimsellik endeksi = bir takvim ayının ortalama satışı / tüm ayların ortalama satışı. 1'in üstü “bu ay normalden güçlü”, altı “zayıf” demektir. 2022 eksik olduğu için yalnızca tam yılları (2023 ve 2024) kullan:
Ay Endeksi Tam Yıl =
VAR AyOrt = DIVIDE(
CALCULATE([Net Satış], KEEPFILTERS(Tarih[Yil] IN {2023, 2024})),
CALCULATE(DISTINCTCOUNT(Tarih[YilAy]), KEEPFILTERS(Tarih[Yil] IN {2023, 2024})))
VAR GenelOrt = CALCULATE([Net Satış], REMOVEFILTERS(Tarih), Tarih[Yil] IN {2023, 2024}) / 24
RETURN DIVIDE(AyOrt, GenelOrt)
| Oca | Şub | Mar | Nis | May | Haz | Tem | Ağu | Eyl | Eki | Kas | Ara |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 0,64 | 0,78 | 0,92 | 0,60 | 0,76 | 1,06 | 1,11 | 0,83 | 1,09 | 1,27 | 1,52 | 1,44 |
Toplam satırda endeks 1'dir (bütün ayların ortalaması kendine eşittir); bu iyi bir sağlama. Ama bir sorun var: Seri bir yılda %86 büyüdüğü için yılın son ayları, yalnızca takvim yüzünden değil eğilim yüzünden de yüksek çıkar. Endeksi eğilimden arındırmak için ya her yılı kendi ortalamasına bölüp yılları ortalarsın ya da önce eğilim çizgisini çıkarırsın (İleri istatistik dersindeki en küçük kareler). Kategori kırılımında ölçü her kategorinin kendi mevsimselliğini verir, çünkü REMOVEFILTERS(Tarih) yalnızca tarihi temizler.
Yerleşik tahmin ve geriye dönük test
Çizgi grafiğinde Analiz bölmesi → Tahmin (Forecast). Ön koşul: ekseni sürekli bir tarih (ya da tarih hiyerarşisi) olan, tek ölçülü bir çizgi grafik. Ayarlar:
- Tahmin uzunluğu ve birimi (ör. 3 ay).
- Güven aralığı: tahminin etrafındaki gölgeli bant (ör. %95). Bant genişse model emin değildir.
- Mevsimsellik: kaç noktada bir tekrar ettiği (aylık veride 12). Otomatik bırakılabilir; 31 aylık seride elle 12 vermek daha güvenlidir.
- Son noktaları yok say (Ignore last): Son N noktayı modelden saklar ve onları tahmin ettirir.
Sonuncusu geriye dönük test (backtest, hindcast) için kullanılır: Son 3 ayı yok say, tahmin edilen 3 ayı gerçekleşenle karşılaştır. Tahmin gerçek değerlerin çok altında ya da üstündeyse, geleceğe dönük tahmine de güvenme. Yerleşik tahmin üstel düzeltmeye dayanır; sonuçları ölçü olarak modele yazılmaz, yalnızca o görselde yaşar.
DAX ile basit tahmin
Her ay için “son 3 ayın ortalaması” bir sonraki ayın naif tahminidir. Ölçü, içinde bulunduğu ayı görmeden önceki üç tam aya bakar; böylece geçmişin her ayında bir geriye dönük test yapmış olursun:
Naif Tahmin 3 Ay =
VAR Son = MAX(Tarih[Tarih])
RETURN DIVIDE(
CALCULATE([Net Satış], DATESBETWEEN(Tarih[Tarih], EOMONTH(Son, -4) + 1, EOMONTH(Son, -1))),
3)
Aralık 2024 için tahmin 78.158 TL (Eylül–Kasım ortalaması), gerçekleşen 94.001 TL: hata −%16,9. Büyüyen ve mevsimsel bir seride naif ortalama hep geriden gelir. İkinci yöntem geçen yıl × büyümedir:
Tahmin GY x Büyüme = CALCULATE([Net Satış], SAMEPERIODLASTYEAR(Tarih[Tarih])) * (1 + 0.8)
Geçen yılın aynı ayı mevsimselliği taşır, büyüme katsayısı eğilimi. 2024'ün yıllık büyümesiyle (%86,4) Aralık 2023'ten (43.560 TL) yapılan tahmin 81.179 TL, hata −%13,6. Sabit katsayıyı bir ne olur (what-if) parametresine bağlarsan kullanıcı büyüme varsayımını kaydırıcıyla değiştirir.
Büyüme oranları: CAGR ve CMGR
Bileşik yıllık büyüme oranı (CAGR) = (Son / İlk)^(1 / yıl sayısı) − 1. Dönem boyunca her yıl aynı oranda büyüseydin hangi oranda büyümüş olurdun sorusunu cevaplar.
- Yanlış: 2022 → 2024 yıllık toplamlarıyla CAGR %169,5 çıkar; çünkü 2022 yalnızca altı aydır.
- Bir yıllık CAGR (2023 → 2024) yıllık büyümeyle aynıdır: %86,4.
- Adil karşılaştırma: Aynı mevsimi karşılaştır. Temmuz–Aralık 2022 (102.242 TL) ile Temmuz–Aralık 2024 (446.573 TL) arası iki yıldır: CAGR = (446.573 / 102.242)^(1/2) − 1 = %109.
Yarıyıl CAGR Örnek = VAR Bas = CALCULATE([Net Satış], DATESBETWEEN(Tarih[Tarih], DATE(2022, 7, 1), DATE(2022, 12, 31))) VAR Son = CALCULATE([Net Satış], DATESBETWEEN(Tarih[Tarih], DATE(2024, 7, 1), DATE(2024, 12, 31))) RETURN POWER(DIVIDE(Son, Bas), 1 / 2) - 1
Bileşik aylık büyüme (CMGR) aynı formülün ay sayısıyla yazılışıdır. Mevsim etkisini azaltmak için aynı ayları seç: Aralık 2023 → Aralık 2024 (12 ay) için CMGR = (94.001 / 43.560)^(1/12) − 1 = ayda %6,6. Ocak 2023 (zayıf ay) ile Aralık 2024'ü (güçlü ay) karşılaştırmak oranı şişirir. Uç noktalar tek aylık değerse gürültüye duyarlıdır; çeyreklik ya da 12 aylık toplamlarla çalışmak daha sağlamdır.
Anomali
Mevsimselliği ve eğilimi bilince, “beklenenden sapan” ayı ayırt edebilirsin: Nisan 2024 (34.234 TL) hem önceki hem sonraki aylardan belirgin düşük. Power BI'daki Anomali bul özelliği ve z-skoruyla işaretleme Analiz özellikleri ve yapay zekâ görselleri ile İleri istatistik derslerinde anlatılıyor. Bir anomaliyi raporlamadan önce veri hatası olup olmadığını (eksik yükleme, iptal dalgası) kontrol et.