Menu
CoddyTech

מבחן t

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

לפני המחשבים, לסטטיסטיקה היה קיצור דרך: מבחן t. נוסחה הופכת את הממוצעים, הפיזורים וגדלי הקבוצות לערך p בבת אחת:

from scipy import stats

result = stats.ttest_ind(sans, serif)
print(np.round(result.pvalue, 3))
print(np.round(result.statistic, 2))

עבור מחקר הגופנים, הפקודה הזו מדפיסה 0.031 ו־-2.61. 1000 הערבובים נתנו 0.039: קרוב, כרגיל.

1000 ההפרשים המעורבבים של מחקר הגופנים מוצגים כהיסטוגרמה חיוורת, ומעליה עקומת הפעמון של מבחן t, עם קו אדום מקווקו בפער האמיתי של -6.6. במקרא מופיעים p = 0.039 עבור הערבובים ו־0.031 עבור הנוסחה

ערך ה-t הוא הפער בשגיאות התקן; הסימן שלו רק מציין איזו קבוצה הופיעה ראשונה. הנוסחה מניחה שהנתונים מתפלגים בצורת פעמון, ולכן כשיש קבוצות קטנות עם התפלגות מוטה, הסתמכו על הערבובים.

היא גם בודקת אם מודל אחד באמת עולה על מודל אחר.

challenge icon

אתגר

בינוני

יצרן צבע מדד את זמן הייבוש של שלושה גימורים. קוד הפתיחה שומר את מספר הדקות של כל גימור ב־times, מגדיר שלושה זוגות ב־pairs, מגדיר את permutation_p(a, b) וקורא את level.

  1. הדפיסו את ערך ה־p של מבחן t עבור מט מול סאטן לצד ערך ה־p של הערבובים.
  2. בדקו כל זוג, כשהגימור הראשון מופיע ראשון, והדפיסו את הזוג עם ערך ה־p הקטן ביותר.
  3. ספרו את הזוגות שעבורם ערך ה־p קטן מ־level.

עגלו את ערכי ה־p ל־3 ספרות אחרי הנקודה העשרונית. יצרן אחר, רמה 0.05:

matte vs satin: t-test 0.012, simulation 0.023
Clearest difference: satin vs gloss (p = 0.0)
Pairs that differ: 3 of 3

נסו בעצמכם

import numpy as np
import pandas as pd
from scipy import stats


# מבחן התמורות משני השיעורים האחרונים: מחזיר את ערך ה-p שלו עבור a בהשוואה ל-b
def permutation_p(a, b, shuffles=1000, seed=0):
    rng = np.random.default_rng(seed)
    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())
    real = b.mean() - a.mean()
    return (np.abs(np.array(diffs)) >= np.abs(real)).mean()


paint = pd.read_csv("paint.csv")
times = {
    "matte": paint[paint["finish"] == "matte"]["minutes"],
    "satin": paint[paint["finish"] == "satin"]["minutes"],
    "gloss": paint[paint["finish"] == "gloss"]["minutes"],
}
pairs = [("matte", "satin"), ("matte", "gloss"), ("satin", "gloss")]
level = float(input())

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

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

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

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