Olayları matematiksel sonuçlara bağlayabilmek için fonksiyonlara ihtiyaç duyarız. Rassal değişkenler, olaylar ve rakamlar arasında bağlantı kurmaya yardımcı olan araçlardır. Rassal değişkenlerin aldığı değerlerin dağılımı, yani diğer bir deyişle olasılık dağılımları, istatistiksel çıkarımların ve hipotez testlerinin temelini oluşturur.

Rassal değişken (Random variable) nedir?

Rassal değişken, çözüm uzayındaki her elemanı sonuç uzayına bağlayan bir olasılık ölçüsü, fonksiyondur. Çözüm uzayındaki her bir elemana, sayısal bir değer atar. Rassal değişken, bir deneyin sonucunun sayısal olarak ifadesi olarak da özetlenebilir. Bu değişkenler X, Y, Z gibi büyük harfler ile ifade edilir.

Matematiksel gösterimi:

𝑋:𝑆→ℝ

X: Rassal değişken
S: Çözüm uzayı
R: Gerçel(Reel) sayı
DeneyRassal değişkenÇözüm uzayı
Hilesiz bir zarın 2 kere atılmasıZarların toplamı{2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}
Bir köydeki nüfus sayımıEvdeki çocuk sayısı{0, 1, 2, 3, …}
Bir sınıftaki öğrencilerin boy ölçümüÖğrencinin boyu{100 cm – 200 cm aralığı}
İstanbul’daki hava durumu Havanın derecesi{-10 – 40 derece aralığı}

Rassal değişkenler, farklı şekilde tanımlanabilir, birden farklı değer alabilir ve alınan her değerin bir olasılığı vardır. Tablodaki ilk deneyi örnek olarak aldığımızda, X rassal değişkenini “zarların toplamı” olarak belirlerken, Y rassal değişkenini “tek sayıların toplamı” olarak belirleyebiliriz. Yani, tek bir rassal deneyden birçok farklı rassal değişkenler tanımlayabiliriz.

Rassal değişkenler olasılıkla ilgili sorduğumuz soruları matematiksel olarak ifade edip hesap yapmaya yardımcı olur.

Örnek:

Bir sınıftaki öğrencilerin boy ölçümü.

  1. Rastgele seçilen bir öğrencinin boyunun 162 cm olma olasılığı nedir?
  2. Rastgele seçilen bir öğrencinin 170 cm’den uzun olma olasılığı nedir?
  3. Rastgele seçilen bir öğrencinin 132 cm’ten kısa olma olasılığı nedir?

Yukarıda sorduğumuz soruları, matematiksel olarak şöyle ifade edebiliriz:

  1. P(X = 162)
  2. P(X > 170)
  3. P(X < 132)

Rassal değişkenler, değerlerini çözüm uzayından alır ve çözüm uzayında bulunan değerlere göre ikiye ayrılır:

1. Kesikli rassal değişken (Discrete random variables):

Çözüm uzayı sınırlı ve sayılabilir (çoğunlukla ama her zaman şart değil) değerlerden oluşur.

  • Zarın 3 gelmesi.
  • Haftanın günleri
  • Evdeki çocuk sayısı
  • Bir doktora muayene olan hasta sayısı

2. Sürekli rassal değişken (Continuous random variables):

Çözüm uzayı sınırsız ve sayılamayan ama ölçülebilen değerlerden oluşur.

  • İstanbul’un hava durumu değeri
  • Altının fiyatı
  • Bir okuldaki öğrencilerin kilosu
  • Bir havuzda bulunan suyun metreküp cinsinden değeri.

Olasılık dağılımı nedir?

Bir rassal değişkenin olasılık dağılımı, rassal değişkenin aldığı değerlerin olasılıklarının nasıl değiştiğini gösteren matematiksel bir fonksiyondur. Böylelikle, rassal değişkenin aldığı değerlerden hangilerinin daha olası olduğunu tahmin edebiliriz.

Olasılık dağılımları ile ilgili bazı genel özellikler:

  • Her rassal değişkenin kendine ait bir olasılık dağılımı vardır. Farklı rassal değişkenlerin olasılık dağılımları birbirine benzeyebilir.
  • Tüm sonuçların bir olasılığı vardır.
  • Tüm olasılık değerleri 0 ile 1 arasında olmalıdır.
  • Bir sonucun olma olasılığı, diğer olaylara göre kıyaslandığı için tüm olasılıklar toplandığı zaman 1’e eşit olmalıdır.
  • Her olasılık dağılımının ölçülebilen özellikleri vardır: Varyans ve Beklenen değer
    • Varyans – Var(X): X rassal değişkeninin aldığı değerlerin ortalamadan/beklenen değerden ortalama sapması.
    • Beklenen değer – E[X]: X rassal değişkeninin ortalama değeri.

Olasılık dağılımı neden önemlidir?

1. Olasılık tahminlerinde bulunmaya yardımcı olur.

Olasılığa Giriş yazısında da bahsettiğimiz gibi, olasılığın amacı rastgele gerçekleşen olayları matematiksel bir modele dönüştürüp gerçekleşme ihtimaline yönelik tahminlerde bulunmaktır.

Özel olasılık dağılımlarını kullanarak, olasılık modelleri oluşturabilir, elimizdeki veri setine bakarak olayların gerçekleşme ihtimaline yönelik olasılık hesaplamalarında bulunabiliriz.

2. İstatistiksel analizler yapılabilmesini sağlar.

Herhangi bir konuda tüm popülasyondan veri toplayamayacağımız için bu popülasyonu en iyi temsil eden örneklemlere ihtiyaç duyarız. Bu örneklemlerden birisi popülasyonu çok iyi temsil ederken, bir diğeri yeterince iyi temsil etmeyebilir. Tek bir örnekleme bakarak, tüm popülasyon hakkında genelleştirmeler yapamayız.

Bir rassal değişkenin olasılık dağılımını oluştururken, tüm popülasyona ait değil örnekleme ait bir veri kullanırız. Bu veri, ilgili değişkenin gerçek davranışının sadece bir kısmını açıklar. Bu nedenle her örneklemde, rassal değişkene ait olasılık dağılımı farklılıklar gösterecektir. Rassal değişkenin olasılık dağılımı, rassal değişkenin gerçek davranışı hakkında bir miktar fikir verir. Fakat, tüm davranışı açıklamaz.

Bazı özel olasılık dağılımları, varsayımların gerçeklemesi şartıyla, rassal değişkenin davranışı hakkında genelleştirilebilir tahminlerde bulunmamıza yardımcı olur. Hipotez testleri, çıkarımların istatistiksel olarak anlamlı olabilmesi için özel olasılık dağılımlarını kullanır.

3. Bazı makine öğrenmesi modelleri olasılık dağılımı varsayımlarıyla çalışır.

Veri analizi için kullanılan bazı makine öğrenmesi modelleri, verinin belirli bir olasılık dağılımına sahip olduğu varsayımı ile çalışır.

Farklı durumlarda kullanılabilecek birçok farklı olasılık dağılımı mevcuttur. Veri bilimci/analistinin görevi, analiz edilecek değişkenin uyduğu olasılık dağılımını belirlemek ve ilgili olasılık dağılımının kullanımının geçerli olduğu varsayımların veri tarafından sağlandığından emin olmaktır.

Gerçek hayatta analiz için kullandığınız veri seti muhtemelen örneklerdeki gibi birebir herhangi dağılıma uymayacaktır. Bu tarz durumlarda, en yakın olasılık dağılımı belirlenmeli veya veri seti belirli bir dağılımı sağlayacak şekilde dönüştürülmelidir.

