Python ve Poisson Dağılımı ile Deprem Olasılığı Hesaplaması

Herkese merhabalar!

Eğer üniversitede istatistik bölümü okuduysanız, olasılık dağılımları işlenirken verilen örnekleri az çok hatırlıyorsunuzdur. Bu örnekler yıldan yıla hiç değişmez. Bernoulli denemesi mi anlatılılır, hemen “Bir torbada 5 siyah, 7 siyah top vardır. Torbadan rastgele seçilen bir topun siyah olma olasılığı nedir?” örneği verilir. Bu örnekleri çoğaltabiliriz ama burada hepsini yazmayacağım. Benim asıl üstünde duracağım dağılım ise Poisson dağılımıdır. “Bir kavşakta bir günde ortalama 10 trafik kazası olmaktadır. Belli bir gün içinde meydana gelen tafik kazasının 10’dan çok olma olasılığı nedir?” örneği, Poisson denince neredeyse aklıma gelen tek örnek diyebilirim.

Yukarıda saydığım örnekleri kesinlikle kötüleme gibi amacım yoktur. İstatistik bölümüne yeni başlamış birinin olasılık dağılımlarını anlaması için kesinlikle çok güzel örnekler. Ancak şöyle bir sıkıntı var ki, istatistik bölümünden mezun olmuş çoğu insan bu olasılık dağılımlarını normal hayatta nerelerde kullanabileceğini bilmiyor. Çünkü hep en başta saydığım örnekler üzerinden bu olasılık dağılımlarını öğrendiler. Tabikide olasılık dağılımları öğretilirken bütün güncel hayat problemleri ilgili örnekler yapılamaz. Ama en azından o anki en güncel problemler üzerinden örnek verilebilir.

Uygulamaya geçmeden önce Poisson dağılımı hakkında bilmeyenlere bilgi vermek istiyorum. Poisson dağılımı deney sayısının çok fazla olduğu ve ilgilenilen olayın meydana gelme olasılığının düşük olduğu durumlarda olasılık hesaplamak kullanılır. Pek çok deney, sürekli bir zaman aralığında, bir alanda ya da bir hacimde bir olayın sayılması sonucunda 0, 1, 2, … gibi değerlerin verilmesi ile oluşur. Poisson dağılımı, sürekli uzayda kesikli veriler veren deneylere uygulanır.

Bu dağılım daha çok ender olayların olma olasılıklarının hesaplanmasında kullanılır. Poisson dağılımının olasılık fonksiyonu şu şekildedir:

Burada λ parametresi; bir birim zamanda, alan ya da hacimde bi sonucun ortalama elde ediliş sayısıdır. Poisson dağılımının beklenen değer ve varyansı λ ‘dır.

Eğer n değerimiz 20’den büyükse ve p değerimiz 0.05’ten küçükse Binom(x; n, p) dağılımı Poisson(x; λ) dağılımına yaklaşır. Burada λ ‘yı hesaplamak için λ = n.p formülünü kullanırız.

Poisson dağılımı için şuanlık bilmemiz gerekenleri öğrendiğimize göre artık uygulamamıza geçebiliriz 🙂

 

Farkındaysanız geçtiğimiz son 2 ayda Türkiye’nin birçok yerinde hissedilir derecede birçok deprem oldu. Acaba bir bölgede belli bir şiddette olabilecek depremin olasılığını hesaplayabilir miyiz? Cevabımız tabikide evet! Depremler, en azından hissedilir şiddette depremler için, ender olaylardır. Poisson dağılımı ise ender olayların belli bir zaman aralığı, bir alan ya da hacimde olma olasılığını hesaplamada kullanıldığı için bu olasılığı hesaplayabiliriz.

Bu uygulamayı yaparken 1910-2017 yılları arasındaki çoğunluğu Türkiye’de olmak üzere Türkiye ve yakın çevresinde olan depremleri içeren veri setini kullancağız. Veri setine aşağıdaki linkten erişebilirsiniz.

Veri Seti: https://www.kaggle.com/caganseval/earthquake/version/4

Ben veride birkaç düzeltme yaptım. Bu yazıda o düzenlemeleri nasıl yaptığımı anlatmayacağım. İsterseniz düzenlemiş olduğum veri setini aşağıdan indirebilirsiniz.

Düzenlediğim Veri Seti: earthquake_final

Verimizin içeriğine bir göz atalım.

Bu veriden Türkiye içinde olan depremleri seçelim.

turkey = df[df["country"] == "turkey"]

Ve Türkiye’de olan depremleri çıkarmış olduk. Burada tam 11.850 tane deprem var. Acaba 1911-2017 aralığında richter ölçeğine göre 5.0 veya 5.0 şiddetinden büyük kaç tane deprem olmuş?

