Mundarija (22)
- 1. Kirish va motivatsiya
- 2. Nazariya — chuqur tushuntirish
- 2.1. Tartib (rank) g'oyasi
- 2.2. Mann-Whitney U testi
- 2.3. Wilcoxon (juftlashgan) testi
- 2.4. Kruskal-Wallis va Friedman
- 2.5. Natijani qanday talqin qilish
- 2.6. Quvvat: parametrik va noparametrik
- 2.7. Noparametrik tuzoqlar
- 2.8. Noparametrik testlar — farazsiz solishtirish
- 3. Tez ma'lumotnoma
- 4. Batafsil misollar
- Misol 1 — Mann-Whitney va t-test: qiyshiq ma'lumot
- Misol 2 — Wilcoxon, Kruskal-Wallis, Friedman
- Misol 3 — Quvvat solishtiruvi
- Misol 4 — Mann-Whitney nimani ko'rmaydi
- 5. To'g'ri va noto'g'ri tushunishlar
- 6. Keng tarqalgan xatolar va yechimlari
- 7. Integratsiya — bu bilim qayerda kerak bo'ladi
- 8. Eng yaxshi amaliyotlar
- 9. Amaliy topshiriq
- Xulosa
11.7-dars: Noparametrik testlar
11-QISM — GIPOTEZA TESTLARI · 7-dars
1. Kirish va motivatsiya
t-test va ANOVA o'rtachalar bilan ishlaydi va normallikka tayanadi. Lekin Data Science'dagi ko'p ma'lumot — kuchli qiyshiq 9.8-bob: mijoz sarfi, sessiya uzunligi, yetkazish vaqti, kutish vaqti. Bunday ma'lumotda bitta ulkan qiymat o'rtachani ham, testni ham buzadi (11.3, Misol 3). Bundan tashqari, ba'zan ma'lumot tartibli bo'ladi: qoniqish bahosi (1-5), "yomon / o'rtacha / yaxshi" — ularda o'rtacha ma'nosi shubhali.
Noparametrik testlar — taqsimot shakliga faraz qo'ymaydigan testlar. Ular qiymatlarning o'zi bilan emas, tartiblari (rank) bilan ishlaydi: Mann-Whitney U (ikki mustaqil guruh), Wilcoxon (juftlashgan), Kruskal-Wallis (ko'p guruh), Friedman (takroriy o'lchov). Afzalligi — outlierlarga chidamli, kichik namunada ishonchli; kamchiligi — natija talqini murakkabroq ("o'rtacha farqi" emas) va normal ma'lumotda quvvati biroz kamroq.
Real vaziyat. Jamoa ikki to'lov oqimini solishtiradi: har foydalanuvchining to'lovni yakunlash vaqti. Ma'lumot kuchli qiyshiq (ko'pchilik 20-40 soniya, bir nechtasi 10 daqiqadan ortiq — brauzerni ochiq qoldirganlar). t-test p = 0.71 beradi — "farq yo'q". Median vaqtlar esa 32 va 25 soniya. Mann-Whitney testi p < 0.001 — yangi oqim sezilarli tez (Misol 1). Sabab: bir nechta ulkan qiymat t-testning standart xatosini shishirib yuborgan; tartiblarga asoslangan test esa ularga chidamli.
Bu darsda noparametrik testlarni o'rganamiz.
Bu darsda:
- Tartib (rank) g'oyasi
- Mann-Whitney U testi
- Wilcoxon (juftlashgan) testi
- Kruskal-Wallis va Friedman
- Natijani qanday talqin qilish
- Quvvat: parametrik va noparametrik solishtiruvi
- Noparametrik tuzoqlar
- Amaliy: qiyshiq metrikalar tahlili
ℹ Misollar real numpy/scipy bilan (Python 3.14).
2. Nazariya — chuqur tushuntirish
2.1. Tartib (rank) g'oyasi
Ma'lumot: [12, 15, 900, 18, 14]
Tartiblar: [ 1, 3, 5, 4, 2] ← 900 endi shunchaki "eng katta"
Noparametrik testlar shu tartiblar bilan ishlaydi:
- ekstremal qiymat ta'siri cheklangan (outlierga chidamli)
- taqsimot shakli muhim emas
- tartibli (ordinal) ma'lumot uchun ham to'g'riTartiblash — qiymatlarni kattaligi bo'yicha raqamlash. Bu ma'lumotdagi "qanchalik katta" ma'lumotini yo'qotadi, lekin "kattaroqmi" ni saqlaydi — aynan shu ko'p savolda yetarli. Tartib asosidagi testlar outlierga chidamli (900 ham, 90 000 ham — "eng katta"), taqsimot farazisiz ishlaydi. Teng qiymatlar (ties) uchun o'rtacha tartib beriladi; scipy buni avtomatik hisobga oladi.
2.2. Mann-Whitney U testi
Ikki MUSTAQIL guruh; t-testning noparametrik muqobili
H0: ikki taqsimot bir xil (aniqrog'i: P(X > Y) = 0.5 — "stoxastik tenglik")
stats.mannwhitneyu(a, b, alternative="two-sided")
Talqin: "A dan tasodifiy olingan qiymat B dan olinganidan katta bo'lish ehtimoli"
Effekt kattaligi: rank-biserial r = 2 × P(X > Y) - 1 (yoki U dan hisoblanadi)Mann-Whitney U (Wilcoxon rank-sum) — eng ko'p ishlatiladigan noparametrik test. Muhim nuans: u medianlarni solishtirmaydi (ko'p manbada shunday yozilsa ham) — u "bir guruh qiymatlari ikkinchisidan tizimli ravishda kattaroqmi" degan savolga javob beradi. Medianlar farqi haqida xulosa qilish uchun qo'shimcha faraz kerak (taqsimotlar shakli bir xil, faqat siljigan). Hisobotda medianlar va ularning ishonch oraliqlari (bootstrap, 11.8) bilan birga bering.
2.3. Wilcoxon (juftlashgan) testi
Juftlashgan dizayn 11.3-bob: bir xil obyektlarning ikki o'lchovi
H0: farqlar taqsimoti 0 atrofida simmetrik
stats.wilcoxon(oldin, keyin) # yoki stats.wilcoxon(farqlar)
Ishlash tartibi: farqlarni oling → mutlaq qiymat bo'yicha tartiblang →
musbat va manfiy tartiblar yig'indisini solishtiring Wilcoxon signed-rank — juftlashgan t-testning noparametrik muqobili: farqlarni tartiblaydi. Nol farqlar (o'zgarish yo'q) odatda tashlanadi (zero_method). Kichik namunada (n < 20) scipy aniq taqsimotdan foydalanadi. Juftlashgan dizayn afzalligi 11.3-bob bu yerda ham saqlanadi: shaxsiy farqlar yo'qoladi.
2.4. Kruskal-Wallis va Friedman
KRUSKAL-WALLIS — ANOVA ning noparametrik muqobili (3+ MUSTAQIL guruh)
stats.kruskal(g1, g2, g3)
post-hoc: Dunn testi (tuzatish bilan) yoki juft Mann-Whitney + Bonferroni 11.9-bob
FRIEDMAN — takroriy o'lchov ANOVA muqobili (bir xil obyektlar, 3+ shart)
stats.friedmanchisquare(shart1, shart2, shart3)
post-hoc: juft Wilcoxon + tuzatishKruskal-Wallis — ko'p guruhni tartiblar bo'yicha solishtiradi; Friedman — har obyekt ichida shartlarni tartiblaydi (masalan, har foydalanuvchi uchta interfeysni sinaydi). Ikkalasi ham umumiy test: post-hoc kerak (11.6 dagi kabi, tuzatish bilan — 11.9).
2.5. Natijani qanday talqin qilish
Noto'g'ri: "medianlar farq qiladi, p = 0.003" ← test to'g'ridan-to'g'ri bunday demaydi
To'g'riroq: "A guruh qiymatlari tizimli ravishda kattaroq (p = 0.003);
medianlar: 31 s va 26 s; P(A > B) = 0.61"
Hisobotda bering:
- medianlar (va bootstrap CI — 11.8)
- P(X > Y) yoki rank-biserial effekt kattaligi
- p-qiymatNoparametrik test natijasi qiymat birligida emas — shuning uchun yonida tushunarli raqamlar kerak: medianlar, kvartillar, P(X > Y). Biznes uchun eng aniq gap: "yangi oqimda foydalanuvchilarning yarmi 26 soniyadan tez tugatadi (eski oqimda 31)". Effekt kattaligi sifatida rank-biserial korrelyatsiya yoki "ustunlik ehtimoli" ishlatiladi.
2.6. Quvvat: parametrik va noparametrik
NORMAL ma'lumot: t-test biroz kuchliroq (Mann-Whitney ~95% samaradorlik)
QIYSHIQ / OUTLIERLI: noparametrik ancha kuchliroq (11.3 Misol 4)
KICHIK n: noparametrik xavfsizroq (normallikni tekshirib bo'lmaydi)
TARTIBLI ma'lumot: faqat noparametrik (yoki tartibli modellar)
Muqobil: log o'zgartirish + t-test 9.8-bob yoki bootstrap/permutatsiya (11.8)Noparametrik testlar "zaifroq" degan qarash eskirgan: normal ma'lumotda Mann-Whitney t-testning ~95% samaradorligiga ega, qiyshiq ma'lumotda esa undan ancha ustun. Tanlash mezoni: savol nima (o'rtacha muhimmi yoki "odatiy qiymat"?), taqsimot qanday, ma'lumot turi (tartibli?). Pul ko'rsatkichlarida (umumiy daromad muhim) o'rtacha kerak — u holda bootstrap 11.8-bob yaxshi yechim.
2.7. Noparametrik tuzoqlar
Asosiy tuzoqlar: "median testi" deb atash (Mann-Whitney medianlarni solishtirmaydi: u "tizimli ustunlik"ni o'lchaydi. Taqsimot shakllari juda farqli bo'lsa, u farqni umuman ko'rmasligi ham mumkin (Misol 4) — shakl farqi uchun KS testi yoki grafik kerak); faqat p (medianlar, effekt kattaligi kerak); mustaqillikni unutish (11.3 — bu yerda ham asosiy faraz); juftlashgan ma'lumotga Mann-Whitney; ko'p taqqoslash (Kruskal dan keyin tuzatishsiz juft testlar); o'rtacha muhim bo'lganda tartib testi (umumiy daromad — o'rtacha kerak, median emas); juda kichik namunada (n < 5 — aniq testlar ham kuchsiz); ties ko'p bo'lganda (ko'p teng qiymat — yaqinlashish yomonlashadi).
2.8. Noparametrik testlar — farazsiz solishtirish
Noparametrik testlar tartiblar bilan ishlaydi: Mann-Whitney U (ikki mustaqil guruh — "tizimli ravishda kattaroqmi"), Wilcoxon (juftlashgan), Kruskal-Wallis (3+ mustaqil guruh), Friedman (3+ takroriy shart); post-hoc — tuzatish bilan. Afzalligi: outlierga chidamli, taqsimot farazisiz, tartibli ma'lumot uchun mos; normal ma'lumotda quvvati t-testga deyarli teng. Talqin: medianlar, P(X > Y), effekt kattaligi bilan birga. Muqobil — log o'zgartirish yoki bootstrap/permutatsiya 11.8-bob. Keyingi dars — aynan shu: qayta namuna olish usullari.
3. Tez ma'lumotnoma
import numpy as np
from scipy import stats
stats.mannwhitneyu(a, b, alternative="two-sided") # ikki mustaqil guruh
stats.wilcoxon(oldin, keyin) # juftlashgan
stats.kruskal(g1, g2, g3) # 3+ mustaqil
stats.friedmanchisquare(s1, s2, s3) # 3+ takroriy o'lchov
# effekt kattaligi: ustunlik ehtimoli
U = stats.mannwhitneyu(a, b).statistic
p_ustunlik = U / (len(a) * len(b)) # P(X > Y) (ties yarim)
rank_biserial = 2 * p_ustunlik - 1
# hisobot uchun
np.median(a), np.median(b), np.percentile(a, [25, 75])
QOIDA: dizaynga mos test · medianlar + effekt bilan hisobot · post-hoc tuzatish bilanNoparametrik testlar xulosasi
Tartiblar bilan ishlaydi — outlierga chidamli, farazsiz
Mann-Whitney U — ikki mustaqil guruh (medianlar emas: P(X>Y))
Wilcoxon — juftlashgan; Kruskal-Wallis — 3+; Friedman — takroriy
Talqin: medianlar + P(X>Y) + p
Normal ma'lumotda quvvati ~95%; qiyshiqda ancha ustun
Muqobil: log + t-test, bootstrap/permutatsiya (11.8)4. Batafsil misollar
Misollar real numpy/scipy bilan (Python 3.14).
Misol 1 — Mann-Whitney va t-test: qiyshiq ma'lumot
"""Qiyshiq vaqt ma'lumotida t-test va Mann-Whitney (real numpy/scipy)."""
import numpy as np
from scipy import stats
def main() -> None:
rng = np.random.default_rng(0)
# to'lov vaqti: ko'pchilik 20-40 s, ba'zilar brauzerni ochiq qoldiradi
eski = np.concatenate([rng.lognormal(np.log(31), 0.35, 190), rng.uniform(600, 1800, 10)])
yangi = np.concatenate([rng.lognormal(np.log(26), 0.35, 190), rng.uniform(600, 1800, 10)])
print("=== 1. Tavsif ===")
for nom, x in [("eski", eski), ("yangi", yangi)]:
print(f" {nom}: o'rtacha {x.mean():.1f}s, median {np.median(x):.1f}s, "
f"maks {x.max():.0f}s")
print("\n=== 2. t-test (o'rtachalar) ===")
res_t = stats.ttest_ind(eski, yangi, equal_var=False)
print(f" farq {eski.mean() - yangi.mean():+.1f}s, p = {res_t.pvalue:.4f}")
print("\n=== 3. Mann-Whitney U (tartiblar) ===")
res_u = stats.mannwhitneyu(eski, yangi)
p_ust = res_u.statistic / (len(eski) * len(yangi))
print(f" U = {res_u.statistic:.0f}, p = {res_u.pvalue:.6f}")
print(f" P(eski > yangi) = {p_ust:.3f}, rank-biserial = {2 * p_ust - 1:+.3f}")
print("\n=== 4. Log o'zgartirish + t-test ===")
res_l = stats.ttest_ind(np.log(eski), np.log(yangi), equal_var=False)
print(f" p = {res_l.pvalue:.6f}")
print(" ⭐ Outlierlar t-testni bo'g'adi; tartiblar chidamli")
if __name__ == "__main__":
main()Natijaning muhim qismi:
=== 1. Tavsif ===
eski: o'rtacha 92.4s, median 32.2s, maks 1778s
yangi: o'rtacha 82.3s, median 24.8s, maks 1789s
=== 2. t-test (o'rtachalar) ===
farq +10.1s, p = 0.7053
=== 3. Mann-Whitney U (tartiblar) ===
U = 26617, p = 0.000000
P(eski > yangi) = 0.665, rank-biserial = +0.331
=== 4. Log o'zgartirish + t-test ===
p = 0.014994
⭐ Outlierlar t-testni bo'g'adi; tartiblar chidamliNima ko'rsatdi: 2.1, 2.2, 2.6-bo'limlar.
Misol 2 — Wilcoxon, Kruskal-Wallis, Friedman
"""Juftlashgan, ko'p guruh va takroriy o'lchov uchun noparametrik testlar (real numpy/scipy)."""
import numpy as np
from scipy import stats
def main() -> None:
rng = np.random.default_rng(1)
print("=== 1. Wilcoxon: 40 foydalanuvchi, oldin/keyin ===")
shaxsiy = rng.lognormal(np.log(50), 0.5, 40)
oldin = shaxsiy * rng.lognormal(0, 0.1, 40)
keyin = shaxsiy * 0.85 * rng.lognormal(0, 0.1, 40)
res_w = stats.wilcoxon(oldin, keyin)
print(f" median farq: {np.median(oldin - keyin):+.2f}s, p = {res_w.pvalue:.6f}")
print(f" juftlashgan t-test p = {stats.ttest_rel(oldin, keyin).pvalue:.6f}")
print("\n=== 2. Kruskal-Wallis: 3 hamkor (qiyshiq) ===")
g1 = rng.lognormal(np.log(42), 0.4, 50)
g2 = rng.lognormal(np.log(45), 0.4, 50)
g3 = rng.lognormal(np.log(52), 0.4, 50)
print(f" medianlar: {np.median(g1):.1f}, {np.median(g2):.1f}, {np.median(g3):.1f}")
print(f" Kruskal p = {stats.kruskal(g1, g2, g3).pvalue:.6f}, "
f"ANOVA p = {stats.f_oneway(g1, g2, g3).pvalue:.6f}")
print("\n=== 3. Post-hoc: juft Mann-Whitney + Bonferroni ===")
juftlar = [("1-2", g1, g2), ("1-3", g1, g3), ("2-3", g2, g3)]
for nom, a, b in juftlar:
p = stats.mannwhitneyu(a, b).pvalue
print(f" {nom}: p = {p:.4f}, Bonferroni bilan {min(1.0, p * 3):.4f}")
print("\n=== 4. Friedman: har foydalanuvchi 3 interfeysni sinaydi ===")
baza = rng.lognormal(np.log(60), 0.4, 30)
i1 = baza * rng.lognormal(0, 0.08, 30)
i2 = baza * 0.95 * rng.lognormal(0, 0.08, 30)
i3 = baza * 0.85 * rng.lognormal(0, 0.08, 30)
print(f" medianlar: {np.median(i1):.1f}, {np.median(i2):.1f}, {np.median(i3):.1f}")
print(f" Friedman p = {stats.friedmanchisquare(i1, i2, i3).pvalue:.6f}")
print(" ⭐ Dizaynga mos noparametrik test")
if __name__ == "__main__":
main()Natijaning muhim qismi:
=== 1. Wilcoxon: 40 foydalanuvchi, oldin/keyin ===
median farq: +6.25s, p = 0.000000
juftlashgan t-test p = 0.000001
=== 2. Kruskal-Wallis: 3 hamkor (qiyshiq) ===
medianlar: 38.7, 44.1, 46.8
Kruskal p = 0.069707, ANOVA p = 0.302045
=== 3. Post-hoc: juft Mann-Whitney + Bonferroni ===
1-2: p = 0.2317, Bonferroni bilan 0.6950
1-3: p = 0.0200, Bonferroni bilan 0.0599
2-3: p = 0.2963, Bonferroni bilan 0.8889
=== 4. Friedman: har foydalanuvchi 3 interfeysni sinaydi ===
medianlar: 59.1, 61.9, 49.4
Friedman p = 0.000008
⭐ Dizaynga mos noparametrik testNima ko'rsatdi: 2.3, 2.4-bo'limlar.
Misol 3 — Quvvat solishtiruvi
"""Normal va qiyshiq ma'lumotda t-test va Mann-Whitney quvvati (real numpy/scipy)."""
import numpy as np
from scipy import stats
def main() -> None:
rng = np.random.default_rng(2)
N, n = 3000, 40
print("=== 1. Normal ma'lumot (farq 0.5 SD) ===")
pt = pu = 0
for _ in range(N):
a = rng.normal(0.5, 1, n); b = rng.normal(0, 1, n)
pt += stats.ttest_ind(a, b, equal_var=False).pvalue < 0.05
pu += stats.mannwhitneyu(a, b).pvalue < 0.05
print(f" t-test quvvat {pt / N:.3f}, Mann-Whitney {pu / N:.3f}")
print("\n=== 2. Log-normal (medianlar 20 va 25) ===")
pt = pu = 0
for _ in range(N):
a = rng.lognormal(np.log(20), 0.8, n); b = rng.lognormal(np.log(25), 0.8, n)
pt += stats.ttest_ind(a, b, equal_var=False).pvalue < 0.05
pu += stats.mannwhitneyu(a, b).pvalue < 0.05
print(f" t-test quvvat {pt / N:.3f}, Mann-Whitney {pu / N:.3f}")
print("\n=== 3. Outlierli ma'lumot (5% ekstremal) ===")
pt = pu = 0
for _ in range(N):
a = np.concatenate([rng.normal(10.5, 2, n - 2), rng.uniform(80, 150, 2)])
b = np.concatenate([rng.normal(10.0, 2, n - 2), rng.uniform(80, 150, 2)])
pt += stats.ttest_ind(a, b, equal_var=False).pvalue < 0.05
pu += stats.mannwhitneyu(a, b).pvalue < 0.05
print(f" t-test quvvat {pt / N:.3f}, Mann-Whitney {pu / N:.3f}")
print("\n=== 4. H0 rost: I tur xato ===")
pt = pu = 0
for _ in range(N):
a = rng.lognormal(3, 0.8, n); b = rng.lognormal(3, 0.8, n)
pt += stats.ttest_ind(a, b, equal_var=False).pvalue < 0.05
pu += stats.mannwhitneyu(a, b).pvalue < 0.05
print(f" t-test {pt / N:.4f}, Mann-Whitney {pu / N:.4f} (kutilgan 0.05)")
print(" ⭐ Qiyshiq/outlierli ma'lumotda tartib testi kuchliroq")
if __name__ == "__main__":
main()Natijaning muhim qismi:
=== 1. Normal ma'lumot (farq 0.5 SD) ===
t-test quvvat 0.592, Mann-Whitney 0.566
=== 2. Log-normal (medianlar 20 va 25) ===
t-test quvvat 0.193, Mann-Whitney 0.240
=== 3. Outlierli ma'lumot (5% ekstremal) ===
t-test quvvat 0.000, Mann-Whitney 0.135
=== 4. H0 rost: I tur xato ===
t-test 0.0447, Mann-Whitney 0.0503 (kutilgan 0.05)
⭐ Qiyshiq/outlierli ma'lumotda tartib testi kuchliroqNima ko'rsatdi: 2.6-bo'lim.
Misol 4 — Mann-Whitney nimani ko'rmaydi
"""Taqsimotlar juda farqli, lekin Mann-Whitney buni ko'rmaydi; KS ko'radi (real numpy/scipy)."""
import numpy as np
from scipy import stats
def main() -> None:
rng = np.random.default_rng(3)
print("=== 1. Medianlar deyarli teng, shakl farqli ===")
a = rng.normal(50, 5, 3000)
b = np.concatenate([rng.normal(40, 3, 1500), rng.normal(60, 3, 1500)]) # ikki cho'qqi
print(f" medianlar: {np.median(a):.2f} va {np.median(b):.2f}")
print(f" o'rtachalar: {a.mean():.2f} va {b.mean():.2f}")
print(f" Mann-Whitney p = {stats.mannwhitneyu(a, b).pvalue:.4f}")
print("\n=== 2. Taqsimotlar haqiqatan farqli (Kolmogorov-Smirnov) ===")
print(f" KS testi p = {stats.ks_2samp(a, b).pvalue:.2e}")
print("\n=== 3. Ustunlik ehtimoli ===")
U = stats.mannwhitneyu(a, b).statistic
print(f" P(A > B) = {U / (len(a) * len(b)):.3f} (0.5 ga yaqin — 'tizimli ustunlik yo'q')")
print("\n=== 4. Kvartillar bilan tavsif ===")
for nom, x in [("A", a), ("B", b)]:
q = np.percentile(x, [25, 50, 75])
print(f" {nom}: Q1 {q[0]:.1f}, median {q[1]:.1f}, Q3 {q[2]:.1f}")
print(" ⭐ Mann-Whitney faqat 'tizimli ustunlik'ni ko'radi — shakl farqini emas")
print(" (shuning uchun uni 'median testi' deb atash noto'g'ri; KS yoki grafik kerak)")
if __name__ == "__main__":
main()Natijaning muhim qismi:
=== 1. Medianlar deyarli teng, shakl farqli ===
medianlar: 50.14 va 49.84
o'rtachalar: 50.10 va 49.97
Mann-Whitney p = 0.8186
=== 2. Taqsimotlar haqiqatan farqli (Kolmogorov-Smirnov) ===
KS testi p = 3.66e-162
=== 3. Ustunlik ehtimoli ===
P(A > B) = 0.502 (0.5 ga yaqin — 'tizimli ustunlik yo'q')
=== 4. Kvartillar bilan tavsif ===
A: Q1 46.6, median 50.1, Q3 53.6
B: Q1 39.9, median 49.8, Q3 60.0
⭐ Mann-Whitney faqat 'tizimli ustunlik'ni ko'radi — shakl farqini emas
(shuning uchun uni 'median testi' deb atash noto'g'ri; KS yoki grafik kerak)Nima ko'rsatdi: 2.2, 2.5, 2.7-bo'limlar.
5. To'g'ri va noto'g'ri tushunishlar
| Noto'g'ri fikr | To'g'risi |
|---|---|
| "Mann-Whitney — median testi" | Stoxastik ustunlik (P(X>Y)) |
| "Noparametrik — zaif test" | Normal ma'lumotda ~95% samarali |
| "Farazsiz — hech narsa kerak emas" | Mustaqillik baribir kerak |
| "Juftlashganga Mann-Whitney" | Wilcoxon |
| "Kruskal — post-hocsiz yetarli" | Tuzatilgan juft testlar kerak |
| "Tartib testi — o'rtacha uchun" | O'rtacha muhim bo'lsa bootstrap |
| "p yetarli" | Median, kvartil, effekt |
| "Outlierlarni o'chirib t-test" | Avval tushunish (8.6) |
6. Keng tarqalgan xatolar va yechimlari
1. Dizaynga mos kelmagan test
stats.mannwhitneyu(oldin, keyin) # bir xil odamlar # ⚠️
stats.wilcoxon(oldin, keyin) # ✅2. Faqat p
print("p =", res.pvalue) # ⚠️
print(f"medianlar {m1:.1f}/{m2:.1f}, P(X>Y)={p_ust:.2f}, p={p:.4f}") # ✅3. Post-hoc tuzatishsiz
for a, b in juftlar: stats.mannwhitneyu(a, b) # ⚠️
# Bonferroni yoki FDR 11.9-bob bilan # ✅4. "Median farq qiladi" xulosasi
print("medianlar farqli, p =", p) # ⚠️
print("A qiymatlari tizimli kattaroq; medianlar:", m1, m2) # ✅5. O'rtacha muhim bo'lganda
stats.mannwhitneyu(daromad_a, daromad_b) # umumiy daromad muhim # ⚠️
# bootstrap bilan o'rtacha farqi CI 11.8-bob # ✅6. Ko'p teng qiymat (ties)
stats.mannwhitneyu(baholar_a, baholar_b) # 1-5 shkala, ko'p ties # ⚠️
stats.mannwhitneyu(a, b, method="asymptotic") # va ties tuzatishi # ✅7. Juda kichik namuna
stats.mannwhitneyu(a, b) # n = 3 va 4 # ⚠️
# aniq usul va ehtiyotkor talqin; yoki ko'proq ma'lumot # ✅7. Integratsiya — bu bilim qayerda kerak bo'ladi
- 11.3-dars (o'tilgan): t-test farazlari
- 11.6-dars (o'tilgan): ANOVA va Kruskal-Wallis
- 9.8-dars (o'tilgan): Qiyshiq taqsimotlar
- 11.8-dars: Bootstrap va permutatsiya
- 11.10-dars: A/B test loyihasi
8. Eng yaxshi amaliyotlar
Avval taqsimotni ko'ring (5.6, 5.9).
Dizaynga mos testni tanlang.
Medianlar va kvartillarni bering.
Effekt kattaligini (P(X>Y)) qo'shing.
Post-hoc — tuzatish bilan.
O'rtacha muhim bo'lsa — bootstrap.
Ties ko'p bo'lsa ehtiyot bo'ling.
Mustaqillikni ta'minlang.
9. Amaliy topshiriq
Vazifa 1: Bashorat qiling
1. # noparametrik testlar nima bilan ishlaydi?
2. # ikki mustaqil guruh — qaysi test?
3. # juftlashgan — qaysi?
4. # 3+ mustaqil guruh?
5. # 3+ takroriy o'lchov?
6. # Mann-Whitney nimani solishtiradi?
7. # P(X > Y) = 0.5 nimani anglatadi?
8. # normal ma'lumotda quvvat nisbati?
9. # outlierli ma'lumotda?
10. # Kruskal dan keyin?
11. # o'rtacha muhim bo'lsa?
12. # tartibli baholar (1-5) uchun?Javoblar
- Tartiblar (rank)
- Mann-Whitney U
- Wilcoxon
- Kruskal-Wallis
- Friedman
- Stoxastik ustunlik
- Tizimli ustunlik yo'q
- ~95% (t-test biroz kuchli)
- Noparametrik kuchliroq
- Post-hoc (tuzatish bilan)
- Bootstrap (11.8)
- Noparametrik
Vazifa 2: Xatolarni tuzating
1. stats.mannwhitneyu(oldin, keyin) # bir xil foydalanuvchilar
2. print("medianlar farqli, p =", p)
3. for a, b in combinations(g, 2): stats.mannwhitneyu(a, b)
4. stats.mannwhitneyu(daromad_a, daromad_b) # umumiy daromad muhim
5. stats.ttest_ind(vaqt_a, vaqt_b) # 5% ekstremal qiymatJavoblar
1. stats.wilcoxon(oldin, keyin)
2. print(f"A tizimli kattaroq; medianlar {m1:.1f} va {m2:.1f}, p = {p:.4f}")
3. # Kruskal + tuzatilgan juft testlar (11.9)
4. # bootstrap bilan o'rtacha farqi va CI (11.8)
5. stats.mannwhitneyu(vaqt_a, vaqt_b) # yoki log + t-testVazifa 3: Qiyshiq metrikalar
Modellang:
- Sessiya uzunligi (log-normal + outlier)
- t-test, log + t-test, Mann-Whitney
- Medianlar va kvartillar
- Hisobot matni
Vazifa 4: Takroriy o'lchov
Modellang:
- 25 foydalanuvchi, 3 interfeys
- Friedman
- Juft Wilcoxon + Bonferroni
- Xulosa
Vazifa 5: Quvvat
Modellang:
- Turli taqsimotlar (normal, log-normal, outlierli)
- t va Mann-Whitney quvvati
- I tur xato
- Tavsiya jadvali
Vazifa 6: Integratsiya
Modellang:
- Taqsimot grafigi (5.9)
- t-test (11.3)
- Kruskal (11.6)
- Bootstrap (11.8)
Vazifa 7: O'ylash
Noparametrik testlar "farazsiz" deb ataladi va bu ularni xavfsiz tanlovdek ko'rsatadi. Lekin ular ham nimadir haqida faraz qiladi va ba'zi savollarga javob bera olmaydi. Qachon noparametrik test noto'g'ri tanlov bo'ladi, va "o'rtacha" bilan "odatiy qiymat" orasidagi tanlov biznes qaroriga qanday ta'sir qiladi?
Javob
Qisqa javob: noparametrik testlar taqsimot shakli haqida faraz qilmaydi, lekin mustaqillik va (talqin uchun) shakllarning o'xshashligi haqida faraz qiladi. Ular "o'rtacha" haqidagi savolga javob bermaydi — agar biznes uchun umumiy summa muhim bo'lsa (daromad, xarajat), median testi noto'g'ri savolga javob beradi.
1. Qachon noto'g'ri tanlov
| Vaziyat | Nega muammo |
|---|---|
| Umumiy daromad muhim | Median daromadni bashorat qilmaydi |
| Taqsimot shakllari juda farqli | "Ustunlik" talqini chalkash |
| Ko'p teng qiymat (ties) | Tartiblar ma'lumot yo'qotadi |
| Juda kichik namuna | Aniq test ham kuchsiz |
2. O'rtacha va median: biznes farqi
- Daromad: 1000 mijoz × o'rtacha chek = umumiy tushum → o'rtacha kerak
- Foydalanuvchi tajribasi: "odatiy mijoz qancha kutadi?" → median
- SLA: "99% so'rov 200 ms dan tez" → kvantil (median ham, o'rtacha ham emas)
3. Amaliy yechim
- Savolni aniqlang: jami, odatiy, yoki dum?
- O'rtacha kerak bo'lsa — bootstrap 11.8-bob yoki log-model
- Kvantillar kerak bo'lsa — kvantil regressiyasi yoki bootstrap
- Bir necha ko'rsatkichni birga hisobot qiling
4. Data Scientist qanday
- Metrikani biznes savolidan kelib chiqib tanlaydi
- Test turini metrikaga moslaydi (test — vosita, maqsad emas)
- Natijani tushunarli birlikda tushuntiradi
5. Xulosa
- "Farazsiz" — mustaqillikdan tashqari
- Median testi o'rtacha haqidagi savolga javob bermaydi
- Metrikani biznes savoli belgilaydi
- Bootstrap — har qanday statistika uchun universal yechim (11.8)
Nimani mustahkamlaydi: 2.5, 2.6, 2.7-bo'limlar.
Xulosa
Bu darsda noparametrik testlarni o'rgandik.
Eng muhim uch fikr:
Tartiblar bilan ishlash. Noparametrik testlar qiymatlarni tartiblarga aylantiradi — shuning uchun outlierlarga chidamli va taqsimot shakliga faraz qo'ymaydi. Dizaynga qarab: Mann-Whitney U (ikki mustaqil), Wilcoxon (juftlashgan), Kruskal-Wallis (3+ mustaqil), Friedman (3+ takroriy o'lchov).
To'g'ri talqin. Mann-Whitney medianlarni solishtirmaydi — u "bir guruh qiymatlari tizimli ravishda kattaroqmi" (P(X > Y)) degan savolga javob beradi; taqsimot shakli farqini esa u ko'rmaydi (buning uchun KS testi yoki grafik). Hisobotda medianlar, kvartillar va effekt kattaligi (P(X>Y), rank-biserial) bilan birga bering.
Qachon ishlatish. Qiyshiq va outlierli ma'lumotda noparametrik testlar t-testdan sezilarli kuchliroq; normal ma'lumotda quvvati ~95% — ya'ni deyarli bepul xavfsizlik. Lekin o'rtacha muhim bo'lsa (umumiy daromad), tartib testi noto'g'ri savolga javob beradi — u holda log o'zgartirish yoki bootstrap 11.8-bob.
Keyingi darsda bootstrap va permutatsiya testlarini o'rganamiz: har qanday statistika uchun ishonch oralig'i va p-qiymat — formulasiz, faraz minimal.
Izohlar (0)
Izoh yozish uchun kiring.
- Hozircha izoh yo'q. Birinchi bo'ling!