IlmHamroh
Data Science va sun'iy intellekt/EDA4/10-dars17 daqiqa
Mundarija (22)

8.4-dars: Ikki o'zgaruvchi tahlil (bivariate)

8-QISM — EDA (RAZVEDKA TAHLILI) · 4-dars


1. Kirish va motivatsiya

Univariate 8.3-bob har ustunni alohida ko'rdi — endi ustunlar orasidagi aloqa. Bu bivariate (ikki o'zgaruvchi) tahlil: "X va Y qanday bog'liq?". Bu EDA'ning eng qiziqarli qismi — naqshlar, aloqalar shu yerda topiladi. Uch turdagi juftlik bor: son-son (maydon vs narx — scatter, korrelyatsiya), kategoriya-son (shahar vs narx — guruh box/o'rtacha), kategoriya-kategoriya (shahar vs holat — crosstab). Har juftlik o'z usuli. Aloqa modelning asosi: qaysi xususiyat maqsadga (target) ta'sir qiladi. Bu darsda ikki o'zgaruvchi orasidagi aloqani turli usullar bilan o'rganish. Nega muhim? (1) Aloqa — ustunlar bog'liqmi (naqsh); (2) Uch tur — son-son/kat-son/kat-kat (usul); (3) Model asos — xususiyat → target. Bu dars bivariate tahlilni o'rgatadi — ustunlar qanday bog'liq.

Ikki o'zgaruvchi tahlil (bivariate) — ustunlar orasidagi aloqa: son-son (scatter — 5.4; korrelyatsiya — 4.9; maydon vs narx), kategoriya-son (guruh — box/o'rtacha; 5.6/3.8; shahar vs narx), kategoriya-kategoriya (crosstab — kesishma jadval; shahar vs holat), aloqa yo'nalishi (musbat/manfiy — 4.9), kuch (kuchli/kuchsiz). Foydalanish: ustunlar aloqasi, model uchun xususiyat. Bu 8.3 (univariate), 5.4 (scatter), 4.9 (korrelyatsiya), 3.8 (groupby) bilan bog'liq. Ikki o'zgaruvchi — aloqa (bivariate). Bivariate. Aloqa.

Real vaziyat. Data Scientist uy narxi EDA'sini davom ettiradi — aloqalar (bivariate): (1) son-son — "Maydon narxga bog'liqmi?" → scatter (musbat — maydon katta, narx yuqori; korrelyatsiya 0.7 — kuchli), (2) kategoriya-son — "Shaharlar narxi farqlimi?" → guruh box (Toshkent median 140, Samarqand 100 — farqli), (3) kategoriya-son — "Holat narxga?" → o'rtacha (yaxshi 150, o'rtacha 100 — ta'sir), (4) kategoriya-kategoriya — "Shahar va holat bog'liqmi?" → crosstab (Toshkentda yaxshi ko'p?). Data Scientist aloqalarni topdi (maydon narxga kuchli; shahar/holat muhim — model uchun xususiyat), keyingi (korrelyatsiya 8.5) uchun tayyorlandi. Ikki o'zgaruvchi — aloqa.

Bu darsda bivariate tahlilni o'rganamiz.

