IlmHamroh
Data Science va sun'iy intellekt/Gipoteza testlari4/10-dars18 daqiqa
Mundarija (22)

11.4-dars: Proporsiyalar (konversiyalar) testi

11-QISM — GIPOTEZA TESTLARI · 4-dars


1. Kirish va motivatsiya

Data Science'da eng ko'p tekshiriladigan farq — ulushlar farqi: konversiya, klik chastotasi (CTR), qaytish (churn) ulushi, xato chastotasi, "ha/yo'q" javoblar. Bu ma'lumot binomial 9.7-bob: har foydalanuvchi — 0 yoki 1. Shuning uchun t-test o'rniga maxsus vositalar ishlatiladi: proporsiyalar z-testi, aniq testlar (Fisher, binomial), va ulushlar uchun to'g'ri ishonch oraliqlari.

Amalda bu yerda ko'p xato qilinadi: nisbiy va absolyut farqni chalkashtirish ("+13% o'sish" — 11% dan 12.5% gacha, ya'ni +1.5 foiz punkt), kichik sonlarda normal yaqinlashishdan foydalanish, Wald ishonch oralig'ini kam kuzatuvda ishlatish (u [-0.02; 0.05] kabi ma'nosiz chegaralar beradi), va bitta foydalanuvchining ko'p sessiyasini mustaqil kuzatuv deb hisoblash.

Real vaziyat. Marketing bo'limi: "Yangi banner CTR ni 2.0% dan 2.6% ga oshirdi — 30% o'sish!". Ma'lumot: eski bannerda 100 ta ko'rsatishdan 2 ta klik, yangisida 500 ta ko'rsatishdan 13 ta klik. Data Scientist ishonch oralig'ini hisoblaydi: farq +0.6 foiz punkt, 95% CI [-2.5; +3.7] foiz punkt (Fisher p = 1.0) — natija shovqindan ajralmaydi. Bundan tashqari, 100 ta ko'rsatish uchun normal yaqinlashish ishonchsiz (kutilgan kliklar soni 2 ta). To'g'ri qaror: testni davom ettirish; kerakli hajm 11.2-bob — har variant uchun o'n minglab ko'rsatish.

Bu darsda proporsiyalar testini o'rganamiz.

Bu darsda:

  • Bir ulush testi (binomial va z-test)
  • Ikki ulush farqi (z-test)
  • Aniq testlar: Fisher va binomial
  • Ulush uchun ishonch oralig'i (Wald, Wilson)
  • Farq uchun ishonch oralig'i
  • Absolyut va nisbiy farq
  • Proporsiya tuzoqlari
  • Amaliy: A/B konversiya tahlili

ℹ Misollar real numpy/scipy/statsmodels bilan (Python 3.14).


2. Nazariya — chuqur tushuntirish

2.1. Bir ulush testi

text
Savol: kuzatilgan ulush ma'lum qiymatdan (p0) farqlimi?
  n = 500 tashrif, x = 42 konversiya (8.4%); p0 = 10% — farqlimi?

ANIQ (binomial) test — har doim to'g'ri:
  stats.binomtest(k=42, n=500, p=0.10)

z-TEST (normal yaqinlashish) — n katta bo'lsa:
  z = (p_hat - p0) / sqrt(p0 (1 - p0) / n)
  shart: n × p0 >= 10 va n × (1 - p0) >= 10

Aniq binomial test — binomial taqsimotdan 9.7-bob to'g'ridan-to'g'ri hisoblaydi: hech qanday yaqinlashish yo'q, kichik n da ham to'g'ri. z-test — normal yaqinlashish (MLT, 4.7): tez, formulada qulay, lekin kam hodisa (kutilgan soni 10 dan kam) bo'lsa ishonchsiz. Qoida: shubha bo'lsa — aniq test (binomtest); u ishonch oralig'ini ham beradi (.proportion_ci()).

2.2. Ikki ulush farqi (z-test)

text
A: nA = 4000, xA = 440 (11.0%)     B: nB = 4000, xB = 500 (12.5%)