Olasılık dağılımı

Sahip olduğu rassal değişkenin türüne göre olasılık dağılımları kesikli veya sürekli olabilir.

Kesikli olasılık dağılımı

Kesikli bir rassal değişkenin olasılık dağılımına kesikli olasılık dağılımı denir. Bir kesikli rassal değişkenin olasılık dağılımı, olası tüm sonuçlara ve bu sonuçlara ait olasılıklara sahiptir.

Olasılık kütle fonksiyonu (pmf)

Kesikli bir “X” rassal değişkeninin olasılık dağılımı olasılık kütle fonksiyonu (pmf) ile temsil edilir. Olasılık kütle fonksiyonu (pmf) ile bir rassal değişkenin aldığı değerin olasılığı hesaplanabilir.

f(x) = P(X = x)

X: Rassal değişken
x: Rassal değişkenin aldığı değer

Olasılık kütle fonksiyonu, olasılık değerlerini taşıdığı için olasılık kurallarına uymak zorundadır. Bu kurallar:

  1. Her bir olasılık değeri 0 ile 1 arasında olmalıdır. (0≤𝑃(𝑥)≤1)
  2. Tüm olasılıkların toplamı 1 olmalıdır. (∑𝑃(𝑥)=1)

Kümülatif (birikimli) dağılım fonksiyonu (cdf)

Kesikli bir rassal değişkenin, en fazla belli bir değere kadar olan olasılıklarının toplamını bulmak için kümülatif (birikimli) dağılım fonksiyonu (cdf) kullanılır.

f(x) = P(X ≤ x) = Σ p(y) y<x

X: Rassal değişken
x: Rassal değişkenin aldığı değer
p(y): X değerine karşılık gelen olasılık değeri

Beklenen değer (E(X) – 𝜇)

Bir rassal değişkenin ortalama değerine beklenen değer denir. Bir deney defalarca tekrarlandığı zaman gerçekleşmesi beklenen sonuç olarak da ifade edilir.

Kesikli bir rassal değişkenin aldığı her bir değerin, o değere karşılık gelen olasılığıyla çarpımlarının toplamı olarak hesaplanır.

E(X) = 𝜇 = Σ x. p(x)

X: Rassal değişken
x: Rassal değişkenin aldığı değer

Varyans (Var (X) – σ2)

Bir rassal değişkenin varyansı, rassal değişkenin aldığı olasılık değerlerinin dağılımının ortalama etrafında ne yoğunlukta toplandığını gösterir.

Var(X) = σ2 =  E[X - E[X]2] = E[X2] - [E[X]]2

Yukarıda anlatılan konsepti özümsemek için gerçek bir örnek üzerinden ilerleyelim.

Kıbrıs’ta eğitim sisteminde ilköğretim karne notları Türkiye’deki 5’lik sistemin aksine, 10’luk sistem üzerinden değerlendirilir. Matematik dersini alan 100 öğrenci olduğunu ve bu öğrencilerin matematik karne notlarının olasılık dağılımına bakalım.

Deney: Bir lisedeki bahar dönemi matematik dersi karne notları

Rassal değişken: Not

Çözüm uzayı: {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}

Öncelikle ilgili kütüphaneleri yükleyelim. Veri manipülasyonu için Pandas ve NumPy, karne notlarını temsilen rastgele sayılar üretmek için random ve görselleştirme için de Matplotlib ile Seaborn kütüphanelerini çağıracağız.

import pandas as pd
import numpy as np
import random
import matplotlib.pyplot as plt
import seaborn as sns

Daha sonrasında 0 ile 10 arasında 100 adet karne notu üreteceğiz.

rand_num = [random.randint(0,10) for i in range(100)]
  • Rastgele sayı üretmek için random kütüphanesindeki randint() fonksiyonunu kullandık.
  • randint() fonksiyonu parametre olarak minimum ve maksimum değerlerini alır.
  • Bu fonksiyonu 100 kere çağırmak için bir for döngüsü kullandık ve bu döngü ile oluşan rakamları rand_num adını verdiğimiz bir listeye sakladık.

Artık elimizde 100 adet, 0 ve 10 arasında olan rastgele üretilmiş sayılar var. Rassal değişkenin aldığı her değeri biliyoruz. Bu değerlerin olasılıklarını hesaplayıp, daha sonrasında da olasılık kütle fonksiyonunun grafiğini çizdireceğiz.

def freq_table(lst):
    freq_table = {}
    
    for i in lst:
        if i in freq_table:
            freq_table[i] += 1
        else:
            freq_table[i] = 1
            
    return freq_table

rand_freq = freq_table(rand_num)

print(rand_freq)
{10: 11, 7: 10, 5: 11, 9: 8, 4: 10, 8: 18, 1: 6, 2: 10, 3: 6, 6: 8, 0: 2}
  • Her değerin ne kadar tekrar ettiğini yani frekanslarını hesaplamak için bir fonksiyon oluşturduk.
  • Bu fonksiyon liste halinde verilen rakamları tek tek kontrol edip, freq_table adı verilen boş bir sözlükte (dictionary) bulunup bulunmadığını kontrol ediyor.
  • Eğer fonksiyonun kontrol ettiği değer daha önceden dictionaryde varsa, değerini 1 arttırırken, daha önceden yoksa yeni bir eleman olarak atayıp frekansını 1 olarak belirliyor.
  • Bu fonksiyonu daha önceden oluşturduğumuz rand_num listesi ile çalıştırıp, sonucu rand_freq adındaki bir değişkene atadık.

Artık hangi değerin ne kadar sıklıkla oluştuğunu biliyoruz. Elimizdeki değerleri dictionary formatından bir DataFrame’e aktarıp, olasılıklarını hesaplayacağız.

vals = [keys for keys, values in rand_freq.items()]
freqs = [values for keys, values in rand_freq.items()]

prob_df = pd.DataFrame(zip(vals, freqs), columns = ["values", "freqs"])
	values	freqs
0	7	8
1	4	5
2	6	12
3	1	13
4	5	8
5	2	10
6	0	10
7	10	4
8	9	13
9	3	9
10	8	8
  • DataFrame’e kolay bir dönüşüm yapmak için değerleri “anahtar” : “değer” şeklinde eşler halinde saklayan sözlük (dictionary) veri tipini değil liste veri tipini kullanmak istiyoruz.
  • Bu nedenle önce anahtar, daha sonrasında da değerleri 2 ayrı listeye çevirdik.
  • pd.DataFrame() fonksiyonunu kullanarak “prob_df” adında, “values” ve “freqs” sütunlarına sahip bir DataFrame oluşturduk.
  • DataFrame’i oluştururken bir liste metodu olan zip()’ten yararlandık. Neden?
    • Çünkü oluşturduğumuz 2 farklı listeyi DataFrame’e zip() kullanmadan parametre olarak girdiğimizde 2 sütun 10 satırdan oluşan bir tablo yerine, 10 sütun 2 satırdan oluşan yatay bir tabloya sahip olacaktık.
    • zip() fonksiyonu 2 listedeki değerleri alıp tuple() adı verilen (“a”, “b”) formatında birleştirerek tabloyu istediğimiz formatta oluşturmamıza yardımcı oldu.

Olasılık dağılımını görselleştirmek için gerekli her detaya sahibiz. Seaborn kütüphanesini kullanarak kesikli olasılık dağılımını görselleştireceğiz.

