Ana içeriğe geç

Statistical, Arduino ve diğer gömülü sistemlerde sensör verisini işlerken ihtiyaç duyulan temel ve gelişmiş istatistiksel analiz fonksiyonlarını tek bir çatı altında toplayan hafif bir kütüphanedir. Sensör gürültüsünü azaltmak, ani sıçramaları (spike) bastırmak, dağılımı analiz etmek ve zaman içinde verinin eğilimini incelemek için optimize edilmiştir.

Başlangıçta medyan / mod tabanlı filtreleme için geliştirilmiş olsa da bugün hem sabit boyutlu diziler (array) hem de akış (stream) tabanlı veriler üzerinde çalışan kapsamlı bir istatistik seti sunar.

Amaç, sahadan gelen ham veriyi daha anlamlı ve kontrol edilebilir hale getirerek sensör tabanlı sistemlerde doğruluk ve kararlılığı artırmaktır.

Dizi (Array) İstatistikleri

Sabit boyutlu float dizileri üzerinde:

  • Average, Sum, Max, Min, Sq_Sum
  • Arithmetic / Geometric / RMS / Extended RMS Average
  • Sigma, Quartile, IQR
  • Standard Deviation & Standard Deviation Error
  • Variance
  • Bubble Sort tabanlı sıralama

Bu sayede örneğin bir sensörün son N ölçümünden:

  • Gürültüden arındırılmış medyan değeri
  • Anlık min–max aralığı
  • Standart sapma ve varyans bilgisini

tek seferde alabilecek bir yapı kurabiliyorsun.

Akış (Stream) İstatistikleri

Uzun süre çalışan sistemlerde veriyi dizilerde tutmak yerine stream tabanlı takip etmek gerektiğinde:

  • Toplam veri adedi (count)
  • Akışın aritmetik ortalaması

Bu yöntem, RAM’in sınırlı olduğu mikrodenetleyicilerde uzun süreli ölçümlerde büyük avantaj sağlar. Her yeni ölçüm geldiğinde ortalama, minimum, maksimum gibi metrikler anında güncellenir ve tüm veriyi hafızada tutmaya gerek kalmaz.

Lineer Regresyon (Array & Stream)

Hem sabit boyutlu diziler hem de akış verisi için:

  • Slope (eğim)
  • Offset (kesişim)
  • R² (determinasyon katsayısı)

hesaplayarak, sensör verisinin zaman içindeki trendini takip etmeye izin veriyor.

Bu analiz özellikle şu durumlarda kritik önem taşır:

  • Sensör kalibrasyonu ve doğruluk kontrolü
  • Zaman içinde oluşan drift/kayma tespiti
  • Yavaş değişen süreçlerin trend analizleri

Eğim Tabanlı Anomali Algılama

Kütüphanede, son n adet ölçümün eğimini hesaplayarak:

  • Sensör verisinin yükseliş / düşüş trendini
  • Ani değişimlerin normal mi, anomali mi olduğuna dair basit bir fikir veren
    slope tabanlı bir yapı da var.

Bu temel yapı, daha üst seviye anomaly detection ve karar mekanizmalarına altlık oluşturmak için kullanılabilir.

Ne Zaman Kullanmalısın?

Statistical tam olarak şu senaryolarda işine yarıyor:

  • ADC üzerinden aldığın sensör değeri gürültülü ve arada saçma spike’lar atıyorsa
  • Uzun süreli ölçümlerde ortalama, min, max, standart sapma gibi metrikleri hafızayı doldurmadan takip etmek istiyorsan
  • Elindeki ham sensör verisinin trendini, eğimini, R² değerini görmek istiyorsan
  • Daha sonra ML/edge tarafında kullanacağın basit özellikleri (features) mikrodenetleyici tarafında çıkarmak istiyorsan

Kısacası: ham veriyi olduğu gibi göndermek yerine, sahada işleyip anlamlı hale getirmek istediğin her projede Statistical kullanabilirsin.

Kurulum

Arduino IDE

  1. Arduino IDE’de Library Manager’ı aç.
  2. Arama kutusuna “Statistical” yaz.
  3. Statistical (Author: Günce Akkoyun) kütüphanesini seç ve Install de.

Alternatif olarak:

  • GitHub’daki Releases bölümünden .zip indirip
  • Sketch → Include Library → Add .ZIP Library… ile manuel ekleyebilirsin.

PlatformIO

platformio.ini dosyanda ilgili ortam (env) içine şu şekilde ekleyebilirsin:

[env:my_board]
platform = ...
board = ...
framework = arduino

lib_deps = akkoyun/Statistical

Versiyon sabitlemek istersen @ ile versiyon ekleyebilirsin (örneğin @^2.1.0 gibi).

Kullanım Senaryoları

Aklında daha net canlanması için birkaç tipik kullanım senaryosu:

  • Medyan filtreleme: Akım, gerilim, sıcaklık gibi ölçümlerde spike değerleri bastırmak.
  • Sensör verisi normalize etme: Geometrik ortalama veya RMS ortalama ile daha kararlı çıktılar elde etmek.
  • Uzun süreli logging: Her veriyi kaydetmek yerine periyodik ortalama/min/max/stddev kaydederek hafıza kullanımını azaltmak.
  • Trend analizi: Lineer regresyon ile eğim, offset ve R² hesaplayarak sensör davranışını takip etmek.

Bu kütüphane, gerçek sahada kullanılan projelerden gelen ihtiyaçlara göre sürekli gelişen bir açık kaynak projedir. Kullanıcı geri bildirimleri, yeni fonksiyonların eklenmesi ve mevcut yapının iyileştirilmesi açısından kritik öneme sahiptir.

Bu kütüphaneyi hem kişisel hem de ticari projelerinde özgürce kullanabilirsin. Herhangi bir lisans kısıtı uygulanmamaktadır; amacım, bu kütüphanenin mümkün olduğunca fazla gerçek dünya projesinde yer almasıdır. Özel bir entegrasyon ihtiyacın, ticari bir planın veya teknik bir sorunun varsa bana e‑posta üzerinden her zaman ulaşabilirsin: akkoyun@me.com Geri bildirimlerini veya kullanım senaryolarını paylaşman, projeyi geliştirmem açısından büyük katkı sağlar.