SciPy statistik ahamiyatlilik testlari
Statistik ahamiyatlilik testi nima?
Statistikada statistik ahamiyatlilik olingan natijaning ortida ma’lum bir sabab borligini, ya’ni u tasodifan yoki omad tufayli hosil bo‘lmaganini anglatadi.
SciPy bizga statistik ahamiyatlilik testlarini o‘tkazish funksiyalariga ega scipy.stats nomli modulni taqdim etadi.
Quyida bunday testlarni o‘tkazishda muhim bo‘lgan ba’zi usullar va kalit atamalar keltirilgan:
Statistikada gipoteza
Gipoteza — bosh to‘plamdagi (populyatsiyadagi) biror parametr haqidagi faraz.
Nol gipoteza
U kuzatuv statistik jihatdan ahamiyatli emas, deb faraz qiladi.
Muqobil gipoteza
U kuzatuvlar qandaydir sabab tufayli yuzaga kelgan, deb faraz qiladi.
U nol gipotezaga muqobil hisoblanadi.
Misol:
Talabani baholash uchun quyidagilarni olamiz:
"talaba o‘rtachadan yomonroq" - nol gipoteza sifatida, va:
"talaba o‘rtachadan yaxshiroq" - muqobil gipoteza sifatida.
Bir tomonlama test
Gipotezamiz qiymatning faqat bir tomonini tekshirsa, bu "bir tomonlama test" (one tailed test) deb ataladi.
Misol:
Nol gipoteza uchun:
"o‘rtacha qiymat k ga teng", quyidagi muqobil gipotezalarga ega bo‘lishimiz mumkin:
"o‘rtacha qiymat k dan kichik", yoki:
"o‘rtacha qiymat k dan katta"
Ikki tomonlama test
Gipotezamiz qiymatlarning ikkala tomonini tekshirganda.
Misol:
Nol gipoteza uchun:
"o‘rtacha qiymat k ga teng", quyidagi muqobil gipotezalarga ega bo‘lishimiz mumkin:
"o‘rtacha qiymat k ga teng emas"
Bu holda o‘rtacha qiymat k dan kichik yoki katta bo‘ladi va ikkala tomon ham tekshirilishi kerak.
Alfa qiymati
Alfa qiymati — ahamiyatlilik darajasi.
Misol:
Nol gipoteza rad etilishi uchun ma’lumotlar ekstremal qiymatlarga qanchalik yaqin bo‘lishi kerakligi.
Odatda u 0.01, 0.05 yoki 0.1 deb olinadi.
P qiymati
P qiymati ma’lumotlar aslida ekstremal qiymatga qanchalik yaqin ekanini ko‘rsatadi.
Statistik ahamiyatlilikni aniqlash uchun P qiymati va alfa qiymati taqqoslanadi.
Agar p qiymati <= alfa bo‘lsa, nol gipotezani rad etamiz va ma’lumotlar statistik jihatdan ahamiyatli deymiz. Aks holda nol gipotezani qabul qilamiz.
T-test
T-testlar ikki o‘zgaruvchining o‘rtacha qiymatlari o‘rtasida sezilarli farq bor-yo‘qligini aniqlash uchun ishlatiladi va ular bir xil taqsimotga tegishli ekanini bilishimizga imkon beradi.
Bu ikki tomonlama test.
ttest_ind() funksiyasi bir xil o‘lchamdagi ikkita tanlanmani qabul qiladi va t-statistika hamda p-qiymatdan iborat tuple hosil qiladi.
Misol
Berilgan v1 va v2 qiymatlari bir xil taqsimotdan olinganmi yoki yo‘qligini aniqlang:
import numpy as np
from scipy.stats import ttest_ind
v1 = np.random.normal(size=100)
v2 = np.random.normal(size=100)
res = ttest_ind(v1, v2)
print(res)
Natija:
Ttest_indResult(statistic=0.40833510339674095, pvalue=0.68346891833752133)O‘zingiz sinab ko‘ring »
Agar faqat p-qiymatni qaytarmoqchi bo‘lsangiz, pvalue xususiyatidan foydalaning:
Misol
...
res = ttest_ind(v1, v2).pvalue
print(res)
Natija:
0.68346891833752133O‘zingiz sinab ko‘ring »
KS-test
KS test berilgan qiymatlar biror taqsimotga bo‘ysunishini tekshirish uchun ishlatiladi.
Funksiya ikkita parametr qabul qiladi: tekshiriladigan qiymat va CDF.
CDF string yoki ehtimollikni qaytaradigan chaqiriladigan funksiya (callable) bo‘lishi mumkin.
U bir tomonlama yoki ikki tomonlama test sifatida ishlatilishi mumkin.
Standart holatda u ikki tomonlama. Biz alternative parametriga two-sided, less yoki greater qiymatlaridan birini string sifatida uzatishimiz mumkin.
Misol
Berilgan qiymat normal taqsimotga bo‘ysunishini aniqlang:
import numpy as np
from scipy.stats import kstest
v = np.random.normal(size=100)
res = kstest(v, 'norm')
print(res)
Natija:
KstestResult(statistic=0.047798701221956841, pvalue=0.97630967161777515)O‘zingiz sinab ko‘ring »
Ma’lumotlarning statistik tavsifi
Massivdagi qiymatlarning qisqacha tavsifini ko‘rish uchun describe() funksiyasidan foydalanishimiz mumkin.
U quyidagi tavsifni qaytaradi:
- kuzatuvlar soni (nobs)
- minimal va maksimal qiymatlar = minmax
- o‘rtacha qiymat (mean)
- dispersiya (variance)
- asimmetriya (skewness)
- ekstsess (kurtosis)
Misol
Massivdagi qiymatlarning statistik tavsifini ko‘rsating:
import numpy as np
from scipy.stats import describe
v = np.random.normal(size=100)
res = describe(v)
print(res)
Natija:
DescribeResult(
nobs=100,
minmax=(-2.0991855456740121, 2.1304142707414964),
mean=0.11503747689121079,
variance=0.99418092655064605,
skewness=0.013953400984243667,
kurtosis=-0.671060517912661
)
O‘zingiz sinab ko‘ring »
Normallik testlari (asimmetriya va ekstsess)
Normallik testlari asimmetriya (skewness) va ekstsessga (kurtosis) asoslanadi.
normaltest() funksiyasi quyidagi nol gipoteza uchun p qiymatini qaytaradi:
"x normal taqsimotdan olingan".
Asimmetriya (skewness):
Ma’lumotlardagi simmetriya o‘lchovi.
Normal taqsimotlar uchun u 0 ga teng.
Agar u manfiy bo‘lsa, ma’lumotlar chapga og‘gan bo‘ladi.
Agar u musbat bo‘lsa, ma’lumotlar o‘ngga og‘gan bo‘ladi.
Ekstsess (kurtosis):
Ma’lumotlar normal taqsimotga nisbatan og‘ir yoki yengil dumli ekanligining o‘lchovi.
Musbat ekstsess og‘ir dumli ekanini bildiradi.
Manfiy ekstsess yengil dumli ekanini bildiradi.
Misol
Massivdagi qiymatlarning asimmetriyasi va ekstsessini toping:
import numpy as np
from scipy.stats import skew, kurtosis
v = np.random.normal(size=100)
print(skew(v))
print(kurtosis(v))
Natija:
0.11168446328610283 -0.1879320563260931O‘zingiz sinab ko‘ring »
Misol
Ma’lumotlar normal taqsimotdan olinganligini aniqlang:
import numpy as np
from scipy.stats import normaltest
v = np.random.normal(size=100)
print(normaltest(v))
Natija:
NormaltestResult(statistic=4.4783745697002848, pvalue=0.10654505998635538)O‘zingiz sinab ko‘ring »
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