fig, ax = plt.subplots()
fig.set_size_inches(11.7, 8.27)

ax = sns.barplot(x="values", y="probs", data=prob_df, palette = "rocket")

ax.set_title("Kesikli Olasılık Dağılımı")
ax.set_xlabel("Değerler")
ax.set_ylabel("Olasılıklar")

plt.show()
  • Öncelikle bir çerçeve (fig) ve bu çerçevenin içerisinde yer alacak bir aks (ax) oluşturduk.
  • Sonrasında çerçevenin boyutlarını düzenledik. set_size_inches() fonksiyonu ile inç cinsinden en ve boy değerleri girdik.
  • Seaborn kütüphanesindeki barplot() fonksiyonunu kullanarak sütun grafiğini oluşturduk. Grafikte kullandığımız parametreleri yakından tanıyalım:
    • x: Yatay eksende olacak değerler. Karne notlarına ait tüm olası değerlerin yatay eksende olmasını istiyoruz.
    • y: Dikey eksende olacak değerler. Dikey eksende her karne notunun olasılığının olmasını istiyoruz.
    • data: Yatay ve dikey eksendeki değerlere sahip olan veri seti, yani dataframe.
    • palette: Renk paleti. palette parametresi ile birçok farklı renk paletinden istediğinizi seçebilirsiniz. Seaborn kütüphanesinin desteklediği hazır renk paletlerine buradan ulaşabilirsiniz.
  • Çizdirdiğimiz grafiğe “Kesikli Olasılık Dağılımı” başlığını attıktan sonra plt.show() ile ekrana yazdırdık.

Seçtiğimiz rastgele bir öğrencinin karne notunun 9 olma olasılığı nedir?

Soruyu P(X = 9) şeklinde matematiksel olarak ifade edebiliriz. Oluşturduğumuz DataFrame’de “values” değişkeninin 9’a olduğu satırı filtreleyip, bu satıra denk gelen “probs” değişkenindeki değeri listeleyelim.

prob_df[prob_df["values"] == 9]["probs"]
0.13

Hesaplanan olasılık değeri %13’tür.

Seçtiğimiz rastgele bir öğrencinin karne notunun en fazla 3 olma olasılığı nedir?

Aradığımız olasılık değeri matematiksel olarak: P(X ≤ 3)

Bu olasılık ifadesi aynı amanda şuna da eşittir: P(X ≤ 3) = P(X = 0) + P(X = 1) + P(X = 2) + P(X = 3)

Bir üstteki örnekteki gibi bir filtre oluşturup, daha sonrasında eşleşen olasılıkları toplayalım.

prob_df[(prob_df["values"] >= 0) & (prob_df["values"] <= 3)]["probs"].sum()
0.42
  • Sıfırdan büyük ve üçten küçük notları ayrı ayrı iki koşul olarak ürettik ve “& (ve)” operatörü ile birbirine bağladık.
  • Daha sonrasında bu koşula uyan satırların “probs” değişkenindeki değerlerini listeledik.
  • Son olarak sum() fonksiyonunu kullanarak, oluşturduğumuz Pandas serisindeki değerleri topladık.

Rastgele seçilen bir öğrencinin notunun en fazla 3 olması olasılığı %42‘dir.

Sürekli olasılık dağılımı

Sürekli bir rassal değişkenin olasılık dağılımına sürekli olasılık dağılımı denir.

Sürekli değişkenler, yukarıda da tanımını yaptığımız gibi tam değerlere sahip olmayan, genelde sayılamayan ve ölçülebilen değerlere sahiptir. Hava durumu, boy, kilo gibi örnekler verebiliriz. Bu örneklerde aklınıza, kilonuzun, boyunuzun veya hava durumunun tam değerleri gelebilir. Fakat, hassas bir ölçü ile ölçüp, değerleri kaydettiğiniz zaman, kilonuz 88 değil de 88.234531 kg olabilir.

Olasılık yoğunluk fonksiyonu (pdf)

Sürekli bir “X” rassal değişkeninin olasılık dağılımı olasılık yoğunluk fonksiyonu (pdf) ile temsil edilir.

P {a ≤ x ≤ b} = ba f(x)dx


x: Rassal değişkenin aldığı değer

Sürekli rassal değişken, sonsuz sayıda farklı değer alabilir. Bu yüzden, herhangi bir spesifik noktadaki olasılık değeri sıfırdır. Örnek olarak elinizde bir grup insanın kilo ölçümleri olduğunu ve bu değerlerin noktadan sonra 4 basamak hassasiyetle ölçüldüğünü varsayalım. Yani, elinizdeki değerler kabaca şöyle olacaktır: “88.2212 kg, 65.3434 kg, 46.1214 kg” vs.

Böyle bir durumda bir insanın kilosunun 45 kg olma olasılığı sıfırdır. Çünkü, elinizdeki rakamlar 45.0001 kg, 45.0012 kg gibi farklı farklı birçok değer olabilir.

Sürekli olasılık dağılımlarında, olasılıkları hesaplarken sabit bir değeri değil, belirli bir aralık arasındaki değerleri ararız. Olasılık yoğunluk fonksiyonu (pdf) ile belirli bir aralığın altında kalan alanı hesaplarız. Formülde integralin kullanılması bu nedendendir.

Kümülatif dağılım fonksiyonu (cdf)

Sürekli bir rassal değişkenin, en fazla belli bir değere kadar olan olasılıklarının toplamını bulmak için kümülatif (birikimli) dağılım fonksiyonu (cdf) kullanılır.

P {X ≤ b} = b-∞ f(x)dx

X: Rassal değişken
x: Rassal değişkenin aldığı değer
b: Üst sınır

Beklenen değer (E(X) – 𝜇)

Bir rassal değişkenin ortalama değerine beklenen değer denir. Bir deney defalarca tekrarlandığı zaman gerçekleşmesi beklenen sonuç olarak da ifade edilir.

Kesikli bir rassal değişkenin aldığı her bir değerin, o değere karşılık gelen olasılığıyla çarpımlarının toplamı olarak hesaplanır.

E(X) = 𝜇 = -∞ x. f(x)dx

X: Rassal değişken
x: Rassal değişkenin aldığı değer

Varyans (Var (X) – σ2)

Bir rassal değişkenin varyansı, rassal değişkenin aldığı olasılık değerlerinin dağılımının ortalama etrafında ne yoğunlukta toplandığını gösterir.

Var(X) = σ2 =  E[X - E[X]2] = E[X2] - [E[X]]2

Gerçek bir örnek üzerinden ilerleyelim.

Sürekli olasılık dağılımına sahip bir veri oluşturalım. Daha sonrasında bu verinin olasılık dağılım grafiğini çizelim.

Sürekli olasılık dağılımına sahip rastgele bir veri seti oluşturmak için Scipy paketinin stats kütüphanesini kullanacağız. Kullanmadan önce ilgili kütüphaneyi çağıralım.

import scipy.stats as stats

Oluşturacağımız veri setinin önemli sürekli olasılık dağılımlarından biri olan normal dağılıma sahip olmasını istiyoruz.

normal_dist = stats.norm(loc = 100, scale = 25)

normal_list = normal_dist.rvs(size = 50, random_state = 42)

