על מה מבחן t שואל
כל מבחן t עונה על אותה שאלה בסיסית: האם ההבדל הזה בממוצעים אמיתי, או שהוא יכול להיות סתם רעש? מדגמים מתנדנדים: מדדו פעמיים את זמני התגובה של עשרה אנשים ותקבלו שני ממוצעים שונים, למרות ששום דבר לא השתנה. מבחן t משווה את ההבדל שצפיתם בו לתנודה שהייתם מצפים לה ממקריות, ומדווח עד כמה הנתונים שלכם היו מפתיעים אם ההבדל האמיתי היה אפס.
שלושה סוגים, פונקציה אחת:
- מדגם אחד: האם הממוצע של הקבוצה הזאת שונה מערך קבוע?
- שני מדגמים: האם לשתי הקבוצות הבלתי תלויות האלה יש ממוצעים שונים?
- מזווג: האם אותם נבדקים השתנו בין שתי מדידות?
מדגם אחד: t.test(x, mu = ...)
נניח שתהליך אמור להימשך בממוצע 5.0 שניות, ואתם מתזמנים עשר הרצות:
ממוצע המדגם הוא 5.61, אבל האם 0.61 מעל היעד משמעותי עם עשר הרצות בלבד, או בתוך התנודה הרגילה? זה בדיוק מה שהפלט עונה עליו.
קריאת הפלט שורה אחר שורה
זה הסעיף שמצדיק את קיום העמוד: לפלט של כל גרסה של t.test() יש אותה צורה, אז למדו לקרוא אותו פעם אחת. הריצו את הבלוק למעלה והתאימו כל שורה:
- t = 4.26: סטטיסטי המבחן: ההבדל שנצפה (5.61 − 5 = 0.61) חלקי טעות התקן של הממוצע (כ-0.143). הוא אומר שממוצע המדגם נמצא קצת יותר מארבע טעויות תקן מהערך המשוער. |t| גדול יותר = מפתיע יותר תחת השערת האפס.
- df = 9: דרגות חופש, כאן n − 1. df קטן פירושו מדגמים קטנים, ולכן המבחן דורש t גדול יותר לפני שהוא מתרשם.
- p-value ≈ 0.002: אם הממוצע האמיתי באמת היה 5, ההסתברות להגריל מדגם שהממוצע שלו נוחת לפחות כל כך רחוק מ-5 (בכל אחד מהכיוונים) היא כ-0.2%. זו כל המשמעות. זו לא ההסתברות שהממוצע האמיתי הוא 5, ו-p-value קטן לא מוכיח את ההסבר המועדף עליכם: הוא רק אומר "קשה להאשים את המקריות". בסף המקובל של 0.05, דוחים כאן את השערת האפס.
- alternative hypothesis: ניסוח מחדש של מה ש"דחייה" הייתה אומרת.
not equal to 5מאשר שהמבחן היה דו-צדדי. - 95 percent confidence interval: 5.29 to 5.93: טווח הממוצעים האמיתיים שמתיישבים עם הנתונים. שימו לב ש-5 נמצא מחוץ לו: זה אותו פסק דין כמו p < 0.05, מנוסח ביחידות של הנתונים עצמם, והוא גם אומר לכם מה הגודל הסביר של האפקט, דבר שה-p-value לעולם לא אומר.
- sample estimates: הממוצע שנצפה, כדי שהקורא יוכל לראות את העובדה הגולמית שנבדקת.
אם צריך חלקים מתוך הקוד: result <- t.test(times, mu = 5), ואז result$p.value, result$conf.int, result$estimate.
שני מדגמים: השוואה בין קבוצות בלתי תלויות
לשתי קבוצות בלתי תלויות, ממשק הנוסחה נקרא כמו השאלה עצמה. ToothGrowth מתעד צמיחת שיניים אצל שרקנים שקיבלו ויטמין C כמיץ תפוזים (OJ) או כחומצה אסקורבית (VC):
קראו את זה כ"בדוק את len מחולק לפי supp". הפלט מציג עכשיו שני אומדני מדגם (ממוצע לכל קבוצה, כ-20.7 מול 17.0), ורווח הסמך הוא להבדל ביניהם. כאן p ≈ 0.061 והרווח נמשך מכ-−0.17 עד 7.57: הוא חוצה את האפס, ולכן ברמה של 0.05 אי אפשר לשלול "אין הבדל". עם זאת, רווח שנמתח עד +7.6 גם מזהיר אתכם מלהכריז שההבדל אינו קיים. "לא מובהק" פירושו לא הוכח, לא הוכח שאינו קיים.
Welch הוא ברירת המחדל, וזה טוב
הסתכלו על הכותרת של הפלט: Welch Two Sample t-test, עם df לא שלם (כ-55.3). מבחן t הקלאסי של Student מניח שלשתי הקבוצות יש שונות שווה; הגרסה של Welch מוותרת על ההנחה הזאת ומתאימה את דרגות החופש כדי לפצות. כשהשונויות באמת שוות, Welch נותן תשובות כמעט זהות; כשהן לא, מבחן Student יכול להיות מכויל גרוע מאוד בעוד ש-Welch נשאר הוגן. לכן ברירת המחדל של R היא הבטוחה, ולעיתים רחוקות יש סיבה לעקוף אותה.
הטקס של "קודם בודקים שוויון שונויות, ואז בוחרים מבחן" הוא עצה מיושנת; פשוט השתמשו ב-Welch.
מזווג: לפני ואחרי
כששתי המדידות מגיעות מאותם נבדקים, הקבוצות אינן בלתי תלויות, והתייחסות אליהן כבלתי תלויות זורקת את העוצמה של המבחן. הציונים של שמונה אנשים לפני ואחרי קורס הכשרה:
paired = TRUE בודק את הממוצע של ההפרשים בתוך כל אדם (כאן ממוצע של 2.75 נקודות, p ≈ 0.001). למה זיווג משנה הכול: אנשים שונים זה מזה הרבה יותר ממה שההכשרה שינתה מישהו מהם. פיזור בין נבדקים מ-65 עד 80 היה מטביע שיפור של 2 עד 3 נקודות במבחן לא מזווג. חישוב ההפרשים מחסר את נקודת הבסיס של כל אדם, כך שנשאר רק השינוי. הכלל: אם לנתונים יש מבנה טבעי של "אותה יחידה נמדדה פעמיים", זווגו אותם. (ולעולם אל תשתמשו ב-paired = TRUE כשהקבוצות באמת בלתי תלויות: הזיווג יהיה בדיון.)
מבחנים חד-צדדיים: בזהירות
כברירת מחדל המבחן דו-צדדי: הוא סופר הבדל בכל אחד מהכיוונים כראיה. אם, לפני שראיתם את הנתונים, ההשערה שלכם הייתה הגיונית רק בכיוון אחד, אפשר לומר זאת:
ה-p-value נחצה ביחס למבחן הדו-צדדי, וזו בדיוק הסיבה שהפיתוי קיים: מעבר לחד-צדדי אחרי הצצה בנתונים הוא p-hacking. השתמשו ב-alternative = "greater" או ב-"less" רק עם כיוון שנקבע מראש באמת; כשיש ספק, הישארו עם מבחן דו-צדדי.
הנחות, ומה עושים כשהן לא מתקיימות
מבחן t מניח שהתצפיות בלתי תלויות ושממוצעי המדגם מתפלגים בקירוב נורמלית, מה שמתקיים כשהנתונים עצמם נורמליים בערך או כשהמדגמים גדולים במידה סבירה (משפט הגבול המרכזי עושה את העבודה הקשה; מ-n ≈ 30+ לקבוצה, סטייה מתונה מנורמליות אינה בעיה). בדקו את הצורה עם היסטוגרמה מהירה או עם boxplot. את אי-התלות, לעומת זאת, שום מבחן לא יכול להציל: היא נובעת מהאופן שבו הנתונים נאספו.
למדגמים קטנים עם נתונים מוטים בבירור או חריגים קיצוניים, החלופה הא-פרמטרית המקובלת היא שורה אחת: wilcox.test(len ~ supp, data = ToothGrowth), שמשווה התפלגויות באמצעות דירוגים במקום ממוצעים.
מה לקחת מכאן
t.test(x, mu = )למדגם אחד,t.test(y ~ group, data = )לשניים,paired = TRUEללפני ואחרי.- ה-p-value הוא "עד כמה הנתונים האלה מפתיעים אם ההבדל האמיתי היה אפס", ולא יותר; רווח הסמך אומר לכם את הגודל הסביר של האפקט ביחידות אמיתיות.
- ברירת המחדל של R לשני מדגמים היא מבחן Welch (df לא שלם): השאירו אותה.
- זיווג מסיר רעש בין נבדקים; השתמשו בו בכל פעם שאותן יחידות נמדדות פעמיים.
- חלופות חד-צדדיות רק עם כיוון שנקבע מראש;
wilcox.test()היא החלופה מבוססת הדירוגים.
הבא בתור: השוואה בין הממוצעים של שלוש קבוצות או יותר בבת אחת. ANOVA עם aov().
שאלות נפוצות
איך מריצים מבחן t ב-R?
עם t.test(). מדגם אחד מול ערך קבוע: t.test(x, mu = 5). שתי קבוצות בלתי תלויות: t.test(value ~ group, data = df). מדידות לפני ואחרי על אותם נבדקים: t.test(after, before, paired = TRUE).
איך מפרשים את ה-p-value של מבחן t ב-R?
זו ההסתברות לראות הבדל גדול לפחות כמו שלכם אם ההבדל האמיתי היה אפס. p-value קטן (לפי המוסכמה, מתחת ל-0.05) אומר שקשה להסביר את הנתונים כרעש, ולכן דוחים את השערת האפס. זו לא ההסתברות שהשערת האפס נכונה, והיא לא אומרת כלום על כמה ההבדל גדול או חשוב: בשביל זה קראו את רווח הסמך.
למה R מדווחת על מבחן t של Welch כברירת מחדל?
t.test() של R לשני מדגמים משתמשת כברירת מחדל בגרסה של Welch, שלא מניחה שלשתי הקבוצות יש שונויות שוות; לכן דרגות החופש יוצאות לא שלמות. Welch מתנהג כמעט זהה למבחן Student הקלאסי כשהשונויות שוות, ובטוח יותר כשהן לא שוות, ולכן ברירת המחדל היא הבחירה הנכונה. השתמשו ב-var.equal = TRUE רק אם תרגיל בקורס דורש במפורש את המבחן המאוחד הקלאסי.
מתי כדאי להשתמש במבחן t מזווג ב-R?
כששתי קבוצות המדידות מגיעות בזוגות טבעיים: אותו נבדק שנמדד לפני ואחרי, אותו פריט שדורג בשתי שיטות. t.test(after, before, paired = TRUE) בודק את הממוצע של ההפרשים בתוך כל זוג, מה שמסיר את השונות בין נבדקים ובדרך כלל נותן עוצמה גבוהה בהרבה מאשר התייחסות לקבוצות כבלתי תלויות.