Para atma örneğine tekrar dönelim. 100 tane parayı atalım ve tura gelenleri sayalım. Atışta gelen tura sayısını kaydedelim. Ardından aynı işlemi 500 kere daha yapalım.
Ne bekliyoruz? İdeal koşullarda 100 tane paranın 50 tanesi tura gelecek. Bu işlemi 500 kere bile yapsak her seferinde tura gelmesini bekleriz.
Neden? Tura gelme olasılığı \(1/2\)’dir.
Olasılık Kütle Fonksiyonu (Probability Mass Function) Tura gelme dağılımı ile olasılığı eşleştiren (mapping) fonksiyondur.
import numpy as npimport matplotlib.pyplot as plt# DeğişkenlerparaAtmaSayisi=100tekrarlamaSayisi=500# Tura sayısını tutacak diziarr_toplamTura= np.zeros(tekrarlamaSayisi)# Tekrarlam Sayisi kadar döngüfor it inrange(tekrarlamaSayisi):# 100 tane rastgele 0 veya 1 değeri üret# 0: yazı, 1: tura paraAtma= np.random.choice([0,1], size=paraAtmaSayisi)# Tüm Değerleri topla. 1'ler sanki tura gelmiş gibi düşünülebilir. arr_toplamTura[it] = np.sum(paraAtma)# Çizplt.hist(arr_toplamTura, bins=range(101))plt.xlabel("Tura Sayısı")plt.ylabel("Frekans")plt.show()
Yukarıdaki grafiği çizdirirken yatayda, tura gelme sayısını dikkate almıştık. Şimdi yataydaki değerlerin hepsini toplam sayıya yani \(100\)’e bölerek çizelim.
import numpy as npimport matplotlib.pyplot as plt# DeğişkenlerparaAtmaSayisi=100tekrarlamaSayisi=500# Tura sayısını tutacak diziarr_toplamTura= np.zeros(tekrarlamaSayisi)# Tekrarlam Sayisi kadar döngüfor it inrange(tekrarlamaSayisi):# 100 tane rastgele 0 veya 1 değeri üret# 0: yazı, 1: tura paraAtma= np.random.choice([0,1], size=paraAtmaSayisi)# Tüm Değerleri topla. 1'ler sanki tura gelmiş gibi düşünülebilir. arr_toplamTura[it] = np.sum(paraAtma)# Çizplt.hist(arr_toplamTura/100, bins=20)plt.xlabel("Olasılık")plt.ylabel("Frekans")plt.show()plt.close()
Görüldüğü üzere sıklıkları toplam sayıya böldüğümüzde olasılıklar elde edilmiş oldu. İşte bu tanıma olasılık kütle fonksiyonu (probability mass function) adı verilir. Kısaca pmf olarak adlandırılır.
Olasılık kütle fonksiyonu 0 ile 1 arasında değer alır.
Olasılık kütle fonksiyonu, dağılım değerlerinin süreksiz yani kesikli olması durumunda geçerlidir.
Alıştırma 1
Verimiz [1,1,2] olsun. Bu veri kümesinin frekansını ve olasılık kütle fonksiyonunu hesaplayalım ve çizelim.
Aynı işlemleri [1,1,2,2,3,3] için yapalım.
Çözüm
import pandas as pdimport matplotlib.pyplot as plt# Veriseri1= pd.Series([1,1,2])# Olasılık kütle fonksiyonuprint(f"Tekrar eden sayılar\n{seri1.value_counts()}")print("-"*20)print(f"Kaç sayı var? {len(seri1)}")print("-"*20)pmf= seri1.value_counts()/len(seri1)print(f"pmf=\n{pmf}")print("-"*20)# pmf değişkenini dataframe'e çevirpmf.name="Olasılık"# Çizpmf.plot(kind="bar", title="Pmf [1,1,2]")plt.show()#---seri1= pd.Series([1,1,2,2,3,3])# Olasılık kütle fonksiyonuprint(f"Tekrar eden sayılar\n{seri1.value_counts()}")print("-"*20)print(f"Kaç sayı var? {len(seri1)}")print("-"*20)pmf= seri1.value_counts()/len(seri1)print(f"pmf=\n{pmf}")print("-"*20)# pmf değişkenini dataframe'e çevirpmf.name="Olasılık"# Çizpmf.plot(kind="bar", title="Pmf [1,1,2,2,3,3]")
Tekrar eden sayılar
1 2
2 1
Name: count, dtype: int64
--------------------
Kaç sayı var? 3
--------------------
pmf=
1 0.666667
2 0.333333
Name: count, dtype: float64
--------------------
Tekrar eden sayılar
1 2
2 2
3 2
Name: count, dtype: int64
--------------------
Kaç sayı var? 6
--------------------
pmf=
1 0.333333
2 0.333333
3 0.333333
Name: count, dtype: float64
--------------------
Dikkat
PMF fonksiyonu çizdirilirken histogram grafiği değil bar grafiği çizdiriyoruz.
Pmf fonksiyonunu elde etmek için yapılan işleme normalizasyon (normalization) denir. Normalizasyon işlemi, olasılık kütle fonksiyonunun toplamı 1 olacak şekilde yapılır, çünkü olasılığın tanımı gereği toplamı 1 olmalıdır.
Olasılık kütle fonksiyonunu veri üzerinden değil de ideal koşullarda gelmesi gereken tüm değerler üzerinden de tanımlayabiliriz.
Alıştırma 2
Bir para 3 kez atılıyor. Tura gelmelerinin sayısına ait olasılık kütle fonksiyonunu bulalım.
Çözüm
Olası çözümlerimiz:
TTT
TTY, TYT, YTT
TYY, YTY, YYT
YYY
Toplam 8 ihtimal vardır. Her bir ihtimali rastgele değişkenlere atayalım.
\(X\): Tura gelme sayısı
\[
X= {0, 1, 2, 3}
\]
Burada 3 kez para atıldığında;
Hiç tura gelmeyebilir \(X=0\).
Bir kere tura gelebilir \(X=1\).
İki kere tura gelebilir \(X=2\).
Üç kere tura gelebilir \(X=3\).
Bu rastgele değişkenleri kullanarak olasılık kütle fonksiyonunu bulalım.
x
0
1
2
3
P(X=x)
1/8
3/8
3/8
1/8
Buradaki \(P(x)\) olasılık kütle fonksiyonudur veya kesikli olasılık dağılımıdır.
Beklenen Değer
Beklenen değer, rastgele değişkenin olasılık kütle fonksiyonu ile çarpımından elde edilir.
Bir verinin ortalaması (mean) değerini hesaplamak demek, o verinin beklenen değerini hesaplamak demektir.
\[
E(X)\equiv \mu = \sum_{x} x P(X=x)
\]
\[
<X> = \sum_{x} x P(X=x)
\]
Her bir rastgele değişken, \(x_{i}\), ile o rastgele değişkenin olasılığı, \(P(X=x_{i})\) çarpılır ve tüm bu çarpımlar toplanır.
Alıştırma 3
Bir elektronun spininin \(z\) bileşeni \(\hbar/2\) veya \(-\hbar/2\) değerlerini alabilir. Bu durumda bir elektronun spini \(0.5\) olasılıkla \(\hbar/2\), \(0.5\) olasılıkla \(-\hbar/2\) olur. Elektronun spini ile ilgili rastgele değişkeni \(X\) ile gösterelim.
Çözüm
\[
X = \{-1/2, 1/2\}
\]
Elektronun spini ile ilgili olasılık kütle fonksiyonunu bulalım.
Burada dalga fonksiyonunu aşağıdaki gibi yazabiliriz. Spin yukarıyı \(|\uparrow\rangle\) ile gösterelim, spin aşağıyı \(|\downarrow\rangle\) ile gösterelim.
Şimdi de \(S_{z}\) operatörünü matris formda yazalım. \(S_{z}\) operatörü, spinin \(z\) bileşenini temsil eder yani Pauli spin matrislerinin \(z\) bileşenidir.
Bir zar atıldığında beklenen değer ne olur? Matematiksel olarak hesaplayınız (Bilgisayarda değil).
Problem 3
2 zar atıldığında zarların toplamının beklenen değerini, varyansını ve standart sapmasını teorik olarak hesaplayan betik dosyası yazın.
2 zarı atın ve zarların toplamını kaydedin. Bu işlemi 3600 kere yapın.
Toplam kaç kere “2,3,4,5,6,7,8,9,10,11,12” geldiğini gösteren histogramı aynı grafikte çizdirin.
Olasılık kütle fonksiyonunu çizdirin. (y eksenini 1’e normalize edin. Bunun için np.array(np.unique(toplamGelme, return_counts=True)) fonksiyonunu kullanıp hangi sayıdan kaç adet geldiği bilgisini alabilirsiniz.) Bir önceki sorudan olması gereken olasılık kütle fonksiyonu değerlerini de bu grafikte gösteriniz. Bonus: Bu işlemleri pandas paketini kullanarak yapınız.
Beklenen değerini, varyansı ve standart sapmasını, üstte bulduğunuz deney sonuçlarını ile bulduğunuz olasılık kütle fonksiyonunu kullanarak hesaplayın. Bu değerler ile teorik değerler ile karşılaştırın.