print(normal_list)
[112.41785383  96.54339247 116.19221345 138.07574641  94.14616563
  94.14657608 139.48032039 119.18586823  88.26314035 113.56400109
  88.41455768  88.35675616 106.04905679  52.16799388  56.87705419
  85.94281177  74.67922199 107.85618331  77.29939811  64.69240747
 136.64121922  94.35559249 101.68820512  64.38129534  86.39043189
 102.77306474  71.22516056 109.39245046  84.98403275  92.70765626
  84.95733469 146.30695461  99.66256938  73.55722678 120.5636228
  69.47890875 105.22158988  51.0082469   66.79534878 104.9215309
 118.4616645  104.28420703  97.10879294  92.47240761  63.03695024
  82.00389479  88.48403073 126.42805566 108.59045724  55.92399612]
  • stats kütüphanesindeki norm fonksiyonunu kullanarak normal dağılımın sahip olmasını istediğimiz ortalama ve standart sapma değerlerini belirledik.
    • loc: Ortalama
    • scale: Standart sapma
  • Daha sonrasında rvs() metodunu kullanarak ortalama değeri 100, standart sapma değeri 25 olan, 50 gözlemden oluşan ve normal dağılıma sahip bir veri seti ürettik.
  • random_state parametresi ürettiğimiz verilerin her seferinde aynı olmasını sağlar. 42 rakamı semboliktir. Farklı bir rakam seçip, o rakamı düzenli olarak kullandığınızda aynı gözlem değerlerini elde edeceksiniz.
  • normal_list değişkenini istediğim kadar tekrardan oluştursak da, random_state parametresini 42 olarak girdiğimiz için, aynı gözlemleri elde edeceğiz.

Olasılık dağılımını görselleştirmek için gerekli her detaya sahibiz. Seaborn kütüphanesini kullanarak sürekli olasılık dağılımını görselleştireceğiz.

fig, ax = plt.subplots()
fig.set_size_inches(11.7, 8.27)

ax = sns.histplot(data = normal_list, kde = True, stat="probability")
ax.set_title("Sürekli Olasılık Dağılımı")
ax.set_xlabel("Değerler")
ax.set_ylabel("Olasılıklar")

plt.show()

Önemli Olasılık Dağılımları

Yaygın kullanılan bazı önemli olasılık dağılımları ile veriden çıkarım yapmak kolaylaşır. Bazı istatistiksel testler ve makine öğrenmesi modelleri, verinin belirli bir olasılık dağılımına sahip olduğu varsayımı ile çalışır. Önemli bazı olasılık dağılımlarını inceleyelim:

Kesikli Olasılık Dağılımları

1.Bernoulli dağılımı

İsviçreli matematikçi Jacob Bernoulli’nin ismini taşıyan Bernoulli dağılımı, tek bir deneyin iki farklı sonuca sahip olduğu durumlarda uygulanır. Bernoulli dağılımında deney sadece bir kez (n = 1) tekrar edilir.

Bernoulli dağılımı, binom dağılımı, geometrik dağılım gibi daha kompleks dağılımların yapı taşını oluşturur.

Bernoulli olayı (Bernoulli trials) olarak da isimlendirilebilecek bu olaylarda iki farklı sonucu başarı (p) ve başarısızlık (q = 1 – p) olarak ifade edebiliriz.

Bernoulli dağılımı örnekleri:

  • Bir siyasi adayın seçimi kazanması veya kazanamaması
  • Bir kişinin hasta olması veya olmaması
  • Bir zarın havaya atıldığında 6 gelmesi veya gelmemesi
  • Bir öğrencinin sınavdan geçmesi veya kalması
  • Bir mailin spam olması veya olmaması

Bernoulli dağılımı ne zaman kullanılır?

  • Tek bir deneyin, başarı/başarısızlık veya evet/hayır olarak kategorize edebilecek iki farklı sonucu olduğu durumlarda kullanışlıdır.

Bernoulli dağılımının kullanılabilmesi için gerekli şartlar nelerdir?

  • Deneyin sadece iki farklı sonucu olması. (Başarı/Başarısızlık veya Evet/Hayır)
  • Her bir sonucun sabit bir olasılık değerine sahip olması.
  • Her bir deneyin bağımsız olması. Yani, her denemedeki başarı olasılığının sabit olmasıdır.
Olasılık kütle fonksiyonu (Probability mass function – PMF)
X ~ Be(p)

x = 1 (Başarı)
p: Başarı oranı
q (1 - p): Başarısızlık oranı


f(x) = px * (q)1 – x  0 < p < 1
Ortalama (𝜇)
𝜇 = E(X) = p 
Varyans2)
Var(X) = σ2 = p(1 - p)
Python’da Bernoulli dağılımı

Python’da olasılık dağılımları ile çalışmak için SciPy kütüphanesindeki Stats modülü kullanışlıdır. Bu ve bundan sonraki diğer tüm dağılımlarda işlemler yapmak için bu modülü kullanacağız. Bir örnek üzerinden ilerleyelim.

Statista‘nın verilerine göre Eylül, 2020 yılındaki e-mail trafiğinin %47.3‘ü spam olarak kabul edilmiştir. Yani, teorik olarak bir mailin spam olma olasılığı %47.3’tür. Bu bilgiyi kullanarak dağılımın istatistiklerini hesaplayalım ve grafiğini çizdirelim.

x = [0, 1]
success = 0.473

ber_pmf = stats.bernoulli.pmf(p = success, k = x)

print(ber_pmf)
array([0.527, 0.473])
  • Stats modülündeki bernoulli dağılımını ve bu dağılıma ait olasılık kütle fonksiyonu hesaplayan pmf() fonksiyonunu kullandık.
  • pmf() fonksiyonu 2 adet parametre ile çalışır.
    • p: Başarı olasılığı
    • k: pmf ile olasılık hesabı yapılacak değer veya değerler
  • Mail trafiğinin %47.3’ü spam olarak sayıldığı için bir mailin spam olması yani başarı oranı 0.473’tür.
  • pmf ile hem başarı hem de başarısızlık durumundaki olasılıkları hesaplamak istediğimiz için bir liste formatında başarısızlık ve başarıyı temsil eden 0 ve 1 değerlerini verdik. Bu değerlerden herhangi birini hesaplamak için liste yerine sadece x = 0 veya x = 1 diyerek ilerleyebilirsiniz.
  • Son olarak da ilgili değerleri ekrana yazdırdık.

Olasılık kütle fonksiyonunu (pmf) ve değerleri hesapladık. Bu dağılımı tanımlayacak ortalama, varyans, eğiklik ve basıklık gibi değerleri de hızlıca hesaplayalım.

mean, var, skew, kurt = stats.bernoulli.stats(p = success, moments='mvsk')

Yine aynı modülde bulunan bir diğer parametre “moments” ile ortalama (mean), varyans (variance), çarpıklık (skewness) ve basıklık (kurtosis) değerlerini topluca hesapladık. Bu değerlerden hepsini hesaplamak veya bir kaçını hesaplamak için istediğiniz istatistiğin baş harflerini kullanmanız yeterlidir. Örneğin varyans ve çarpıklık için moments = “vs” sözdizimini (syntax) kullanmanız gerekmektedir.

Son olarak yukarıdaki olasılık dağılımının grafiğini çizdirelim.

fig, ax = plt.subplots(figsize = (10, 6))
ax.hist(ber_pmf, color = "skyblue")
ax.set_title("Bernoulli Olasılık Dağılımı")
ax.set_xlabel("Değerler")
ax.set_ylabel("Olasılık")
plt.show()
  • Olasılık kütle fonksiyonu ile hesapladığımız başarı ve başarısızlık değerlerini hist fonksiyonu ile bir histograma dönüştürdük.