len(turkey[turkey["richter"] >= 5.0])

1911-2017 aralığında richter ölçeğine göre 5.0 ve 5.0 şiddetinden büyük 400 tane deprem olmuş. Yani bu zaman aralığında 5.0 veya 5.0 şiddetinden büyük deprem olma olasılığı “p = 400/11850 = 0.034” dur. Yani n değerimiz 20’den büyük ve p değerimiz 0.05’ten küçük olduğu için λ ‘yı n*p şeklinde hesaplayıp ortalama 5.0 veya 5.0 şiddetinden büyük olan deprem sayısını bulabiliriz. λ = 400 * 0.034 = 13.6 ‘dır.

106 yıllık zaman aralığında 5.0 veya 5.0 şiddetinden büyük deprem sayısı ortalama 13.6’dır. Eğer bir yıl içinde 5.0 veya 5.0 şiddetinden büyük depremlerin olasılığını hesaplamak istiyorsak λ değerimizi 106 yıla bölmemiz lazım. Poisson dağılımda bizden istenen zaman aralığı, hacim yada alan birimi ne ise λ değerimizi o birime çevirmeliyiz. Yeni λ değerimiz 13.6/106 = 0.13. Bu demek oluyor ki bir yıl içinde Türkiye’de 1911-2017 yılları arasında 5.0 veya 5.0 şiddetinden büyük ortalama 0.13 tane deprem olmuş.

Acaba 1 yıl içinde Türkiye’de 5.0 veya 5.0 şiddetinden büyük 3 tane deprem olması olasılığı nedir?

Bu olasılığı hesaplamak için Poisson olasılık dağılım fonksiyonuna ihtiyacımız var. Bu fonksiyon mutlaka daha önceden hazırlanmış kütüphanelerde vardır ancak ben öğretici olması açısıdan kendim yazmak istiyorum.

def poisson(lambd, x):
  return (exp(-lambd) * (lambd ** x)) / factorial(x)

Poisson fonksiyonumuz yukarıdaki gibidir. Şimdi ise olasılığımızı hesaplayabiliriz. Olasılığımızı hesaplarken “X = 3” ve “λ = 0.13″ olarak kullanacağız.

poisson(0.13, 3)

Sonucumuz 0.00032’dir. Yani bir yıl içinde Türkiye’de 5.0 veya 5.0 şiddetinden büyük 3 tane deprem olma olasılığı on binde 32’dir. Oldukça düşük bir olasılık. Ama bu, yıl içinde 5.0 veya 5.0 şiddetinden büyük deprem olmayacağı anlamına gelmiyor. Biz tedbiri elden bırakmayalım, her zaman depreme hazır olalım 🙂

 

Evet, bu yazımızın da sonuna gelmiş bulunuyoruz. İlerleyen zamanlarda olasılık dağılımlarının güncel hayat uygulamaları ile ilgili yazılar yazmaya devam edeceğim.

Sonraki yazımızda görüşmek üzere, esen kalın…

Kaynakça: https://www.onlinemathlearning.com/poisson-distribution.html

Yazar Hakkında
Toplam 10 yazı
Alperen Balık
Alperen Balık
Yıldız Teknik Üniversitesi İstatistik Bölümü Mezunu. Veri Bilimcisi. İlgilendiği alanlar; Makine Öğrenmesi, Dashboard Tasarlama, Yazılım Geliştirme
Yorumlar (4 yorum)
ahmet
ahmet Yanıtla
- 11:32

Merhaba, yazı için teşekkürler. Fakat verilerdeki yanlışlar olasılıklarınızı da yanlış çıkartıyor. Richter’i baz almışsınız fakat çoğu richter değeri sıfır. Yeni ver seti ile güncelleme gelmesi gereken güzel bir yazı.

    Alperen Balık
    Alperen Balık Yanıtla
    - 13:15

    Merhaba, değerli yorumunuz için teşekkürler 🙂
    Evet, veri setindeki 0 değerleri olasılıkları yanlış çıkarıyor. En kısa zamanda güncellenmiş veri seti ile yazıyı güncelleyeceğim.

    İyi günler dilerim.

Fatih
Fatih Yanıtla
- 18:16

Alperen bey merhaba R programlama dili ile alakalı sorularım olucaktı konu ile alakalı bilgi sahibi iseniz geri dönüş yaparsanız sevinirim.

    Alperen Balık
    Alperen Balık Yanıtla
    - 15:43

    Fatih bey merhaba,
    Elimden geldiğince yardımcı olmaya çalışırım.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

×

Bir Şeyler Ara