H0: pA = pB
Birlashtirilgan ulush: p_pool = (xA + xB) / (nA + nB)
SE0 = sqrt( p_pool (1 - p_pool) (1/nA + 1/nB) )
z = (pB - pA) / SE0,   p = 2 × P(Z > |z|)

statsmodels: proportions_ztest([xB, xA], [nB, nA])

Ikki ulush z-testi — A/B testlarning standart vositasi. Diqqat: p-qiymat uchun birlashtirilgan ulush (H0 da ikkalasi teng deb faraz qilinadi), ishonch oralig'i uchun esa alohida ulushlar ishlatiladi 2.5-bob — shuning uchun ba'zan "p < 0.05, lekin CI nolni o'z ichiga oladi" kabi kichik nomuvofiqlik ko'rinadi (chegara yaqinida). Muqobil: xi-kvadrat testi 11.5-bob — 2×2 jadvalda z-test bilan matematik ekvivalent.

2.3. Aniq testlar: Fisher va binomial

Fisher aniq testi (stats.fisher_exact) — 2×2 jadval uchun aniq p-qiymat (gipergeometrik taqsimot, 9.2): kichik namunalarda yoki kam hodisada (kutilgan chastota < 5) ishlatiladi. Binomial test — bir ulush uchun. Aniq testlar konservativ (p biroz kattaroq — I tur xato alfa dan kam bo'ladi). Katta namunada z-test, xi-kvadrat va Fisher deyarli bir xil natija beradi; kichikda — Fisher xavfsizroq.

2.4. Ulush uchun ishonch oralig'i

text
WALD (klassik, yomon):  p_hat ± 1.96 sqrt(p_hat (1 - p_hat) / n)
  muammo: p_hat = 0 bo'lsa CI = [0, 0] (!); kichik n da qamrov 95% dan ancha past

WILSON (tavsiya etiladi) — kichik n va ekstremal ulushlarda ham to'g'ri
  statsmodels: proportion_confint(x, n, method="wilson")
  aniq (Clopper-Pearson): method="beta" — eng konservativ

Wald oralig'i — darsliklardagi klassik formula, lekin amalda yomon: kam hodisada (x = 0, 1, 2) noto'g'ri, hatto mumkin bo'lmagan chegaralar (manfiy yoki > 1) beradi. Wilson oralig'i — oddiy formula, ancha yaxshi qamrov; proportion_confint(..., method="wilson"). "3 qoidasi": n ta kuzatuvda 0 hodisa bo'lsa, ulushning yuqori chegarasi ≈ 3/n (masalan, 300 ta sinovda xato yo'q → xato ehtimoli 1% gacha bo'lishi mumkin).

2.5. Farq uchun ishonch oralig'i

text
Farq (absolyut, foiz punktda):
  SE = sqrt( pA(1-pA)/nA + pB(1-pB)/nB )        ← alohida ulushlar (birlashtirilmagan)
  CI: (pB - pA) ± 1.96 × SE

statsmodels: confint_proportions_2indep(xB, nB, xA, nA, method="wald")
Nisbiy farq (lift) CI — log shkalada hisoblanadi yoki bootstrap (11.8)

Hisobotda farqning ishonch oralig'i eng muhim raqam: "konversiya +1.5 foiz punkt [+0.1; +2.9]" — qanday yaxshilanishlar ma'lumotga mos ekanini ko'rsatadi. Nisbiy farq (lift) uchun oddiy formula yo'q — log shkala yoki bootstrap 11.8-bob ishlatiladi. Hisobotda ikkalasini ham bering: absolyut (foiz punkt) va nisbiy (%).

2.6. Absolyut va nisbiy farq

text
pA = 11.0%, pB = 12.5%
  ABSOLYUT farq:  +1.5 foiz punkt  (pp — percentage point)
  NISBIY farq:    +13.6%           (lift = (pB - pA) / pA)

"Konversiya 13% oshdi" va "konversiya 1.5% oshdi" — bir xil natijani tasvirlaydi!
Biznes qarori uchun ikkalasi ham kerak: nisbiy — ta'sir kattaligi,
absolyut — qancha qo'shimcha mijoz (1.5 pp × 100 000 tashrif = 1 500 mijoz)

Foiz punkt va foiz — eng ko'p chalkashtiriladigan juftlik. Kichik bazada nisbiy farq katta ko'rinadi (0.1% → 0.15% = +50%!), lekin absolyut ta'sir kichik. Hisobotda har doim aniq yozing: "+1.5 foiz punkt (+13.6% nisbiy)". Amaliy chegara ham qaysi birida ekanini kelishing.

2.7. Proporsiya tuzoqlari

Asosiy tuzoqlar: kam hodisada normal yaqinlashish (n × p < 10 — aniq test); Wald CI (kichik n, ekstremal ulush — Wilson); foiz va foiz punktni adashtirish; soxta mustaqillik (sessiya/ko'rsatish emas, foydalanuvchi — 11.3); ketma-ket tekshirish 11.2-bob; ko'p variant (A/B/C/D — ko'p taqqoslash, 11.9); Simpson paradoksi (8.7 — segmentlarda teskari yo'nalish; trafik tarkibi o'zgarganda); nisbiy farqni kichik bazada bo'rttirish; CI siz "farq yo'q" 11.1-bob.

2.8. Proporsiyalar — binomial ma'lumot testi

Ulushlar uchun: bir ulush — aniq binomial test yoki z-test (n p >= 10); ikki ulush — z-test (birlashtirilgan SE bilan p uchun), Fisher (kichik n), xi-kvadrat (11.5 — ekvivalent); ishonch oralig'i — ulush uchun Wilson (Wald emas), farq uchun alohida ulushli SE; absolyut (foiz punkt) va nisbiy (lift) farqni aniq ajrating. Tuzoqlar: kam hodisa, soxta mustaqillik, ketma-ket tekshirish, Simpson. Keyingi dars — xi-kvadrat: kategoriyalar bog'liqligi va moslik testi.


3. Tez ma'lumotnoma

python
import numpy as np
from scipy import stats
from statsmodels.stats.proportion import (proportion_confint, proportions_ztest,
                                          confint_proportions_2indep)

# BIR ULUSH
stats.binomtest(k=42, n=500, p=0.10)                     # aniq test
stats.binomtest(k=42, n=500, p=0.10).proportion_ci(method="wilson")
proportion_confint(42, 500, method="wilson")             # ulush CI

# IKKI ULUSH
stat, p = proportions_ztest([500, 440], [4000, 4000])    # [xB, xA], [nB, nA]
stats.fisher_exact([[500, 3500], [440, 3560]])           # aniq (kichik n)
confint_proportions_2indep(500, 4000, 440, 4000, method="wald")   # farq CI

# QO'LDA
pA, pB = xA / nA, xB / nB
se = np.sqrt(pA * (1 - pA) / nA + pB * (1 - pB) / nB)
ci = (pB - pA - 1.96 * se, pB - pA + 1.96 * se)
lift = (pB - pA) / pA
QOIDA: kam hodisa → aniq test · CI — Wilson · foiz punkt ≠ foiz · birlik — foydalanuvchi

Proporsiyalar xulosasi

Bir ulush — binomtest (aniq) yoki z-test (n p >= 10)
Ikki ulush — proportions_ztest; kichik n — fisher_exact
Ulush CI — Wilson (Wald emas); "3 qoidasi": 0 hodisa → ~3/n
Farq CI — alohida ulushli SE; nisbiy farq — log yoki bootstrap
Absolyut (foiz punkt) va nisbiy (lift) — ikkalasini bering

4. Batafsil misollar

Misollar real numpy/scipy/statsmodels bilan (Python 3.14).

Misol 1 — Bir ulush: aniq test va z-test

python
"""Bir ulush testi: binomtest va normal yaqinlashish (real scipy/numpy)."""

import numpy as np
from scipy import stats


def main() -> None:
    print("=== 1. 500 tashrifdan 42 konversiya; H0: p = 10% ===")
    res = stats.binomtest(k=42, n=500, p=0.10)
    print(f"  ulush = {42 / 500:.3%}, aniq p = {res.pvalue:.4f}")
    ci = res.proportion_ci(method="wilson")
    print(f"  Wilson CI: [{ci.low:.3%}, {ci.high:.3%}]")

    print("\n=== 2. z-test (normal yaqinlashish) ===")
    p0, n, x = 0.10, 500, 42
    z = (x / n - p0) / np.sqrt(p0 * (1 - p0) / n)
    print(f"  z = {z:.3f}, p = {2 * stats.norm.sf(abs(z)):.4f}")
    print(f"  shart: n×p0 = {n * p0:.0f} >= 10 — bajarilgan")

    print("\n=== 3. Kam hodisa: 60 sinovdan 1 ta xato; H0: p = 5% ===")
    res2 = stats.binomtest(k=1, n=60, p=0.05)
    z2 = (1 / 60 - 0.05) / np.sqrt(0.05 * 0.95 / 60)
    print(f"  aniq p = {res2.pvalue:.4f}, z-test p = {2 * stats.norm.sf(abs(z2)):.4f}")
    print(f"  n×p0 = {60 * 0.05:.1f} < 10 — z-test ishonchsiz")

    print("\n=== 4. '3 qoidasi': 300 sinovda 0 xato ===")
    ci0 = stats.binomtest(k=0, n=300, p=0.01).proportion_ci(method="exact")
    print(f"  CI: [{ci0.low:.4%}, {ci0.high:.4%}], 3/n = {3 / 300:.2%}")
    print("  ⭐ Kam hodisada — aniq test")


if __name__ == "__main__":
    main()

Natijaning muhim qismi:

text
=== 1. 500 tashrifdan 42 konversiya; H0: p = 10% ===
  ulush = 8.400%, aniq p = 0.2631
  Wilson CI: [6.274%, 11.160%]

=== 2. z-test (normal yaqinlashish) ===
  z = -1.193, p = 0.2330
  shart: n×p0 = 50 >= 10 — bajarilgan

=== 3. Kam hodisa: 60 sinovdan 1 ta xato; H0: p = 5% ===
  aniq p = 0.3719, z-test p = 0.2361
  n×p0 = 3.0 < 10 — z-test ishonchsiz

=== 4. '3 qoidasi': 300 sinovda 0 xato ===
  CI: [0.0000%, 1.2221%], 3/n = 1.00%
  ⭐ Kam hodisada — aniq test

Nima ko'rsatdi: 2.1, 2.3, 2.4-bo'limlar.

Misol 2 — A/B test: z-test, Fisher, CI

python
"""Ikki ulush farqi: z-test, Fisher va ishonch oraliqlari (real scipy/statsmodels)."""

import numpy as np
from scipy import stats
from statsmodels.stats.proportion import confint_proportions_2indep, proportions_ztest


def main() -> None:
    nA, xA, nB, xB = 4000, 440, 4000, 500
    pA, pB = xA / nA, xB / nB

    print("=== 1. Kuzatilgan ===")
    print(f"  A: {pA:.2%} ({xA}/{nA}), B: {pB:.2%} ({xB}/{nB})")
    print(f"  absolyut farq: {(pB - pA) * 100:+.2f} foiz punkt; nisbiy: {(pB - pA) / pA:+.1%}")

    print("\n=== 2. z-test ===")
    stat, p = proportions_ztest([xB, xA], [nB, nA])
    print(f"  z = {stat:.3f}, p = {p:.4f}")

    print("\n=== 3. Fisher aniq testi ===")
    _, p_f = stats.fisher_exact([[xB, nB - xB], [xA, nA - xA]])
    print(f"  p = {p_f:.4f}  (z-test bilan yaqin)")

    print("\n=== 4. Farqning 95% CI ===")
    lo, hi = confint_proportions_2indep(xB, nB, xA, nA, method="wald")
    print(f"  [{lo * 100:+.2f}, {hi * 100:+.2f}] foiz punkt")
    se = np.sqrt(pA * (1 - pA) / nA + pB * (1 - pB) / nB)
    print(f"  qo'lda: [{((pB - pA) - 1.96 * se) * 100:+.2f}, {((pB - pA) + 1.96 * se) * 100:+.2f}]")
    print("  ⭐ Hisobot: farq (pp), nisbiy farq, CI va p")


if __name__ == "__main__":
    main()

Natijaning muhim qismi:

text
=== 1. Kuzatilgan ===
  A: 11.00% (440/4000), B: 12.50% (500/4000)
  absolyut farq: +1.50 foiz punkt; nisbiy: +13.6%

=== 2. z-test ===
  z = 2.083, p = 0.0372

=== 3. Fisher aniq testi ===
  p = 0.0405  (z-test bilan yaqin)

=== 4. Farqning 95% CI ===
  [+0.09, +2.91] foiz punkt
  qo'lda: [+0.09, +2.91]
  ⭐ Hisobot: farq (pp), nisbiy farq, CI va p

Nima ko'rsatdi: 2.2, 2.5, 2.6-bo'limlar.

Misol 3 — Wald va Wilson oraliqlari

python
"""Wald CI kichik n va ekstremal ulushda buziladi; Wilson yaxshiroq (real numpy/statsmodels)."""

import numpy as np
from statsmodels.stats.proportion import proportion_confint


def main() -> None:
    print("=== 1. Turli holatlarda CI ===")
    print(f"  {'x/n':<10} {'Wald':<22} {'Wilson':<22}")
    for x, n in [(0, 30), (1, 30), (3, 30), (15, 30), (50, 1000)]:
        w = proportion_confint(x, n, method="normal")
        s = proportion_confint(x, n, method="wilson")
        print(f"  {f'{x}/{n}':<10} [{w[0]:.4f}, {w[1]:.4f}]     [{s[0]:.4f}, {s[1]:.4f}]")

    print("\n=== 2. Qamrov simulyatsiyasi (haqiqiy p = 0.05, n = 40) ===")
    rng = np.random.default_rng(0)
    p_haqiqiy, n, N = 0.05, 40, 20_000
    x = rng.binomial(n, p_haqiqiy, N)
    for usul in ["normal", "wilson", "beta"]:
        lo, hi = proportion_confint(x, n, method=usul)
        qamrov = np.mean((lo <= p_haqiqiy) & (p_haqiqiy <= hi))
        print(f"  {usul:<8}: qamrov {qamrov:.3f}  (maqsad 0.95)")

    print("\n=== 3. Wald muammosi ===")
    print(f"  x=0, n=30: Wald {proportion_confint(0, 30, method='normal')} — 'ehtimol aniq 0'")
    print("  ⭐ Ulush CI uchun Wilson (yoki aniq)")


if __name__ == "__main__":
    main()

Natijaning muhim qismi:

text
=== 1. Turli holatlarda CI ===
  x/n        Wald                   Wilson
  0/30       [0.0000, 0.0000]     [0.0000, 0.1135]
  1/30       [0.0000, 0.0976]     [0.0059, 0.1667]
  3/30       [0.0000, 0.2074]     [0.0346, 0.2562]
  15/30      [0.3211, 0.6789]     [0.3315, 0.6685]
  50/1000    [0.0365, 0.0635]     [0.0381, 0.0653]

=== 2. Qamrov simulyatsiyasi (haqiqiy p = 0.05, n = 40) ===
  normal  : qamrov 0.868  (maqsad 0.95)
  wilson  : qamrov 0.952  (maqsad 0.95)
  beta    : qamrov 0.986  (maqsad 0.95)

=== 3. Wald muammosi ===
  x=0, n=30: Wald (0.0, 0.0) — 'ehtimol aniq 0'
  ⭐ Ulush CI uchun Wilson (yoki aniq)

Nima ko'rsatdi: 2.4-bo'lim.

Misol 4 — Kichik namuna va Simpson paradoksi

python
"""Kichik namunada 'katta o'sish' va segmentlarda teskari yo'nalish (real numpy/scipy/statsmodels)."""

import numpy as np
from scipy import stats
from statsmodels.stats.proportion import confint_proportions_2indep


def main() -> None:
    print("=== 1. Banner misoli: 2/100 va 13/500 ===")
    nA, xA, nB, xB = 100, 2, 500, 13
    pA, pB = xA / nA, xB / nB
    print(f"  CTR: {pA:.2%} → {pB:.2%} (nisbiy {(pB - pA) / pA:+.0%})")
    _, p_f = stats.fisher_exact([[xB, nB - xB], [xA, nA - xA]])
    lo, hi = confint_proportions_2indep(xB, nB, xA, nA, method="wald")
    print(f"  Fisher p = {p_f:.3f}, farq CI [{lo * 100:+.2f}, {hi * 100:+.2f}] foiz punkt")
    print("  → shovqindan ajralmaydi")

    print("\n=== 2. Simpson paradoksi 8.7-bob ===")
    # mobil: A 100/1000 = 10%, B 60/500 = 12%;  kompyuter: A 90/300 = 30%, B 260/800 = 32.5%
    segment = {"mobil": (100, 1000, 60, 500), "kompyuter": (90, 300, 260, 800)}
    jA = jB = nAj = nBj = 0
    for nom, (xa, na, xb, nb) in segment.items():
        print(f"  {nom:<10}: A {xa / na:.1%} ({na} ta), B {xb / nb:.1%} ({nb} ta) → B yaxshiroq")
        jA += xa; nAj += na; jB += xb; nBj += nb
    print(f"  UMUMIY   : A {jA / nAj:.1%} ({nAj} ta), B {jB / nBj:.1%} ({nBj} ta) → A yaxshiroq?!")
    print("  sabab: guruhlarda qurilma tarkibi har xil")
    print("  ⭐ Kichik n — ehtiyot; segment tarkibini tekshiring")


if __name__ == "__main__":
    main()

Natijaning muhim qismi:

text
=== 1. Banner misoli: 2/100 va 13/500 ===
  CTR: 2.00% → 2.60% (nisbiy +30%)
  Fisher p = 1.000, farq CI [-2.48, +3.68] foiz punkt
  → shovqindan ajralmaydi

=== 2. Simpson paradoksi 8.7-bob ===
  mobil     : A 10.0% (1000 ta), B 12.0% (500 ta) → B yaxshiroq
  kompyuter : A 30.0% (300 ta), B 32.5% (800 ta) → B yaxshiroq
  UMUMIY   : A 14.6% (1300 ta), B 24.6% (1300 ta) → A yaxshiroq?!
  sabab: guruhlarda qurilma tarkibi har xil
  ⭐ Kichik n — ehtiyot; segment tarkibini tekshiring

Nima ko'rsatdi: 2.7-bo'lim.


5. To'g'ri va noto'g'ri tushunishlar

Noto'g'ri fikr To'g'risi
"+1.5% va +13% — turli natijalar" Bir xil (pp va nisbiy)
"z-test har doim ishlaydi" n p >= 10 sharti
"Wald CI — standart" Wilson yaxshiroq
"0 hodisa → ehtimol 0" Yuqori chegara ~3/n
"Ko'rsatishlar soni = n" Foydalanuvchilar soni
"Fisher faqat kichik n uchun" Har doim to'g'ri (konservativ)
"Umumiy natija yetarli" Segmentlarni ko'ring (Simpson)
"p < 0.05 → ishga tushiramiz" Amaliy chegara + CI

6. Keng tarqalgan xatolar va yechimlari

1. Kam hodisada z-test

python
z = (x / n - p0) / np.sqrt(p0 * (1 - p0) / n)   # n*p0 = 3        # ⚠️
stats.binomtest(k=x, n=n, p=p0)                                   # ✅

2. Wald CI

python
proportion_confint(1, 30, method="normal")                        # ⚠️
proportion_confint(1, 30, method="wilson")                        # ✅

3. Foiz punkt va foiz

python
print(f"konversiya {(pB - pA) * 100:.1f}% oshdi")                 # ⚠️
print(f"{(pB - pA) * 100:.1f} foiz punkt ({(pB - pA) / pA:+.1%} nisbiy)")  # ✅

4. Sessiya darajasida test

python
proportions_ztest([klik_b, klik_a], [korsatish_b, korsatish_a])   # ⚠️
# foydalanuvchi darajasiga agregatsiya qiling                      # ✅

5. Faqat p

python
print("p =", p)                                                   # ⚠️
print(f"farq {(pB-pA)*100:+.2f} pp, CI [{lo*100:+.2f}, {hi*100:+.2f}], p = {p:.4f}")  # ✅

6. Ko'p variant

python
# A/B/C/D — har juftlikni alohida solishtirish                    # ⚠️
# xi-kvadrat 11.5-bob yoki tuzatish 11.9-bob                           # ✅

7. Segmentsiz xulosa

python
# umumiy konversiya bo'yicha qaror                                # ⚠️
# asosiy segmentlar bo'yicha ham ko'ring (Simpson)                # ✅

7. Integratsiya — bu bilim qayerda kerak bo'ladi

  • 9.7-dars (o'tilgan): Binomial taqsimot
  • 11.2-dars (o'tilgan): Konversiyalar uchun namuna hajmi
  • 11.5-dars: Xi-kvadrat (2×2 jadval)
  • 11.8-dars: Bootstrap (nisbiy farq CI)
  • 11.10-dars: A/B test loyihasi

8. Eng yaxshi amaliyotlar

  1. Mustaqil birlik — foydalanuvchi.

  2. Kam hodisada aniq test.

  3. Ulush CI — Wilson.

  4. Farq CI ni hisobot qiling.

  5. Absolyut va nisbiy farqni ajrating.

  6. Segmentlarni tekshiring (Simpson).

  7. Ko'p variantda tuzatish.

  8. Amaliy chegarani oldindan kelishing.


9. Amaliy topshiriq

Vazifa 1: Bashorat qiling

python
1.  # 11% dan 12.5% — absolyut farq?
2.  # nisbiy farq?
3.  # z-test sharti?
4.  # kam hodisada qaysi test?
5.  # 2x2 jadval uchun aniq test?
6.  # ulush CI uchun tavsiya?
7.  # 0/200 uchun yuqori chegara?
8.  # p uchun SE qanday hisoblanadi?
9.  # farq CI uchun?
10. # mustaqil birlik?
11. # A/B/C/D — nima qilish kerak?
12. # umumiy natija va segmentlar qarama-qarshi?
Javoblar
  1. +1.5 foiz punkt
  2. +13.6%
  3. n×p >= 10 va n×(1-p) >= 10
  4. Binomial/Fisher (aniq)
  5. Fisher
  6. Wilson
  7. ~1.5% (3/200)
  8. Birlashtirilgan ulush bilan
  9. Alohida ulushlar bilan
  10. Foydalanuvchi
  11. Xi-kvadrat yoki tuzatish
  12. Simpson paradoksi

Vazifa 2: Xatolarni tuzating

python
1.  z = (3/50 - 0.10) / np.sqrt(0.10 * 0.90 / 50)

2.  proportion_confint(2, 40, method="normal")

3.  print(f"konversiya {(0.125 - 0.11) * 100:.1f}% oshdi")

4.  proportions_ztest([kliklar_b, kliklar_a], [korsatishlar_b, korsatishlar_a])

5.  print("p =", p)   # A/B hisobot
Javoblar
python
1.  stats.binomtest(k=3, n=50, p=0.10)

2.  proportion_confint(2, 40, method="wilson")

3.  print(f"{(0.125 - 0.11) * 100:.1f} foiz punkt ({(0.125 - 0.11) / 0.11:+.1%})")

4.  # foydalanuvchi darajasida: nunique(user_id) va konversiya qilganlar soni

5.  print(f"farq {farq:+.2f} pp CI [{lo:+.2f}, {hi:+.2f}], p = {p:.4f}")

Vazifa 3: A/B tahlil

Modellang:

  1. Ikki variant: 5 000 va 5 000 foydalanuvchi
  2. Konversiya, farq, CI, p
  3. Nisbiy farq
  4. Amaliy chegara bilan qaror

Vazifa 4: CI qamrovi

Modellang:

  1. p = 0.02, 0.2, 0.5; n = 20, 50, 200
  2. Wald, Wilson, aniq qamrovi
  3. Jadval
  4. Tavsiya

Vazifa 5: Segment tahlili

Modellang:

  1. Simpson paradoksli ma'lumot
  2. Umumiy va segment testlari
  3. Tarkib farqini ko'rsatish
  4. To'g'ri xulosa

Vazifa 6: Integratsiya

Modellang:

  1. Binomial (9.7)
  2. Namuna hajmi (11.2)
  3. Bootstrap CI (11.8 ga tayyorgarlik)
  4. Hisobot (8.9)

Vazifa 7: O'ylash

Ko'p kompaniyalar A/B test natijalarini "konversiya 13% oshdi" shaklida e'lon qiladi, lekin bazaviy konversiya va absolyut farqni ko'rsatmaydi. Nima uchun bu shaffoflik muammosi, va foizlar bilan manipulyatsiya qanday amalga oshiriladi?

Javob

Qisqa javob: nisbiy farq kichik bazada juda katta ko'rinadi (0.1% → 0.15% = "+50%"), shuning uchun kontekstsiz foiz ko'pincha ta'sirni bo'rttiradi. Absolyut farq, bazaviy qiymat va ishonch oralig'isiz raqam qaror qabul qilish uchun yaroqsiz.

1. Manipulyatsiya usullari

Usul Nima qilinadi
Faqat nisbiy farq Kichik bazada katta foiz
Bazani yashirish Qancha odamga ta'sir — noma'lum
CI ni ko'rsatmaslik Noaniqlik yashiriladi
Eng yaxshi segment "Mobil foydalanuvchilarda +30%"
Eng yaxshi metrika 10 metrikadan bittasi
Erta to'xtatish p < 0.05 bo'lgan kun

2. Halol hisobot tarkibi

  1. Bazaviy qiymat va namuna hajmi
  2. Absolyut farq (foiz punkt) va nisbiy farq
  3. Ishonch oralig'i
  4. Oldindan belgilangan asosiy metrika (va nechta metrika ko'rilgani)
  5. Test davomiyligi va to'xtash qoidasi

3. Biznes ta'siri

  • Absolyut farq × trafik = qo'shimcha mijozlar
  • Nisbiy farq — boshqa tajribalar bilan solishtirish uchun
  • CI — eng yomon/eng yaxshi ssenariy

4. Data Scientist qanday

  1. Shablon hisobot (barcha raqamlar bir joyda)
  2. Testlar registri va oldindan reja
  3. "Katta foiz" da avval bazani so'raydi
  4. Menejerga ikki raqamni birga tushuntiradi

5. Xulosa

  1. Kontekstsiz foiz — yarim haqiqat
  2. Baza, absolyut farq, CI — majburiy
  3. Manipulyatsiya ko'pincha tanlab hisobot orqali
  4. Shablon va registr — himoya

Nimani mustahkamlaydi: 2.6, 2.7-bo'limlar.


Xulosa

Bu darsda proporsiyalar testini o'rgandik.

Eng muhim uch fikr:

  1. Test tanlash. Bir ulush — aniq binomial test (yoki z-test, agar n p >= 10 va n(1-p) >= 10); ikki ulush — z-test (birlashtirilgan SE bilan), kichik namunada — Fisher aniq testi; 2×2 da xi-kvadrat 11.5-bob bilan ekvivalent.

  2. Ishonch oraliqlari. Ulush uchun Wilson (Wald emas — kichik n va ekstremal ulushda buziladi; 0 hodisa → yuqori chegara ~3/n). Farq uchun — alohida ulushli SE; nisbiy farq (lift) uchun log shkala yoki bootstrap 11.8-bob.

  3. Absolyut va nisbiy. "+1.5 foiz punkt" va "+13.6%" — bir xil natija; kichik bazada nisbiy farq bo'rttirilgan ko'rinadi. Hisobotda baza, absolyut farq, nisbiy farq, CI va p birga. Tuzoqlar: soxta mustaqillik (foydalanuvchi darajasi), ketma-ket tekshirish, ko'p variant, Simpson paradoksi.

Keyingi darsda xi-kvadrat testlarini o'rganamiz: kategoriyalar bog'liqligi (kontingentlik jadvali), moslik testi (kutilgan taqsimot), qoldiqlar tahlili va testning cheklovlari.

Ulashish:Telegram'da

Izohlar (0)

Izoh yozish uchun kiring.

  • Hozircha izoh yo'q. Birinchi bo'ling!
11.4-dars: Proporsiyalar (konversiyalar) testi — IlmHamroh