2.Binom dağılımı

Binom dağılımı, bir Bernoulli olayının birden çok kez tekrar edilmiş hali olarak özetlenebilir. Kısacası, birden çok kez tekrar edilen bir deneydeki başarı veya başarısızlık olasılığının dağılımını verir.

Binom dağılımı örnekleri:

  • 10 defa havaya atılan bir madeni paranın 7 kere yazı gelmesi.
  • 5 hamile kadının 3’ünün erkek çocuk dünyaya getirmesi.
  • Websitesine gelen 100 kullanıcıdan 30’unun satın alma yapması.

Binom dağılımı ne zaman kullanılır?

  • Tek bir deneyin, başarı/başarısızlık veya evet/hayır olarak kategorize edebilecek iki farklı sonucu olduğu durumlarda kullanışlıdır.

Binom dağılımının kullanılabilmesi için gerekli şartlar nelerdir?

  • Deneyin belirli bir sayıda tekrar edilmesi.
  • Deneyin sadece iki farklı sonucu olması. (Başarı/Başarısızlık veya Evet/Hayır)
  • Her bir sonucun sabit bir olasılık değerine sahip olması.
  • Her bir deney bağımsız olmalıdır. Yani, her denemedeki başarı olasılığı sabit olmalıdır.
Olasılık kütle fonksiyonu (Probability mass function – PMF)
X ~ B(n, p)

p = Bir deneydeki başarı oranı
q = 1 - p = Bir deneydeki başarısızlık oranı
n: Deney sayısı
k: İstenilen başarılı olay sayısı


f(x) = Per(n k) pk * (q)n-k       0 < p < 1

Per: Permütasyon
Ortalama (𝜇)
𝜇 = E(X) = n * p 
Varyans2)
Var(X) = σ2 = n * p * (1 - p)
Python’da Binom dağılımı

Binom dağılımının, Bernoulli dağılımının birden çok kez tekrarlanmış hali olduğundan bahsetmiştik. Bernoulli dağılımını anlatırken kullandığımız mail spam örneğine devam edelim.

Bir mailin spam olma olasılığı %47.3 ise gönderilen 100 adet mailden kaçı spam olur?

hund_mails = stats.binom.rvs(n = 100, p = 0.473)
print(hund_mails)
46

Gönderilen 100 mailden 46 tanesinin spam olacağını hesapladık. Peki, göndereceğimiz 100 mailden 30 tanesinin spam olma olasılığı nedir?

Kesikli rassal değişkenin bir noktada aldığı değeri hesaplamak için olasılık kütle fonksiyonunu (pmf) kullanırız.

stats.binom.pmf(k = 30, n = 100, p = 0.473)
0.00017398661193644704
  • Stats kütüphanesindeki pmf() fonksiyonu binom dağılımı için üç parametre kullanır.
    • k: Başarılı deney sayısı
    • n: Deneyin tekrar sayısı
    • p: Başarı oranı

Hesaplamalara göre, gönderilen 100 mailden 30’unun spam olma olasılığı neredeyse yok diyebiliriz.

Peki, en fazla 50 mailin spam olma olasılığı nedir?

Kesikli rassal değişkenin, belli bir değer değere eşit veya az olma olasılığını hesaplamak için kümülatif dağılım fonksiyonu (cdf) kullanılır.

stats.binom.cdf(k = 50, n = 100, p = 0.473)
0.7394605934272087
  • Stats kütüphanesindeki cdf() fonksiyonu binom dağılımı için üç parametre kullanır.
    • k: Başarılı minimum deney sayısı
    • n: Deneyin tekrar sayısı
    • p: Başarı oranı

Hesaplamalara göre, gönderilen 100 mailden 50’sinin spam olma olasılığı %73.9.

Bernoulli deneyini 100 kere tekrar ettiğimiz zaman, yani 100 adet mail gönderdiğimizde, 46 adet mailin spam olabileceğini hesapladık. Elimizdeki rakam bir adet örneklemden elde edildi.

Yazının başında da söylediğimiz gibi her örneklem bir miktar farklılıklar içerir. Yukarıdaki işlemi her tekrar ettiğimizde yani farklı örneklemler çektiğimizde farklı sayıda mailin spam olabileceğini görürüz.

Örneklem sayısını 1’den 10’a çıkaralım. Bunun için “size” parametresini kullanacağız.

binom_samples = stats.binom.rvs(n = 100, p = 0.473, size = 10)
print(binom_samples)
array([41, 42, 45, 40, 51, 52, 45, 54, 46, 45])

10 farklı örneklemde birbirinden farklı rakamlar elde ettik. Elde ettiğimiz rakamlar bize “örneklem dağılımını” verdi. Örneklem sayısını 1000’e çıkaralım ve oluşan örneklem dağılımının grafiğini çizelim.

binom_samples_thousand = stats.binom.rvs(n = 100, p = 0.473, size = 1000)


fig, ax = plt.subplots(figsize = (10, 6))
ax.hist(binom_samples_thousand, density = True, color = "skyblue")
ax.set_title("Binom Olasılık Dağılımı")
ax.set_xlabel("Mail Sayısı")
ax.set_ylabel("Olasılık")
plt.show()
fig.savefig("Downloads/binom-olasilik-dagilimi-histogram.png")

Binom dağılımında örneklem sayısı arttıkça, normal dağılıma yakınsama gerçekleşir.

3.Poisson dağılımı

Poisson dağılımı, bir olayın belirli bir zaman aralığında ne sıklıkla gerçekleştiğini gösteren dağılımdır. Bir olayın belirli bir zaman diliminde ne kadar gerçekleşeceğini modellemek için kullanılır.

Poisson dağılımı örnekleri:

  • Bir çağrı merkezinin her yarım saatte aldığı çağrı sayısı.
  • Bir bankada gerçekleşen günlük sahte işlem sayısı.
  • Bir ayda gerçekleşecek araba kazası sayısı.
  • Bir haftada websitesine kayıt olan kullanıcı sayısı.

Poisson dağılımı ne zaman kullanılır?

  • Belirli bir zaman diliminde sabit sayıda (Ör: her 1 saatte 5 defa) gerçekleşen bir olayın, istenilen bir zaman aralığında ne kadar olasılıkla gerçekleşeceğini bulmak için veya kaç defa gerçekleşebileceğini bulmak için kullanışlıdır.

Poisson dağılımının kullanılabilmesi için gerekli şartlar nelerdir?

  • Olayların birbirinden bağımsız olması.
  • Belirli bir zaman aralığında gerçekleşen olay sayısının ortalamasının sabit olması.
  • İki olayın aynı anda gerçekleşmemesi.
Olasılık kütle fonksiyonu (Probability mass function – PMF)
X ~ Po(λ) 

λ: Belirli bir zaman aralığında gerçekleşmesi beklenen ortalama olay sayısı (λ = Olay sayısı / geçen zaman)
k: Belirtilen zaman aralığında gerçekleşmesi istenen başarılı olay sayısı
e: Euler sayısı (e = 2.71828)


f(x) = (e-λ * λk) / k! 
Ortalama (𝜇)
𝜇 = E(X) = λ
Varyans2)
Var(X) = σ2 = λ
Python’da Poisson dağılımı

Poisson dağılımına dair hesaplamalar yapmak için diğer dağılımlarda olduğu gibi SciPy kütüphanesindeki Stats modülünü kullanacağız.

