Traffine I/O

Bahasa Indonesia

2022-11-22

Teorema limit pusat

Apa itu Teorema Limit Pusat

Teorema limit pusat menyatakan bahwa distribusi rata-rata sampel \overline{X}_n dari sampel yang dipilih secara acak dari populasi dengan rata-rata \mu dan varians \sigma^2 kira-kira mengikuti distribusi normal dengan rata-rata \mu dan varians \frac{\sigma^2}{n} ketika ukuran sampel n cukup besar.

Hal yang luar biasa dari teorema ini adalah bahwa hal itu dapat didekati oleh distribusi normal terlepas dari distribusi populasinya. Tidak peduli apa distribusi probabilitas aslinya, jika n besar, rata-rata sampel akan selalu mendekati distribusi normal.

Penting untuk dicatat bahwa itu adalah distribusi rata-rata sampel yang dapat mendekati distribusi normal, bukan distribusi sampel itu sendiri yang diambil dari populasi. Distribusi rata-rata sampel adalah distribusi yang dibentuk oleh nilai rata-rata ketika proses pengambilan sampel dari populasi dan menemukan rata-ratanya diulang berkali-kali.

Periksa Teorema Limit Pusat dalam Python

Contoh dadu

Let's experiment with the distribution of the total number of dice thrown N (1, 2, 5, 10, 50, 100) times. The dice follow a uniform distribution since the probability of getting any number from 1 to 6 is equal to \frac{1}{6}. The following is the code.

import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
#%matplotlib inline

sns.set()
sns.set_context(rc = {'patch.linewidth': 0.2})
sns.set_style('dark')

numIterations = np.asarray([1,2,5,10,50,100]); #number of i.i.d RVs
experiment = 'dice' #valid values: 'dice', 'coins'
maxNumForExperiment = {'dice':6,'coins':2} #max numbers represented on dice or coins
nSamp=100000

k = maxNumForExperiment[experiment]

fig, fig_axes = plt.subplots(ncols=3, nrows=2, constrained_layout=True, figsize=(12,8))

for i,N in enumerate(numIterations):
    y = np.random.randint(low=1,high=k+1,size=(N,nSamp)).sum(axis=0)
    row = i//3;col=i%3;
    bins=np.arange(start=min(y),stop=max(y)+2,step=1)
    fig_axes[row,col].hist(y,bins=bins,density=True)
    fig_axes[row,col].set_title('N={} {}'.format(N,experiment))
plt.show()

dice

Ketika N meningkat (yaitu, ukuran sampel yang akan diekstraksi meningkat), distribusi nilai total dadu (distribusi rata-rata sampel) mendekati distribusi normal.

Selanjutnya, mari kita bereksperimen dengan distribusi nilai rata-rata dadu yang dilempar sebanyak N (1, 2, 5, 10, 50, 100) kali.

import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
#%matplotlib inline

sns.set()
sns.set_context(rc = {'patch.linewidth': 0.2})
sns.set_style('dark')

numIterations = np.asarray([1,2,5,10,50,100]); #number of i.i.d RVs
experiment = 'coins' #valid values: 'dice', 'coins'
maxNumForExperiment = {'dice':6,'coins':2} #max numbers represented on dice or coins
nSamp=100000

k = maxNumForExperiment[experiment]

for i,N in enumerate(numIterations):
    y = np.random.randint(low=1,high=k +1,size=(N,nSamp)).sum(axis=0)/N
    row = i//3;col=i%3;
    bins=np.arange(start=1,stop=7,step=0.1)
    fig_axes[row,col].hist(y,bins=bins,density=True)
    fig_axes[row,col].set_title('N={} {}'.format(N,experiment))
plt.show()

dice mean

Kita dapat melihat bahwa dengan bertambahnya N, distribusi rata-rata lemparan dadu mendekati distribusi normal. Juga, karena varians dari rata-rata sampel adalah \frac{\sigma^2}{n}, kita melihat bahwa varians menurun seiring dengan meningkatnya N.

Contoh koin

Mari kita bereksperimen dengan distribusi nilai total dari sebuah koin yang dilempar sebanyak N (1, 2, 5, 10, 50, 100) kali, dengan 1 untuk kepala dan 2 untuk ekor. Probabilitas koin menjadi kepala atau ekor sama dengan \frac{1}{2}, jadi kita mengikuti distribusi Bernoulli. Berikut ini adalah kodenya.

import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
#%matplotlib inline

sns.set()
sns.set_context(rc = {'patch.linewidth': 0.2})
sns.set_style('dark')

numIterations = np.asarray([1,2,5,10,50,100]); #number of i.i.d RVs
experiment = 'coins' #valid values: 'dice', 'coins'
maxNumForExperiment = {'dice':6,'coins':2} #max numbers represented on dice or coins
nSamp=100000

k = maxNumForExperiment[experiment]

fig, fig_axes = plt.subplots(ncols=3, nrows=2, constrained_layout=True, figsize=(12,8))

for i,N in enumerate(numIterations):
    y = np.random.randint(low=1,high=k+1,size=(N,nSamp)).sum(axis=0)
    row = i//3;col=i%3;
    bins=np.arange(start=min(y),stop=max(y)+2,step=1)
    fig_axes[row,col].hist(y,bins=bins,density=True)
    fig_axes[row,col].set_title('N={} {}'.format(N,experiment))
plt.show()

coins

Ketika N meningkat (yaitu, ukuran sampel yang akan diekstraksi meningkat), distribusi jumlah nilai koin (distribusi rata-rata sampel) mendekati distribusi normal.

Selanjutnya, mari kita bereksperimen dengan distribusi nilai rata-rata mata yang muncul ketika koin dilempar sebanyak N (1, 2, 5, 10, 50, 100) kali.

import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
#%matplotlib inline

sns.set()
sns.set_context(rc = {'patch.linewidth': 0.2})
sns.set_style('dark')

numIterations = np.asarray([1,2,5,10,50,100]); #number of i.i.d RVs
experiment = 'coins' #valid values: 'dice', 'coins'
maxNumForExperiment = {'dice':6,'coins':2} #max numbers represented on dice or coins
nSamp=100000

k = maxNumForExperiment[experiment]

for i,N in enumerate(numIterations):
    y = np.random.randint(low=1,high=k +1,size=(N,nSamp)).sum(axis=0)/N
    row = i//3;col=i%3;
    bins=np.arange(start=1,stop=3,step=0.1)
    fig_axes[row,col].hist(y,bins=bins,density=True)
    fig_axes[row,col].set_title('N={} {}'.format(N,experiment))
plt.show()

coins mean

Dengan bertambahnya N, kita melihat bahwa distribusi rata-rata nilai koin mendekati distribusi normal. Juga, karena varians dari rata-rata sampel adalah \frac{\sigma^2}{n}, kita melihat bahwa varians menurun seiring dengan meningkatnya N.

Referensi

https://www.gaussianwaves.com/2010/01/central-limit-theorem-2/

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!