Bu darsda:

  • Son-son (scatter, korrelyatsiya)
  • Kategoriya-son (guruh box/o'rtacha)
  • Kategoriya-kategoriya (crosstab)
  • Aloqa yo'nalishi va kuchi
  • Aloqa vs sabab (4.10)
  • Bivariate amaliyoti
  • Bivariate tuzoqlari
  • Amaliy: bivariate tahlil

ℹ Misollar real pandas/numpy bilan (Python 3.14).


2. Nazariya — chuqur tushuntirish

2.1. Son-son (scatter, korrelyatsiya)

Ikki son ustun:

python
import pandas as pd

# SON-SON — aloqa:
df.plot.scatter("maydon", "narx")     # scatter (aloqa shakli — 5.4)
df["maydon"].corr(df["narx"])         # korrelyatsiya (-1..+1; 4.9)

# ko'p juftlik
df[["maydon", "narx", "yosh"]].corr() # korrelyatsiya matritsasi

Son-son (scatter, korrelyatsiya) — ikki son: son-son aloqa — scatter (5.4 — nuqta grafik; aloqa shakli ko'rinadi; musbat/manfiy/yo'q), korrelyatsiya (corr — -1..+1; 4.9; +1 kuchli musbat, -1 manfiy, 0 yo'q), matritsa (df.corr() — barcha juftlik; 8.5 heatmap). Sabab: ikki son — aloqa (bog'liqmi, qancha; maydon↑ → narx↑?); scatter (shakl — chiziqli? egri? — 5.4), korrelyatsiya (raqam — kuch/yo'nalish); ikkalasi (Anscombe — korrelyatsiya bir xil, shakl turli; scatter shart). Scatter (shakl), corr (kuch/yo'nalish), matritsa (barcha). Son-son — scatter/corr (aloqa). Son-son. Scatter.

2.2. Kategoriya-son (guruh box/o'rtacha)

Kategoriya va son:

python
import pandas as pd

# KATEGORIYA-SON — guruh:
df.groupby("shahar")["narx"].mean()      # guruh o'rtacha (3.8)
df.groupby("shahar")["narx"].describe()  # guruh statistika

# grafik: box (guruh taqsimoti — 5.6)
df.boxplot(column="narx", by="shahar")

Kategoriya-son (guruh box/o'rtacha) — guruh: kategoriya-son aloqa — guruh (groupby — 3.8; har guruh statistika): o'rtacha/median (groupby("shahar")["narx"].mean() — guruh markazi; farqlimi?), box (boxplot — 5.6; har guruh taqsimot — median/tarqoqlik/outlier; yonma-yon), violin (5.9 — shakl). Sabab: kategoriya-son — guruhlar farqlimi (shahar bo'yicha narx — Toshkent vs Samarqand); guruh (kategoriya bo'yicha son statistika); box (taqsimot — median emas faqat; tarqoqlik/outlier). groupby (guruh o'rtacha), box (guruh taqsimot), farq (guruhlar). Kategoriya-son — guruh box/o'rtacha (farq). Kategoriya-son. Guruh.

2.3. Kategoriya-kategoriya (crosstab)

Kategoriya-kategoriya (crosstab) — kesishma: ikki kcategory aloqa — pd.crosstab(df["shahar"], df["holat"]) (kesishma jadval — har kombinatsiya sanoq; shahar × holat), normalize= (foiz — qator/ustun/butun), heatmap (crosstab — rangli; 5.8), stacked bar (guruhli ustun). Sabab: ikki kategoriya — bog'liqmi (shahar va holat — Toshkentda yaxshi ko'pmi?); crosstab (kombinatsiya sanoq — bog'lanish); son yo'q — sanoq (crosstab). crosstab (kesishma sanoq), normalize (foiz), heatmap (rangli). Kategoriya-kategoriya — crosstab (kesishma). Crosstab. Kesishma.

2.4. Aloqa yo'nalishi va kuchi

Aloqa yo'nalishi va kuchi — talqin: yo'nalish (musbat — X↑ Y↑ (maydon↑ narx↑); manfiy — X↑ Y↓ (yosh↑ narx↓); yo'q — aloqasiz), kuch (korrelyatsiya — |r|: 0.7-1 kuchli, 0.3-0.7 o'rtacha, 0-0.3 kuchsiz; 4.9), shakl (chiziqli — corr; nochiziqli — corr past, lekin aloqa bor; scatter ko'r — 4.9). Sabab: aloqa talqin (yo'nalish — qanday; kuch — qancha; shakl — chiziqlimi); model uchun (kuchli aloqa — muhim xususiyat; feature 19-qism). Yo'nalish (musbat/manfiy), kuch (|r|), shakl (chiziqli — corr; scatter). Aloqa yo'nalish/kuch — talqin (musbat/manfiy; |r|). Yo'nalish. Kuch.

2.5. Aloqa vs sabab (4.10)

Aloqa vs sabab 4.10-bob — muhim ogohlantirish: bivariate — aloqa (korrelyatsiya); sabab EMAS (4.10; korrelyatsiya ≠ sababiyat): kuchli aloqa (maydon-narx 0.7) — sabab bo'lishi mumkin, lekin isbot emas (yashirin o'zgaruvchi — joylashuv ikkalasiga; teskari — narx→maydon?; tasodif). Sabab: EDA aloqa topadi (sabab emas); sababni eksperiment (nazorat tajriba — 4.10) yoki domen tasdiqlaydi; "aloqa — gipoteza, sabab — isbot". Aloqa (korrelyatsiya — EDA), sabab EMAS 4.10-bob, eksperiment (sabab isbot). Aloqa vs sabab — aloqa (sabab emas; 4.10). Aloqa. Sabab.

2.6. Bivariate amaliyoti

Bivariate amaliyoti: juftlik aniqla (qaysi ustunlar — maqsad (target) bilan; muhim juftlik); tur (son-son / kat-son / kat-kat — usul); son-son (scatter shakl 5.4; corr kuch 4.9); kat-son (groupby o'rtacha 3.8; box taqsimot 5.6); kat-kat (crosstab kesishma); talqin (yo'nalish/kuch/shakl); aloqa ≠ sabab 4.10-bob; model (kuchli aloqa — xususiyat; 19-qism). Tuzoqlar: sababiyat (aloqa — 4.10), scatter'siz corr (Anscombe — shakl), nochiziqli corr (past, lekin aloqa), Simpson (guruh yashirin — 8.7), kat-son mean (box afzal — taqsimot). Amaliyot — juftlik, tur, usul, talqin. Bivariate. Aloqa.

2.7. Bivariate tuzoqlari

Bivariate asosiy tuzoqlari: sababiyat (bivariate — aloqa (korrelyatsiya); sabab EMAS (4.10; kuchli korrelyatsiya ≠ sabab; yashirin o'zgaruvchi, teskari, tasodif)); scatter'siz corr (faqat korrelyatsiya raqami — shakl yo'q (Anscombe — corr bir xil, shakl turli; scatter shart — 5.4)); nochiziqli aloqa (corr (Pearson) — chiziqli; nochiziqli (U shakl — yosh-xarid) — corr past (0), lekin aloqa bor; scatter ko'r — 4.9); Simpson paradoksi (umumiy aloqa — guruh ichida teskari (yashirin guruh; masalan umumiy musbat, har guruhda manfiy); guruh bo'yicha tekshir — 8.7); kat-son faqat mean (guruh o'rtacha — taqsimot yo'q (median/tarqoqlik/outlier; bimodal — o'rtacha ma'nosiz); box afzal); outlier ta'siri (scatter/corr — outlier buzadi (bir nuqta corr tortadi; 6.3); tekshir); ekologik xato (guruh aloqa ≠ shaxs aloqa; guruh daraja); ko'p juftlik (barcha juftlik — ko'p (n ustun → n^2 juftlik); muhim — target bilan); crosstab kam sanoq (kombinatsiya kam (1-2) — ishonchsiz; ko'p ma'lumot); teng masshtab emas (ikki son turli masshtab — scatter OK, lekin talqin ehtiyot). Sabab: bivariate aloqa/shakl nozik (sababiyat, nochiziqli, Simpson — noto'g'ri xulosa). Yechim: aloqa≠sabab, scatter, nochiziqli ko'r, guruh tekshir (Simpson), box. Tuzoqlar — sababiyat, scatter'siz, nochiziqli, Simpson.

2.8. Ikki o'zgaruvchi tahlil — ustunlar qanday bog'liq

Bivariate asosiy g'oyasi — ustunlar qanday bog'liq: univariate (8.3 — har ustun alohida) dan keyin — ustunlar orasidagi aloqa (bivariate — "X va Y bog'liqmi?"); EDA'ning eng qiziqarli qismi (naqsh, aloqa). Uch tur (juftlik): son-son (scatter shakl 5.4; corr kuch/yo'nalish 4.9; matritsa 8.5), kategoriya-son (groupby o'rtacha 3.8; box guruh taqsimot 5.6; farq), kategoriya-kategoriya (crosstab kesishma sanoq; heatmap). Aloqa talqin (yo'nalish musbat/manfiy; kuch |r| — 0.7 kuchli; shakl chiziqli/nochiziqli), aloqa ≠ sabab (4.10 — korrelyatsiya sabab emas; yashirin o'zgaruvchi, teskari; eksperiment). Foydalanish: ustunlar aloqasi (naqsh — bog'liqmi), model uchun xususiyat (kuchli aloqa target bilan — muhim feature; 19-qism). Tuzoqlar: sababiyat (aloqa — 4.10), scatter'siz corr (Anscombe), nochiziqli corr (past — aloqa bor), Simpson (guruh yashirin — teskari; 8.7), kat-son mean (box afzal), outlier (buzadi — 6.3). Bu 8.3 (univariate), 5.4 (scatter), 4.9 (korrelyatsiya), 3.8 (groupby), 4.10 (sabab), 8.5 (korrelyatsiya matritsa) bilan. Ikki o'zgaruvchi — ustunlar qanday bog'liq (bivariate; uch tur; aloqa≠sabab). Bivariate. Aloqa. Bog'liq.


3. Tez ma'lumotnoma

python
import pandas as pd

# SON-SON (aloqa):
df.plot.scatter("maydon", "narx")     # scatter (shakl — 5.4)
df["maydon"].corr(df["narx"])         # korrelyatsiya (-1..+1; 4.9)
df[["a", "b", "c"]].corr()            # matritsa (8.5)

# KATEGORIYA-SON (guruh):
df.groupby("shahar")["narx"].mean()   # guruh o'rtacha (3.8)
df.boxplot(column="narx", by="shahar")# box (guruh taqsimoti — 5.6)

# KATEGORIYA-KATEGORIYA (crosstab):
pd.crosstab(df["shahar"], df["holat"])                # kesishma sanoq
pd.crosstab(df["shahar"], df["holat"], normalize="index")  # foiz

# ALOQA TALQIN: yo'nalish (musbat/manfiy) · kuch (|r|: 0.7 kuchli) · shakl (chiziqli?)

# ALOQA ≠ SABAB 4.10-bob: korrelyatsiya sabab emas (yashirin o'zgaruvchi)
QOIDA: scatter (Anscombe) · aloqa≠sabab · nochiziqli ko'r · Simpson (guruh) · box

Bivariate xulosasi

Ikki o'zgaruvchi tahlil — ustunlar qanday bog'liq (bivariate)
Son-son — scatter (shakl), korrelyatsiya (kuch/yo'nalish)
Kategoriya-son — groupby (o'rtacha), box (guruh taqsimoti)
Kategoriya-kategoriya — crosstab (kesishma sanoq)
Aloqa ≠ sabab — korrelyatsiya sabab emas (4.10; eksperiment)

4. Batafsil misollar

Misollar real pandas/numpy bilan (Python 3.14).

Misol 1 — Son-son (korrelyatsiya)

python
"""Son-son aloqa (real pandas/numpy)."""

import numpy as np
import pandas as pd


def main() -> None:
    np.random.seed(0)
    maydon = np.random.normal(80, 20, 200)
    narx = maydon * 1.5 + np.random.normal(0, 15, 200)   # musbat aloqa
    df = pd.DataFrame({"maydon": maydon, "narx": narx})

    print("=== 1. Korrelyatsiya (kuch/yo'nalish) ===")
    r = df["maydon"].corr(df["narx"]).round(2)
    print(f"  r: {r} (musbat, kuchli)")

    print("\n=== 2. Talqin ===")
    print("  musbat: maydon katta → narx yuqori")
    print(f"  kuch: |{r}| > 0.7 — kuchli")

    print("\n=== 3. Manfiy aloqa (yosh) ===")
    yosh = np.random.normal(15, 5, 200)
    narx2 = 200 - yosh * 3 + np.random.normal(0, 10, 200)
    r2 = pd.Series(yosh).corr(pd.Series(narx2)).round(2)
    print(f"  yosh-narx r: {r2} (manfiy)")

    print("\n=== 4. Scatter kerak (Anscombe) ===")
    print("  corr + scatter (shakl — chiziqlimi?)")
    print("  ⭐ Son-son — korrelyatsiya (kuch/yo'nalish)")


if __name__ == "__main__":
    main()

Natijaning muhim qismi:

text
=== 1. Korrelyatsiya (kuch/yo'nalish) ===
  r: 0.91 (musbat, kuchli)

=== 2. Talqin ===
  musbat: maydon katta → narx yuqori
  kuch: |0.91| > 0.7 — kuchli

=== 3. Manfiy aloqa (yosh) ===
  yosh-narx r: -0.85 (manfiy)

=== 4. Scatter kerak (Anscombe) ===
  corr + scatter (shakl — chiziqlimi?)
  ⭐ Son-son — korrelyatsiya (kuch/yo'nalish)

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

Misol 2 — Kategoriya-son (guruh)

python
"""Kategoriya-son aloqa (real pandas/numpy)."""

import numpy as np
import pandas as pd


def main() -> None:
    np.random.seed(0)
    df = pd.DataFrame({
        "shahar": np.repeat(["Toshkent", "Samarqand", "Buxoro"], 100),
        "narx": np.concatenate([
            np.random.normal(140, 20, 100),
            np.random.normal(100, 15, 100),
            np.random.normal(90, 12, 100),
        ]),
    })

    print("=== 1. Guruh o'rtacha (groupby) ===")
    ort = df.groupby("shahar")["narx"].mean().round(1)
    print(ort.to_string())

    print("\n=== 2. Guruh median (box uchun) ===")
    med = df.groupby("shahar")["narx"].median().round(1)
    print(f"  {med.to_dict()}")

    print("\n=== 3. Farqlimi? ===")
    print(f"  Toshkent ({ort['Toshkent']}) > Buxoro ({ort['Buxoro']})")
    print("  → shaharlar narxi farqli (aloqa)")

    print("\n=== 4. Box afzal (taqsimot) ===")
    print("  o'rtacha emas faqat — box (median/tarqoqlik/outlier)")
    print("  ⭐ Kategoriya-son — guruh (farq)")


if __name__ == "__main__":
    main()

Natijaning muhim qismi:

text
=== 1. Guruh o'rtacha (groupby) ===
shahar
Buxoro        89.3
Samarqand    101.2
Toshkent     141.2

=== 2. Guruh median (box uchun) ===
  {'Buxoro': 89.1, 'Samarqand': 100.4, 'Toshkent': 141.9}

=== 3. Farqlimi? ===
  Toshkent 141.2-bob > Buxoro 89.3-bob
  → shaharlar narxi farqli (aloqa)

=== 4. Box afzal (taqsimot) ===
  o'rtacha emas faqat — box (median/tarqoqlik/outlier)
  ⭐ Kategoriya-son — guruh (farq)

Nima ko'rsatdi: 2.2-bo'lim.

Misol 3 — Kategoriya-kategoriya (crosstab)

python
"""Kategoriya-kategoriya (real pandas/numpy)."""

import numpy as np
import pandas as pd


def main() -> None:
    np.random.seed(0)
    df = pd.DataFrame({
        "shahar": np.random.choice(["Toshkent", "Samarqand"], 200),
        "holat": np.random.choice(["yaxshi", "o'rta"], 200),
    })

    print("=== 1. crosstab (kesishma sanoq) ===")
    ct = pd.crosstab(df["shahar"], df["holat"])
    print(ct.to_string())

    print("\n=== 2. Foiz (normalize) ===")
    ct_foiz = pd.crosstab(df["shahar"], df["holat"], normalize="index").round(2)
    print(ct_foiz.to_string())

    print("\n=== 3. Talqin ===")
    print("  har shahar bo'yicha holat foizi")

    print("\n=== 4. Bog'liqmi? ===")
    print("  foizlar o'xshash → bog'liq emas (mustaqil)")
    print("  ⭐ Kategoriya-kategoriya — crosstab")


if __name__ == "__main__":
    main()

Natijaning muhim qismi:

text
=== 1. crosstab (kesishma sanoq) ===
holat      o'rta  yaxshi
shahar
Samarqand     56      45
Toshkent      55      44

=== 2. Foiz (normalize) ===
holat      o'rta  yaxshi
shahar
Samarqand   0.55    0.45
Toshkent    0.56    0.44

=== 3. Talqin ===
  har shahar bo'yicha holat foizi

=== 4. Bog'liqmi? ===
  foizlar o'xshash → bog'liq emas (mustaqil)
  ⭐ Kategoriya-kategoriya — crosstab

Nima ko'rsatdi: 2.3-bo'lim.

Misol 4 — Simpson paradoksi (guruh yashirin)

python
"""Simpson paradoksi (real pandas/numpy)."""

import numpy as np
import pandas as pd


def main() -> None:
    # umumiy musbat, lekin har guruhda manfiy
    a = pd.DataFrame({"x": [1, 2, 3], "y": [3, 2, 1], "guruh": "A"})
    b = pd.DataFrame({"x": [4, 5, 6], "y": [6, 5, 4], "guruh": "B"})
    df = pd.concat([a, b], ignore_index=True)

    print("=== 1. Umumiy korrelyatsiya ===")
    umumiy = df["x"].corr(df["y"]).round(2)
    print(f"  umumiy r: {umumiy} (musbat)")

    print("\n=== 2. Guruh ichida ===")
    for g in ["A", "B"]:
        gr = df[df["guruh"] == g]
        r = gr["x"].corr(gr["y"]).round(2)
        print(f"  guruh {g} r: {r} (manfiy!)")

    print("\n=== 3. Simpson paradoksi ===")
    print("  umumiy musbat, lekin har guruhda MANFIY")

    print("\n=== 4. Guruh bo'yicha tekshir ===")
    print("  yashirin guruh — aloqa teskari 8.7-bob")
    print("  ⭐ Simpson — guruh bo'yicha tekshir")


if __name__ == "__main__":
    main()

Natijaning muhim qismi:

text
=== 1. Umumiy korrelyatsiya ===
  umumiy r: 0.54 (musbat)

=== 2. Guruh ichida ===
  guruh A r: -1.0 (manfiy!)
  guruh B r: -1.0 (manfiy!)

=== 3. Simpson paradoksi ===
  umumiy musbat, lekin har guruhda MANFIY

=== 4. Guruh bo'yicha tekshir ===
  yashirin guruh — aloqa teskari 8.7-bob
  ⭐ Simpson — guruh bo'yicha tekshir

Nima ko'rsatdi: 2.7-bo'lim.


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

Noto'g'ri fikr To'g'risi
"korrelyatsiya = sabab" Aloqa (4.10)
"corr yetarli" Scatter (Anscombe)
"corr past = aloqa yo'q" Nochiziqli (scatter)
"umumiy aloqa = guruh" Simpson (guruh tekshir)
"kat-son o'rtacha" Box (taqsimot)
"outlier befarq" Scatter/corr buzadi
"har juftlik" Target bilan (muhim)
"univariate yetarli" Bivariate (aloqa)

6. Keng tarqalgan xatolar va yechimlari

1. Sababiyat

python
# corr 0.7 → sabab (xato)                                         # ⚠️
# aloqa (sabab emas — 4.10; eksperiment)                          # ✅

2. Scatter'siz corr

python
df["a"].corr(df["b"])   # shakl yo'q (Anscombe)                   # ⚠️
df.plot.scatter("a", "b")   # shakl (chiziqli?)                  # ✅

3. Nochiziqli aloqa

python
# corr 0.1 → aloqa yo'q (U shakl — aloqa bor)                     # ⚠️
df.plot.scatter("x", "y")   # nochiziqli ko'r                    # ✅

4. Simpson paradoksi

python
df["x"].corr(df["y"])   # umumiy (guruh yashirin)                 # ⚠️
df.groupby("guruh").apply(lambda g: g["x"].corr(g["y"]))         # ✅

5. Kat-son faqat mean

python
df.groupby("shahar")["narx"].mean()   # taqsimot yo'q            # ⚠️
df.boxplot(column="narx", by="shahar")   # box (taqsimot)        # ✅

6. Outlier ta'siri

python
df["a"].corr(df["b"])   # outlier corr'ni tortadi                # ⚠️
# outlier tekshir (scatter; 6.3)                                 # ✅

7. Ko'p juftlik

python
# barcha n^2 juftlik (ko'p, chalkash)                             # ⚠️
# target bilan (muhim juftlik)                                   # ✅

7. Integratsiya — bu bilim qayerda kerak bo'ladi

  • 8.3-dars (o'tilgan): Univariate (har ustun)
  • 5.4-dars (o'tilgan): Scatter (aloqa)
  • 4.9-dars (o'tilgan): Korrelyatsiya
  • 4.10-dars (o'tilgan): Korrelyatsiya ≠ sabab
  • 8.5-dars: Korrelyatsiya (matritsa, heatmap)

8. Eng yaxshi amaliyotlar

  1. Son-son — scatter + corr.

  2. Kat-son — box (o'rtacha emas).

  3. Kat-kat — crosstab.

  4. Aloqa ≠ sabab — 4.10.

  5. Scatter — Anscombe (shakl).

  6. Nochiziqli — scatter ko'r.

  7. Simpson — guruh tekshir.

  8. Target bilan — muhim juftlik.


9. Amaliy topshiriq

Vazifa 1: Bashorat qiling

python
1.  # bivariate nima?
2.  # uch tur?
3.  # son-son usuli?
4.  # kategoriya-son?
5.  # kategoriya-kategoriya?
6.  # crosstab nima?
7.  # aloqa yo'nalishi?
8.  # aloqa kuchi?
9.  # aloqa = sabab?
10. # Simpson paradoksi?
11. # nochiziqli corr?
12. # nega bivariate?
Javoblar
  1. Ikki ustun aloqasi
  2. Son-son/kat-son/kat-kat
  3. Scatter, korrelyatsiya
  4. Groupby, box
  5. Crosstab
  6. Kesishma sanoq jadval
  7. Musbat/manfiy
  8. |r| (0.7 kuchli)
  9. Yo'q (aloqa — 4.10)
  10. Umumiy vs guruh (teskari)
  11. Past, lekin aloqa (scatter)
  12. Ustunlar aloqasi (model asos)

Vazifa 2: Xatolarni tuzating

python
1.  # corr 0.7 → sabab

2.  df["a"].corr(df["b"])   # shakl

3.  # corr 0.1 → aloqa yo'q

4.  df["x"].corr(df["y"])   # guruh yashirin

5.  df.groupby("shahar")["narx"].mean()
Javoblar
python
1.  aloqa (4.10; eksperiment)

2.  scatter (Anscombe)

3.  scatter (nochiziqli)

4.  groupby (Simpson)

5.  boxplot (taqsimot)

Vazifa 3: Son-son

Modellang:

  1. Scatter
  2. Korrelyatsiya
  3. Kuch/yo'nalish
  4. Shakl

Vazifa 4: Kategoriya-son

Modellang:

  1. Groupby
  2. O'rtacha
  3. Box
  4. Farq

Vazifa 5: Crosstab va Simpson

Modellang:

  1. Crosstab
  2. Kesishma
  3. Simpson
  4. Guruh tekshir

Vazifa 6: Integratsiya

Modellang:

  1. Univariate (8.3)
  2. Scatter (5.4)
  3. Sabab (4.10)
  4. Korrelyatsiya (8.5)

Vazifa 7: O'ylash

Simpson paradoksi — umumiy ma'lumotda aloqa musbat, lekin har guruh ichida manfiy (yashirin guruh o'zgaruvchisi tufayli). Bu ko'rsatadiki, bivariate aloqa (ikki ustun) yetarli emas — uchinchi o'zgaruvchi (guruh) hammasini o'zgartirishi mumkin. Nima uchun "aloqani kontekstsiz talqin qilish xavfli", va nima uchun bivariate tahlil ko'p o'zgaruvchi (multivariate) fikrlashga olib keladi?

Javob

Qisqa javob: Simpson paradoksi — umumiy musbat, har guruhda manfiy (yashirin guruh); bivariate (ikki ustun) yetmaydi — uchinchi o'zgaruvchi hammasini o'zgartiradi; "aloqani kontekstsiz talqin xavfli"; bivariate multivariate fikrlashga olib keladi, chunki: (1) yashirin o'zgaruvchi — ikki ustun aloqasi — uchinchi o'zgaruvchiga bog'liq bo'lishi mumkin (guruh, confounder; Simpson — guruh teskari; korrelyatsiya-sabab 4.10 yashirin o'zgaruvchi); (2) kontekst — aloqa kontekstda (guruh, sharoit; kontekstsiz — aldamchi; masalan umumiy musbat, lekin har guruhda manfiy); (3) haqiqat teskari — Simpson — xulosa teskari bo'lishi mumkin (umumiy "yaxshi", har guruhda "yomon"; qaror noto'g'ri); (4) multivariate — real dunyo ko'p o'zgaruvchi (narx — maydon + joylashuv + holat + ...; bivariate — soddalashtirish; ko'p o'zgaruvchi birga). "Nega kontekstsiz xavfli": (a) Simpson (guruh — aloqa teskari; kontekstsiz noto'g'ri); (b) confounder (yashirin o'zgaruvchi — soxta aloqa; 4.10); (c) qaror (aloqaga asoslangan qaror — kontekstsiz noto'g'ri); (d) soddalashtirish (ikki ustun — real ko'p; yo'qotish). "Nega multivariate fikrlash": (1) ko'p o'zgaruvchi (real — ko'p omil birga; bivariate — bitta-bitta; multivariate — birga); (2) nazorat (yashirin o'zgaruvchi — nazorat (guruh bo'yicha; regressiya ko'p o'zgaruvchi 15-qism)); (3) haqiqat (multivariate — to'liq rasm; bivariate — qism); (4) model (ML — ko'p xususiyat birga; multivariate). "Data Scientist qanday": (1) bivariate (ikki ustun — boshlanish); (2) guruh tekshir (Simpson — guruh bo'yicha; kontekst); (3) yashirin o'zgaruvchi (confounder — domen; nazorat); (4) multivariate (ko'p o'zgaruvchi birga — regressiya, model); (5) ehtiyot (bivariate aloqa — kontekstsiz ishonma). "Nega muhim": yashirin o'zgaruvchi (Simpson — teskari); kontekst (aloqa — sharoitda); multivariate (real — ko'p; birga). Saboqlar: bivariate yetmaydi (yashirin o'zgaruvchi — Simpson); kontekst (aloqa — guruh/sharoit); multivariate (ko'p o'zgaruvchi birga — real); ehtiyot (kontekstsiz ishonma). To'g'ri: bivariate (boshlanish) — kontekst (guruh, yashirin o'zgaruvchi); multivariate (ko'p birga); Simpson (guruh tekshir). Muvozanat: bivariate (sodda — ikki ustun) + multivariate (real — ko'p o'zgaruvchi; kontekst). Bu Data Science tahlil asosiy (bivariate — yashirin o'zgaruvchi; Simpson; multivariate; kontekst). Bivariate — ustunlar aloqasi (kontekst muhim; multivariate fikrlash).

1. Nega kontekstsiz xavfli

  • Yashirin o'zgaruvchi (Simpson — teskari)
  • Confounder (soxta aloqa — 4.10)
  • Qaror (kontekstsiz — noto'g'ri)
  • Soddalashtirish (ikki ustun — real ko'p)

2. Nega multivariate fikrlash

  • Ko'p o'zgaruvchi (real — omil birga)
  • Nazorat (yashirin — guruh/regressiya)
  • Haqiqat (multivariate — to'liq rasm)
  • Model (ML — ko'p xususiyat)

3. Bivariate vs multivariate

Bivariate (ikki) Multivariate (ko'p)
Sodda (juftlik) Real (ko'p birga)
Simpson xavfi Nazorat (guruh)
Qism To'liq rasm

4. Data Scientist qanday

  1. Bivariate (ikki ustun — boshlanish)
  2. Guruh tekshir (Simpson — kontekst)
  3. Yashirin o'zgaruvchi (confounder — domen)
  4. Multivariate (ko'p birga — model)

5. Xulosa

  1. Simpson (umumiy musbat, guruhda manfiy — yashirin guruh)
  2. Bivariate yetmaydi (uchinchi o'zgaruvchi — kontekst)
  3. Aloqa kontekstsiz xavfli (guruh/sharoit — ehtiyot)
  4. Multivariate fikrlash (ko'p o'zgaruvchi birga — real)

Nimani mustahkamlaydi: 2.5, 2.7-bo'limlar.


Xulosa

Bu darsda bivariate tahlilni o'rgandik.

Eng muhim uch fikr:

  1. Uch tur. Son-son — scatter (shakl — 5.4) + corr (kuch/yo'nalish — -1..+1; 4.9; matritsa 8.5). Kategoriya-son — groupby (o'rtacha/median — 3.8) + box (guruh taqsimot — median/tarqoqlik/outlier; 5.6; o'rtacha emas faqat). Kategoriya-kategoriya — crosstab (kesishma sanoq; normalize foiz; heatmap).

  2. Talqin va sabab. Aloqa talqin — yo'nalish (musbat X↑Y↑; manfiy X↑Y↓; yo'q), kuch (|r|: 0.7 kuchli, 0.3-0.7 o'rtacha; 4.9), shakl (chiziqli — corr; nochiziqli — corr past, aloqa bor; scatter). Aloqa ≠ sabab (4.10 — korrelyatsiya sabab emas; yashirin o'zgaruvchi, teskari; eksperiment isbotlaydi).

  3. Ustunlar bog'liq. Bivariate — ustunlar qanday bog'liq (naqsh — model uchun xususiyat; feature 19-qism). Simpson paradoksi — umumiy aloqa guruh ichida teskari (yashirin guruh; guruh bo'yicha tekshir — 8.7); aloqa kontekstsiz xavfli (uchinchi o'zgaruvchi — multivariate fikrlash). Tuzoqlar: sababiyat (aloqa — 4.10), scatter'siz corr (Anscombe), nochiziqli corr (past — aloqa bor), Simpson (guruh tekshir), kat-son mean (box afzal), outlier (buzadi — 6.3), ko'p juftlik (target bilan).

Keyingi darsda korrelyatsiya tahlilni chuqurroq o'rganamiz: korrelyatsiya matritsasi (barcha juftlik; 4.9), heatmap 5.8-bob, qaysi xususiyatlar target bilan bog'liq (feature tanlash), va multikollinearlik (xususiyatlar o'zaro bog'liq — muammo).

Ulashish:Telegram'da

Izohlar (0)

Izoh yozish uchun kiring.

  • Hozircha izoh yo'q. Birinchi bo'ling!
8.4-dars: Ikki o'zgaruvchi tahlil (bivariate) — IlmHamroh