Poisson için yeni bir uygulama yapalım:

İşlek bir caddeden saatte 120 araba geçiyor. Bu caddeden 20 dakika içerisinde 30 araba geçme olasılığı nedir?

Bu soruyu yanıtlayabilmek için pmf() fonksiyonuna ihtiyacımız vardır. Poisson dağılımı için pmf() fonksiyonu k ve mu adında iki parametre kullanır. k, belirli zaman aralığında gerçekleşmesini istediğimiz başarılı olay sayısını, mu ise o zaman aralığında gerçekleşen ortalama olay sayısını yani lambdayı (λ) temsil eder.

20 dakika içerisinde 3 araba geçme olasılığını bulmak istiyoruz. Bu nedenle k değeri 30’dur. Mu değeri, 20 dakikada geçen ortalama araç sayısı olmalıdır. 1 saatte 120 araba geçen caddeden, ortalama olarak 20 dakikada 40 araç geçer.

stats.poisson.pmf(k = 30, mu = 40)
0.018465470960734108

Peki, 20 dakika içinde araba geçme olasılığı saatte 120 araba geçtiği durumda nasıl değişiyor?

car_poi = stats.poisson.pmf(k = range(10,50), mu = 40)


fig, ax = plt.subplots(figsize = (10, 6))
ax.plot(range(10, 50), car_poi, color = "skyblue")
ax.set_title("Poisson Olasılık Dağılımı (λ = 40)")
ax.set_xlabel("Geçen araç sayısı")
ax.set_ylabel("Olasılık")
plt.show()
  • Grafiği çizdirmeden önce 10 ile 50 araç arasındaki tüm olasılık değerlerini hesaplayıp bir değişkene atadık.
  • Daha sonrasında yukarıdaki örneklere benzer bir formatta çizgi grafiğini oluşturduk.

Geçen araç sayısı 40’a doğru yaklaşırken olasılık değeri de artmaktadır. Sayı 40’ı aştıktan sonra olasılık değeri de düşmektedir.

4.Geometrik dağılım

Geometrik dağılım, başarı/başarısızlık gibi sadece iki farklı sonuca sahip bir Bernoulli olayında, ilk başarılı sonucu elde etmek için gerçekleşmesi gereken deneme sayısının dağılımıdır.

Örnek olarak, başarıyı yakalayana kadar başarısız denemelerin süreceğini ve başarılı olay gerçekleştiği zaman denemelerin duracağını düşünebilirsiniz. Bu nedenle teorik olarak deney sayısı sonsuzdur.

Geometrik dağılım örnekleri:

  • Havaya atılan bir madeni paranın ilk defa “tura” gelmeden önce gelen “yazı” sayısı.
  • Bir basketbolcunun ilk üçlük atışını sayı yapmadan kaçıracağı üçlük atış sayısı

Geometrik dağılımı ne zaman kullanılır?

  • Geometrik dağılım, bir olayın gerçekleşme olasılığının belirli (limitli) adet deney içerisinde gerçekleşme olasılığının hesaplanmasında kullanışlıdır.

Geometrik dağılımının kullanılabilmesi için gerekli şartlar nelerdir?

  • Deneyin sadece iki farklı sonucu olması. (Başarı/Başarısızlık veya Evet/Hayır)
  • Her bir sonucun sabit bir olasılık değerine sahip olması.
  • Her bir deneyin bağımsız olması. Yani, her denemedeki başarı olasılığının sabit olmasıdır.
  • İstenilen başarı koşulu sağlanana kadar deney tekrarlanır.
Olasılık kütle fonksiyonu (Probability mass function – PMF)
X ~ G(x, p)
p: Başarı olasılığı
x: İlk başarılı olay için gereken deney sayısı

f(x) = (1 - p)x – 1 * p     0 < p < 1 
Ortalama (𝜇)
𝜇 = E(X) = (1 - p) / p
Varyans2)
Var(X) = σ2 = (1 - p) / p2
Python’da Geometrik dağılım

Geometrik dağılım ile bir basketbolcunun serbest atış başarısını modelleyelim.

Bir basketbolcunun serbest atışlardaki başarı oranı %30‘dur. Olasılık dağılım fonksiyonunu çizdirelim.

throw = stats.geom.pmf(k = range(1, 20), p = 0.3)

fig, ax = plt.subplots(figsize = (10, 6))
ax.bar(range(1, 20), throw, color = "skyblue")
ax.set_title("Geometrik Olasılık Dağılımı")
ax.set_xlabel("Atış sayısı")
ax.set_ylabel("Olasılık")
plt.show()
  • İlk olarak SciPy kütüphanesinin stats modülünden “geom” fonksiyonunu kullanarak 1’den 20’ye kadar yapılan atışlardaki başarı oranını hesapladık.
  • Grafikte yer alan her sütun, ilk başarılı serbest atışın o denemede gerçekleşeceği olasılığı temsil eder. “Geometrik ilerleme” adı verilen bu durumda, atış sayısı arttıkça başarısızlık oranı azalmaktadır.

Basktebolcunun ilk başarılı atışını 6. denemede başarma olasılığı kaçtır?

stats.geom.pmf(k = 6, p = 0.30)
0.05042099999999998

Cevap: %5.

5. Hipergeometrik dağılım

Binom dağılımı, desteden çekilen kartın veya torbadan çekilen renkli bir topun tekrardan yerine konmadığı durumlarda, olasılık hesaplamalarında yetersiz kalır.

Hipergeometrik dağılım, Binom dağılımının “tekrarsız” olaylarla gerçekleştirilmiş versiyonudur. Binom dağılımında olduğu gibi, sadece iki farklı sonucu olan ve birden çok kez tekrar edilen Bernoulli deneyindeki başarı sayısının dağılımını yansıtır. Farklı olarak, her deney birbirinden bağımsız değildir. Yani, gerçekleşen olaylar birbirini etkiler.

Hipergeometrik dağılım örnekleri:

  • Bir grup öğrenci içerisinden rastgele seçim yapılması.

Hipergeometrik dağılım ne zaman kullanılır?

  • Hipergeometrik dağılım, belirli bir sayıda başarılı sonuç için iadesiz/tekrarsız (Ör: Bir desteden çekilen kartın, sonrasında geri desteye konulmaması) seçimin yapıldığı deneylerde kullanışlıdır.

Hipergeometrik dağılımın kullanılabilmesi için gerekli şartlar nelerdir?

  • Deneyin sadece iki farklı sonucu olması. (Başarı/Başarısızlık veya Evet/Hayır)
  • Her bir sonucun sabit bir olasılık değerine sahip olması.
  • Her bir deneyin bağımsız olması. Yani, her denemedeki başarı olasılığının sabit olmasıdır.
Olasılık kütle fonksiyonu (Probability mass function – PMF)
X ~ HGeom(x, A, N, n)

x: Örneklemdeki başarı sayısı
A: Popülasyondaki başarı sayısı
N: Ana kütledeki eleman sayısı
n: Örneklem hacmi


f(x) = Per(A x) * Per(N-A n-x) / Per(N n)
Ortalama (𝜇)
𝜇 = E(X) = n * (A / N)
Varyans2)
Var(X) = σ2 = n * (A * (N - A) * (N - n)) / (N * N * (N-1))
Python’da Hipergeometrik dağılım

Hipergeometrik olasılık dağılımını bir örnek üzerinden Python’da kullanalım.

