Statistika
Ushbu fanlarni chuqur o‘rganish ko‘p yillik mehnat talab qiladi. Shuning uchun biz odatimizga ko‘ra, har bir fanni bir nechta kichik bo‘limlarga ajratib o‘rganamiz. Ushbu bo‘limda matematik statistika va ehtimollar nazariyasining boshlang‘ich tushunchalari bilan tanishamiz hamda keyingi bo‘limlarda ularni amaliy masalalarga qo‘llaymiz. Qo‘llanmaning ushbu qismida Martin Buntinas va Gerald M. Funklar tomonidan yozilgan Statistics for the Sciences (Fanlar uchun statistika) kitobi va boshqa manbalardan foydalanamiz.
Kirish
Ko‘pchilik statistikani ma’lumotlarni jadval yoki diagrammalar orqali tasvirlash deb tushunadi. Bu yo‘nalish tavsiflovchi statistika (descriptive statistics) deyiladi. Ammo statistika bundan kengroq: ko‘pincha butun populyatsiya haqida aniq ma’lumot olish qimmat yoki imkonsiz bo‘lgan holatlarda, kichikroq namuna orqali noaniqlikni baholagan holda xulosa chiqarishni o‘rgatadi. Masalan, ma’lum bir davlatning barcha aholisidan so‘rovnoma olish juda katta harajat talab qiladi; uning o‘rniga aholining ma’lum qismidan so‘rov olib, xatolik chegarasini nazorat qilish orqali amaliy xulosaga kelish mumkin.
Mahsulot qoplarida \(50\pm 3\%\) kabi yozuvlarni ko‘p uchratamiz. Masalan, 50 kg deb yozilgan bo‘lsa ham, har bir qopning aniq 50 kg bo‘lishi amalda juda qiyin; bundan tashqari, ishlab chiqarilgan barcha qoplarni alohida tekshirish ham doim ham mumkin emas. Keling, bitta real misol orqali asosiy atamalar bilan tanishamiz.
Namuna 1. Louis Harris va sheriklari turli mavzular bo‘yicha so‘rovnomalar o‘tkazishadi. So‘rovlar ba’zan yuzma-yuz, ba’zan telefon, ba’zan Internet orqali olib boriladi. 1991-yilda shunday so‘rovlardan biri AQSHdagi balog‘atga yetganlar orasida o‘tkazildi. So‘rovda 1256 kishi tasodifiy tanlab olinib, ularga parhez, siqilishni boshqarish, avtomobilda xavfsizlik kamaridan foydalanish va shu kabi savollar berildi. Bizni qiziqtirgan savollardan biri: “Semirib ketmaslik uchun parhezga qat’iy amal qilasizmi?” Natijada, qatnashuvchilarning 57% i “Ha” deb javob bergan, xatolik chegarasi esa taxminan \(\pm 3\%\) deb berilgan.
Bu natijalar butun aholidan emas, kichikroq guruhdan olingan: AQSHda taxminan 200 million balog‘atga yetganlar bor deb olsak, so‘rovda ulardan bor-yo‘g‘i 1256 kishi qatnashgan. Savol berilishi mumkin bo‘lgan barcha 200 million kishilar to‘plami populyatsiya deyiladi. Agar savollar populyatsiyadagi hamma odamlarga berilib, javoblar to‘liq yig‘ilsa, bu sensus (to‘liq ro‘yxatga olish) bo‘ladi. Amalda esa biz ko‘pincha populyatsiyadan kichikroq qismni tanlab, undan ma’lumot olamiz — bu namuna deyiladi. Populyatsiya juda katta bo‘lgani uchun sensus o‘tkazish ko‘p hollarda qimmat yoki imkonsiz; shu sabab namuna asosida xulosa chiqarish muhim.
So‘rovda ishtirok etgan har bir odamni birlik (unit) deb ataymiz. Birlikning o‘ziga xos xususiyatlari yoki savollarga bergan javoblari o‘zgaruvchi (variable) deyiladi. Misol uchun, yosh, vazn, jins yoki “Ha/Yo‘q” kabi javoblarning barchasi o‘zgaruvchidir. Statistikadagi o‘zgaruvchi tushunchasi dasturlashdagi o‘zgaruvchiga o‘xshaydi: qiymat jarayonga qarab o‘zgarishi mumkin. O‘zgaruvchilar odatda ikki turga bo‘linadi: toifali (categorical) va miqdoriy (quantitative). Toifali o‘zgaruvchiga “Ha/Yo‘q”, jins, rang kabi toifalar; miqdoriy o‘zgaruvchiga esa son bilan ifodalanadigan qiymatlar (yosh, vazn va hokazo) kiradi. Ba’zan sonlar ham faqat belgi sifatida ishlatiladi (masalan, sinf raqami) — bunday holat toifali o‘zgaruvchi hisoblanadi.
Namuna asosida hisoblangan son statistika (statistic) deyiladi. Agar xuddi shu son butun populyatsiyadan hisoblangan bo‘lsa, u parametr (parameter) deyiladi. Parametrlarni odatda grek harflari bilan belgilaymiz: masalan, \(\pi\) — toifali o‘zgaruvchining populyatsiyadagi ulushi, \(\mu\) esa miqdoriy o‘zgaruvchining populyatsiyadagi o‘rtacha qiymati. Yuqoridagi so‘rovni butun populyatsiya uchun o‘tkazish amalda qiyin, shu sabab \(\pi\) ning haqiqiy qiymati noma’lum. Namuna dalillari asosida biz populyatsiya haqida xulosa qilamiz, lekin odatda \(p\) (namuna ulushi) \(\pi\) (populyatsiya ulushi) bilan aynan teng bo‘lmaydi. So‘rov bir necha marta takrorlansa, \(p\) har safar biroz o‘zgaradi, \(\pi\) esa o‘zgarmaydi. Mana shu farq va tebranishlar tanlash xatoligi (sampling error) bilan bog‘liq; amaliyotda ko‘pincha xatolik chegarasi (masalan, \(\pm 3\%\)) shu noaniqlikni ifodalaydi.
Eslatma Mashinali o‘rganishda ko‘pincha alomat (feature), statistikada esa o‘zgaruvchi (variable) atamasi ishlatiladi. Ular ko‘pincha bir-biriga yaqin ma’noda keladi; bu qo‘llanmada kontekstga qarab ikkala atamadan ham foydalanamiz.
Bu so‘rovda 1256 ta birlik (odam) qatnashgani — bu populyatsiyaning to‘liq qamrovi emas, ya’ni namuna. Har bir birlik bo‘yicha o‘lchangan yoki yozib olingan qiymatlar to‘plami kuzatuv (observation) deyiladi. Kuzatuvlardan yig‘ilgan barcha qiymatlar esa berilganlar (data)ni tashkil qiladi.
Beshta sonli xulosa
Tasavvur qilaylik, bizda insonlarning yoshlarini ifodalovchi berilganlar to‘plami bor. Berilganlarni beshta asosiy qiymat orqali umumlashtirish usuli beshta sonli xulosa (five-number summary) deyiladi. Bu besh qiymat: eng kichik qiymat (min), birinchi kvartil \(Q_1\), mediana (median), uchinchi kvartil \(Q_3\) va eng katta qiymat (max). Sodda qilib aytganda, berilganlarni tartiblab, o‘rtasidan ikkiga bo‘lamiz (mediana), so‘ng quyi va yuqori yarmning medianalarini mos ravishda \(Q_1\) va \(Q_3\) deb olamiz. Quyidagi misolda jarayonni ko‘ramiz.
\begin{equation*} \mathbf{a} = \{45, 12, 36, 78, 56, 24, 89, 15, 55, 35\} \end{equation*}
Medianning qiymati tartiblagandan so‘ng topiladi:
\begin{equation*} \mathbf{a} = \{12, 15, 24, 35, 36, 45, 55, 56, 78, 89\} \end{equation*}
To‘plamdagi qiymatlar soni juft bo‘lgani uchun o‘rtadagi bitta element yo‘q; shuning uchun beshinchi va oltinchi qiymatlarning o‘rtachasi mediana bo‘ladi: \(\frac{36+45}{2}=40.5\). Agar elementlar soni toq bo‘lsa, o‘rtadagi qiymatning o‘zi mediana bo‘ladi. Endi tartiblangan qiymatlarni quyi va yuqori yarmga ajratamiz.
Quyi darajadagi qiymatlar: \begin{equation*} \mathbf{b} = \{12, 15, 24, 35, 36\} \end{equation*}
Yuqori darajadagi qiymatlar \begin{equation*} \mathbf{c} = \{45, 55, 56, 78, 89\} \end{equation*}
O‘z navbatida, yuqoridagi \(\mathbf{b}\) va \(\mathbf{c}\) to‘plamlarining medianalari mos ravishda birinchi kvartil \(Q_1\) va uchinchi kvartil \(Q_3\) bo‘ladi. Bu misolda \(Q_1=24\), \(Q_3=56\). Eng kichik va eng katta qiymatlarni ham qo‘shsak, beshta sonli xulosa: 12, 24, 40.5, 56 va 89.
O‘rta qiymat, standart og‘ish va farq
Ingliz tilidagi mean odatda o‘rtacha qiymat deb tarjima qilinadi. Bu yerda biz arifmetik o‘rtachani nazarda tutamiz: qiymatlarning yig‘indisini ularning soniga bo‘lamiz. (Ba’zan geometrik o‘rtacha ham ishlatiladi, lekin bu bo‘limda arifmetik o‘rtacha yetarli.) Masalan, yuqoridagi yosh qiymatlari uchun:
\begin{equation*} mean = \frac{12 + 15 + 24 + 35 + 36 + 45 + 55 + 56 + 78 + 89}{10}=44.5 \end{equation*}
Matematik ifodada esa, agar bizga \(\mathbf{x} \in \mathbf{R}^n\) vektor berilgan bo‘lsa, u holda uning ko‘rnishi quyidagicha bo‘ladi va har doim o‘rtacha qiymatni \(\overline{x}\) bilan belgilaymiz.
\begin{equation} \overline{x}=\frac{1}{n}\sum_{i=1}^n \mathbf{x}_i \end{equation}
[1]:
def mean(x):
s = sum(x)
m = s / len(x)
return m
def matrix_mean(X, axis=0):
s = []
if axis == 0:
# ustunlar bo‘yicha o‘rtacha (NumPy dagi axis=0)
j = 0
while j < len(X[0]):
a = 0
i = 0
while i < len(X):
a += X[i][j]
i += 1
s.append(a / len(X))
j += 1
elif axis == 1:
# qatorlar bo‘yicha o‘rtacha (NumPy dagi axis=1)
i = 0
while i < len(X):
s.append(mean(X[i]))
i += 1
return s
Ba’zan berilganlarni guruhlarga ajratib, guruhlangan o‘rtacha qiymat ham hisoblanadi. Bu usul ayrim amaliy masalalarda uchrasa-da, hozircha asosiy tushunchalarni o‘zlashtirish uchun oddiy o‘rtacha qiymat yetarli.
Og‘ish (deviation) qiymatlarning o‘rtacha qiymatdan qancha chetga chiqishini bildiradi. Amaliyotda biz ko‘pincha standart og‘ish (standard deviation)dan foydalanamiz. Namuna uchun standart og‘ish quyidagicha:
\begin{equation} s=\sqrt{\frac{1}{n-1}\sum_{i=1}^{n}\left({\mathbf{x}_i-\overline{x}}\right)^2} \end{equation}
Bu yerda \(\overline{x}\) — namunaning o‘rtacha qiymati. Namuna bo‘yicha hisoblaganda maxrajda \(n-1\) ishlatilishi (Bessel tuzatmasi) \(\sigma\) ni baholashda og‘ishning kutilgan qiymatini yaxshiroq moslashtiradi. Agar esa butun populyatsiya ma’lum bo‘lsa, standart og‘ish \(n\) ga bo‘linadi:
\begin{equation} \sigma=\sqrt{\frac{1}{n}\sum_{i=1}^{n}\left({\mathbf{x}_i-\mu}\right)^2} \end{equation}
Bu yerda \(\mu\) — populyatsiyaning o‘rtachasi. Belgilashda ham farq bor: namuna uchun \(s\), populyatsiya uchun esa \(\sigma\) ishlatiladi.
Dispersiya (variance) — standart og‘ishning kvadrati bo‘lib, namuna uchun \(s^2\) bilan belgilanadi:
\begin{equation} s^2=\frac{1}{n-1}\sum_{i=1}^{n}\left({\mathbf{x}_i-\overline{x}}\right)^2 \end{equation}
[13]:
def var(x):
m = mean(x)
s = 0
i = 0
while i < len(x):
s = s + (x[i] - m) * (x[i] - m)
i = i + 1
s = s / (len(x) - 1)
return s
def std(x):
return var(x) ** 0.5
Tasodifiy o‘zgaruvchilar
Amaliy matematikadagi ko‘plab metodlar asosan tasodifiy o‘zgaruvchilarga tayanadi. Chunki real hayotdagi jarayonlar — atrof-muhit, odamlar, iqtisod, biologiya va hokazo — ko‘pincha oldindan aniq aytib bo‘lmaydigan omillardan iborat. Bunday jarayonlarni matematika tilida stoxastik jarayonlar deb ataymiz, ularga tayangan modellar esa stoxastik modellar deyiladi. Keyinchalik ko‘radigan ko‘plab modellarda parametrlar avval tasodifiy tanlanadi va so‘ng optimallashtirish orqali yaxshilanadi. Shu sabab tasodifiy sonlar bilan ishlashni bilish muhim.
Stoxastik jarayonning teskarisi deterministik jarayondir: bir xil kirishga har doim bir xil chiqish mos keladi. Tasavvur qiling, zavoddagi robot bir detalni doim bir xil tartibda payvandlaydi: qaysi qadamdan keyin nima qilish kerakligi aniq, vaqt yoki muhit o‘zgarsa ham (ideal sharoitda) natija bir xil bo‘ladi. Stoxastik jarayonda esa natija turli sabablar bilan o‘zgarishi mumkin; hatto bir xil sharoitda qayta bajarilganda ham turli natija chiqishi ehtimoli bor.
Tasodifiy o‘zgaruvchilarga eng sodda misol — tangani otib, uning qaysi tomoni tushishini kuzatishdir. Bu kabi misollarni ehtimollik bo‘limida batafsil ko‘ramiz. Hozir esa Python’da tasodifiy sonlar hosil qilishni mashq qilamiz — keyingi mavzular uchun bu juda kerak bo‘ladi. Tasodifiy sonlar qanday yaratilishi va ularning taqsimotlari keyingi bo‘limlarda alohida ko‘rib chiqiladi.
Python’da tasodifiy sonlar hosil qilishning bir nechta usuli bor. Boshlanishiga random modulidan foydalanamiz: randint(a, b) funksiyasi \([a, b]\) oralig‘idan (ikkala chegarani ham qo‘shib) tasodifiy butun son qaytaradi. Natijani qayta-qayta takrorlash (reproducibility) uchun odatda random.seed(...) beriladi.
[ ]:
# paketni qo‘shish
import random
# natijani takrorlash uchun urug‘ (seed)
random.seed(42)
# 1-sonni generatsiya qilish
a = random.randint(0, 100)
# 2-sonni generatsiya qilish
b = random.randint(0, 100)
# ularni chop qilish
print(a, b)
81 14
[ ]:
n = 100
x = []
random.seed(42)
i = 0
while i < n:
x.append(random.randint(0, 100))
i = i + 1
print("Tasodifiy sonlar (dastlabki 10 ta):", x[:10])
print("O‘rtacha qiymat:", mean(x))
print("Dispersiya (namuna):", var(x))
Tasodifiy sonlar (dastlabki 10 ta): [81, 14, 3, 94, 35, 31, 28, 17, 94, 13]
O‘rtacha qiymat: 47.91
Dispersiya (namuna): 911.2746464646459