Menu
CoddyTech

ערכי P

חלק מהיחידה סטטיסטיקה ללמידת מכונה במסלול ה-Machine Learning של Coddy. שיעור 44 מתוך 64.

ערך ה־p-value הופך את הערבובים למספר אחד: שיעור הפערים המדומים שגדולים מהפער האמיתי או שווים לו, בשני הכיוונים.

1,000 ההפרשים המעורבבים של מחקר הגופנים כהיסטוגרמה. העמודות שבנקודת 6.6 שניות ומעבר לה בשני הצדדים מסומנות באדום, 39 ערבובים, ותווית מציגה p = 39 / 1000 = 0.039

בקוד, עבור מחקר הגופנים:

real = sans.mean() - serif.mean()
rng = np.random.default_rng(4)
diffs = shuffled_diffs(serif, sans, 1000, rng)  # הלולאה מהשיעור הקודם
p_value = (np.abs(diffs) >= np.abs(real)).mean()
print(p_value)

זה מדפיס 0.039. np.abs מחשבת פער של ‎-7‎ כגדול כמו ‎7‎: השאלה היא אם הגופנים שונים בכלל.

מתחת לרמת המובהקות, שהיא לרוב 0.05, המקריות אינה הסבר משכנע לרווח של גופן או של מודל. זו אינה הוכחה: ב-4 מתוך 100 ערבובים זה עדיין קרה.

challenge icon

אתגר

בינוני

חווה משקה תותים בבקרים או בערבים. קוד הפתיחה מפצל את strawberries.csv ל-morning ול-evening, מציג את columns, קורא את level ומגדיר את shuffled_diffs.

  1. עבור כל עמודה, חשבו את הפער בפועל (ממוצע הערב פחות ממוצע הבוקר), את הפערים לאחר הערבוב (הבוקר תחילה) ואת ערך ה-p.
  2. הדפיסו שורה עבור כל עמודה כמו בדוגמה שלהלן (פער עם 2 ספרות אחרי הנקודה העשרונית, p עם 3): differs כאשר p קטן מ-level.
  3. ספרו את העמודות שבהן יש הבדל.

חווה אחרת, עם level של 0.05:

berries: difference -5.4, p = 0.009, differs
weight_g: difference 0.2, p = 1.0, could be chance
sweetness_brix: difference 0.46, p = 0.022, differs
leaf_spots: difference 0.6, p = 0.397, could be chance
Columns that differ: 2 of 4

נסו בעצמכם

import numpy as np
import pandas as pd


# מחזירה את ההפרשים המעורבבים של מבחן פרמוטציה (הלולאה משיעור 43): הממוצע המדומה של b פחות הממוצע המדומה של a
def shuffled_diffs(a, b, shuffles, rng):
    pooled = np.concatenate([a, b])
    diffs = []
    for i in range(shuffles):
        shuffled = rng.permutation(pooled)
        diffs.append(shuffled[len(a):].mean() - shuffled[:len(a)].mean())
    return np.array(diffs)


beds = pd.read_csv("strawberries.csv")
morning = beds[beds["watering"] == "morning"]
evening = beds[beds["watering"] == "evening"]
columns = ["berries", "weight_g", "sweetness_brix", "leaf_spots"]
level = float(input())
# אין לשנות את השורות שלהלן
rng = np.random.default_rng(21)
shuffles = 1000

# כתבו את הקוד שלכם למטה
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה סטטיסטיקה ללמידת מכונה

תרגלו בעצמכם: קומפיילר Python אונליין