Bir kavanoz içerisinde farklı renklerden 15 adet şeker olduğunu varsayalım. Bu şekerlerden 5 tanesi “kırmızı”, geri kalanları “kırmızı değil”dir. Bu kavanozdan iadesiz bir şekilde 5 şeker aldığımız durumda, hiç kırmızı şeker çekmemiş olma olasılığı nedir?

Yine SciPy kütüphanesinde bulunan Stats modülünü kullanacağıız. Bu modülde bulunan hypergeom sınıfı ile hipergeometrik olasılık dağılımlarına yönelik işlemler yapabiliriz.

Öncelikle, kavanozdan her bir şeker çekme işlemi için olasılık kütle fonksiyonunu hesaplayalım. pmf() fonksiyonu hipergeometrik dağılım için şu parametreleri kullanır:

  • k: Örneklemdeki başarı sayısı (x)
  • M: Ana kütledeki eleman sayısı (N)
  • N: Örneklem hacmi (n)
  • n: Popülasyondaki başarı sayısı (A)
hyper_pmf = stats.hypergeom.pmf(k = range(0, 6) , M = 15 , n = 5, N = 5)


fig, ax = plt.subplots(figsize = (10, 6))
ax.bar(range(0, 6), hyper_pmf, color = "skyblue")
ax.set_title("Hipergeometrik Olasılık Dağılımı")
ax.set_xlabel("Kırmızı Şeker Sayısı")
ax.set_ylabel("Olasılık")

plt.show()

Önceki dağılım örneklerinde olduğu gibi oluşturduğumuz olasılık kütle fonksiyonunu kullanarak, olasılık dağılım grafiğini sütun grafiği şeklinde yazdırdık.

Olasılık dağılım grafiğine bakıldığı zaman, 2 kırmızı şeker çekme olasılığının en yüksek olduğu görülüyor. Örneğin başında hiç kırmızı şeker çekilmediği durumun olasılığını bulmayı hedeflemiştik.

stats.hypergeom.pmf(k = 0 , M = 15 , n = 5, N = 5)
0.08391608391608395

k, yani başarı kriterini 0 diyerek olasılık kütle fonksiyonundan ilgili değeri hesapladık. Çekilen iadesiz 5 şekerden hiç kırmızı çekilmeme olasılığı %8.4′tür.

Peki, kavanozdan çekilen 5 adet şekerden en az 3’ünün kırmızı olma olasılığı nedir?

En az 3 şekerin kırmızı olma olasılığı, çekilen 5 şekerden 3’ünün veya 4’ünün veya hepsinin kırmızı olma olasılığının toplamına eşittir. Bunu şu şekilde matematiksel olarak ifade edebiliriz:

P(X >= 3) = P(X = 3) + P(X = 4) + P(X = 5) 

Olasılık dağılımlarında, tüm olasılıkların toplamı 1 eder. Eğer bütünden, 2 veya daha az kırmızı şeker çekme olasılığını çıkarırsak, yine yukarıdaki değere ulaşabiliriz. Bunu da şu şekilde matematiksel olarak ifade edebiliriz:

P(X >= 3) = 1 - P(X <= 2) 

Çekilen 5 şekerden en fazla 2’sinin kırmızı olma olasılığını kümülatif dağılım fonksiyonu (cdf) yardımı ile hesaplayabiliriz.

stats.hypergeom.cdf(k = 2 , M = 15 , n = 5, N = 5)
0.833166833166834

En fazla 2 şekerin kırmızı olma olasılığı %83.3’tür. Bu değeri 1’den çıkardığımız zaman %16.7 değerini elde ederiz. Yani, iadesiz bir şekilde çekilen 5 adet şekerden en az 3’ünün kırmızı olma olasılığı %16.7‘dir.

Sürekli Olasılık Dağılımları

1.Uniform (Tekdüze) dağılım

Bir çözüm uzayında gerçekleşmesi muhtemel tüm sonuçlar eşit olasılığa sahip ise rassal değişken uniform (düzgün) olasılık dağılımına sahiptir. Gerçek hayattaki birçok veri, en basit olasılık dağılımlarından biri olan bu dağılıma uygun değildir.

Uniform olasılık dağılımı sonuç uzayındaki değerlere göre kesikli veya sürekli olabilir.

Uniform (Tekdüze) dağılım ne zaman kullanılır?

  • Bir deneyin tüm sonuçlarının gerçekleşme ihtimalinin eşit olduğunun bilindiği durumlarda kullanışlıdır.

Uniform dağılım örnekleri:

  • Hilesiz bir zar atıldığı zaman 1’den 6’ya toplam 6 adet sonuç elde edilebilir. Zar hilesiz olduğu için her bir sonuç eşit gerçekleşme olasılığına sahiptir. (Kesikli)
  • Bir deste iskambil kartı içerisinden seçilecek herhangi bir kartın olasılığı da eşittir.(Kesikli)
  • Metronun belirli bir zaman aralığı içerisinde her 5 dakikada bir gelmesi. (Sürekli)

Belirli bir a (minimum) ve b (maksimum) noktası arasındaki tüm sonuçların gerçekleşmesi eşit olasılığa sahip olduğu için düzgün olasılık dağılımına sahip bir rassal değişkenin olasılık dağılım grafiği bir dikdörtgen olacaktır. Böyle bir grafikte tüm olasılıklar birbirine eşit olduğu için belirgin bir tepe noktası (mod) olmayacaktır.

Olasılık yoğunluk fonksiyonu (Probability density function – PDF)
𝑋∼𝑈(𝑎,𝑏)

f(x) = 1/(b − a)  a ≤ x ≤ b 
Ortalama
𝜇 = (a + b) / 2
Varyans
Var(X) = σ2 = (b - a)2 / 12
Python’da Uniform Dağılımı

Uniform dağılıma uyan random sayı üretmek için SciPy kütüphanesindeki Stats modülü kullanışlıdır.

Uniform dağılımı için kullanılacak olan pdf() fonksiyonu, x (değer veya değer aralığı), loc (başlangıç) ve scale (başlangıç + bitiş) parametreleri ile çalışır.

uniform_pdf = stats.uniform.pdf(x = range(10,30), loc = 10, scale = 60)

Yukarıdaki formülü kullanarak, 10 ve 30 arasındaki 20 adet rakamın her birinin, 10 ile 70 arasındaki toplam 60 adet rakam arasından seçilme olasılığını hesapladık. Her bir rakamın seçilme ihtimali uniform dağılımda eşit olduğu için, tüm olasılıklar 1/60’a (0.01666..) eşit oldu.

Yukarıda hesapladığımız olasılık yoğunluk fonksiyonunu ile olasılık dağılım grafiğini çizdirelim.

fig, ax = plt.subplots(figsize = (10, 6))
ax.plot(range(10,30), uniform_pdf, color = "skyblue")
ax.set_title("Uniform Olasılık Dağılımı")
ax.set_xlabel("Değerler [10, 30]")
ax.set_ylabel("Frekans")

plt.show()
  • fig, ax ifadelerini kullanarak bir çerçeve ve bu çerçeve içinde de bir değişken yarattık.
  • Matplotlib kütüphanesinin plot() fonksiyonunu kullanarak bir çizgi grafiği oluşturduk.

Herhangi bir noktadaki olasılık değeri birbirine eşit olacaktır.

p1 = stats.uniform.pdf(x = 20.3, loc = 10, scale = 60)
p2 = stats.uniform.pdf(x = 12.83, loc = 10, scale = 60)

print(p1, p2)
(0.016666666666666666, 0.016666666666666666)

2.Normal dağılım

İstatistik ve veri biliminde en yaygın kullanılan dağılımlardan biri olan ve Gauss dağılımı olarak da isimlendirilen Normal dağılım, istatistiksel çıkarımların ve hipotez testlerinin temelini oluşturur. Birçok istatistiksel test, verinin normal dağılması varsayımına göre çalışır.

Normal dağılıma sahip veri seti zile benzer simetrik bir görünüme sahiptir. Standart normal dağılıma sahip bir veri setinin ortalaması 0’a, standart sapması 1’e eşittir.

Normal dağılan bir veri setinde, verinin %68‘i ortalamadan bir standart sapma, %95‘i iki standart sapma, %99.7‘si ise 3 standart sapma uzaklıkta yer alır.

normal dağılım eğrisi

Normal dağılım örnekleri:

  • IQ skorları
  • Boy uzunlukları
  • Vücut ısısı
  • Hisse senetlerinin periyodik (günlük, aylık vs.) getirileri
  • Üretim hataları

Normal dağılım ne zaman kullanılır?

  • Veri normal dağılıma sahip veya normal dağılıma yakın bir dağılıma sahip olduğu durumlarda kullanışlıdır.

Normal dağılımın kullanılabilmesi için gerekli şartlar nelerdir?

  • Veri setinin normallik testlerini geçmesi gerekmektedir.
Olasılık yoğunluk fonksiyonu (Probability density function – PDF)
X ~ N(𝜇, σ2)

𝜇: Ortalama
σ2: Varyans
π: Pi sayısı (π = 3.14159)
e: Euler sayısı (e = 2.71828)
Ortalama (𝜇)
𝜇 = E(X) = 0
Varyans2)
Var(X) = σ2 = 1
Python’da Normal dağılım

Normal dağılıma yönelik hesaplamalar yapabilmek için SciPy kütüphanesindeki Stats modülünde bulunan “norm” sınıfı ile çalışacağız.

Yapılan araştırmalara göre hamilelik ortalama olarak 272 gün sürmekte ve 9 gün standart sapma ile normal dağılıma sahiptir. Bu bilgiler ışığında olasılık dağılım grafiğini çizdirelim.

mean = 272
st_d = 9

preg = stats.norm.pdf(range(220,320), mean, st_d)

fig, ax = plt.subplots(figsize = (10, 6))
ax.plot(range(220,320), preg,  color = "skyblue")
ax.set_title("Normal Olasılık Dağılımı")
ax.axvline(272, color='r', linestyle='dashed', linewidth=1)
ax.set_xlabel("Gün sayısı")
ax.set_ylabel("Olasılık")

plt.show()
  • İlk olarak pdf() fonksiyonunu kullanarak, 220, 320 gün aralığındaki her bir değer için olasılık değerini hesapladık.
  • Daha sonrasında bu değerleri ve karşılık gelen olasılık değerlerini kullanarak grafiği çizdirdik.
  • Orta noktayı belli edebilmek için axvline() fonksiyonunu kullanarak 272. günü kırmızı bir çizgi ile işaretledik.

Yukarıdaki tanımlarda da bahsettiğimiz gibi, normal dağılıma sahip bir veri setinde zile benzer bir grafik ortaya çıktı. Kırmızı ile çizdiğimiz orta noktası, grafiğin sağ ve sol yanını iki eşit, simetrik parçaya ayırdı.

Bir kadının hamileliğinin en fazla 270 gün sürme olasılığı nedir?

Soruyu yanıtlamak için kümülatif dağılım fonksiyonunu kullanmak zorundayız. cdf fonksiyonu normal dağılım için hesaplanacak değer, ortalama ve standart sapma olarak 3 adet parametre kullanır.

mean = 272
st_d = 9

stats.norm.cdf(270, mean, st_d)
0.4120704478709426

Yapılan hesaplamalara göre hamileliğin en fazla 270 gün sürme olasılığı %41.2′dir.

3. Üstel (Exponential) dağılım

Üstel (Exponential) dağılım, bir olay gerçekleşene kadar geçen süreyle ilgilenen bir olasılık dağılımıdır. Poisson dağılımı bir olayın belirli bir süre içerisinde kaç defa gerçekleşeceği ve bunun olasılığı ile ilgilenirken, üstel dağılım ise bir sonraki olayın ne kadar süre içerisinde gerçekleşeceği ve bunun olasılığı ile ilgilenir.

Poisson dağılımı ve Üstel dağılımın cevap aradığı sorular şöyledir: Şöyle örnekleyebiliriz:

Poisson: Belli bir zaman aralığında kaç tane sayıda olay gerçekleşir?
Üstel: Belli sayıda olay ne kadar sürede gerçekleşir?

Üstel dağılım örnekleri:

  • Bir pilin tükenme ömrü.
  • Websitesine giren bir ziyaretçinin satın alma yapana kadar geçirdiği süre.

Üstel dağılım ne zaman kullanılır?

  • Bir sonraki olayın gerçekleşmesi için ne kadar süre geçmesi gerektiğinin tahmininde kullanışlıdır.

Üstel dağılımın kullanılabilmesi için gerekli şartlar nelerdir?

  • Olaylar arasındaki geçen süre sabit olmalı ve bilinmelidir.
  • Gerçekleşen olaylar birbirinden bağımsız olmalıdır.
  • İki olay aynı anda gerçekleşmemelidir.
Olasılık yoğunluk fonksiyonu (Probability density function – PDF)
X ~ Exp(λ)

f(x) = λ * (e-(λ*x))

λ: Belirli bir zaman içerisinde gerçekleşen ortalama olay sayısı.
x: Bir sonraki olayın gerçekleşmesi beklenen "an".
Ortalama (𝜇)
𝜇 = E(X) = 0
Varyans2)
Var(X) = σ2 = 1
Python’da Üstel dağılım

Üstel dağılımın Python’daki uygulamasını görmek için bir örnek üzerinden ilerleyelim.

Bir websitesi saatte 90 ziyaret alıyor. Bu sayının her saatte sabit olduğu kabul ediliyor. Bu bilgiler ışığında her iki ziyaret arasında en az 4 dakika olma olasılığı nedir?

Her iki ziyaret arasında en az 4 dakika fark olma olasılığını arıyoruz. Matematiksel olarak şöyle ifade edebiliriz: P(X > 4)

Olasılık dağılımında tüm olasılıkların toplamı 1’dir. Eğer bütünden, iki ziyaret arasındaki farkın 4’ten eşit veya küçük olduğu durumu çıkarırsak, aradığımız sonuca ulaşabiliriz: 1 – P(X <= 4)

Üstel dağılıma yönelik hesaplamalar yapabilmek için SciPy kütüphanesindeki Stats modülünde bulunan “expon” sınıfı ile çalışacağız. Yukarıdaki bilgilere göre kümülatif dağılım fonksiyonunu (cdf) kullanarak hesaplama yapalım.

cdf() fonksiyonu üstel dağılım için x (bir sonraki olayın gerçekleşmesi için gereken süre) ve scale (iki olay arasında geçen ortalama süre) adında 2 parametre kullanır.

prob = 1 - stats.expon.cdf(x = 4, scale = 1.5)

print(prob)
0.06948345122280153

Yapılan hesaplamalara göre olasılık %6.9′dur.

Kaynakça

SciPY Docs
Discrete Random Variables and Probability Distributions
Understanding Probability Distributions