בדיקת נורמליות
האם ההתפלגות של משתנה כמותי קרובה לנורמלית – לפני מבחן t, ANOVA או רגרסיה, לכל המדגם או לכל קבוצה בנפרד. הפלט כמו Explore ב-SPSS: לוח תיאור (ממוצע, חציון, ממוצע גזום, צידוד וגבנוניות עם טעויות התקן ו-z), לוח מבחני הנורמליות (קולמוגורוב-סמירנוב עם תיקון Lilliefors ושפירו-וילק), היסטוגרמה עם עקומה נורמלית, תרשים Q-Q, משפטי דיווח – ותיבת קריאה שאומרת מה מכל זה חשוב בגודל המדגם שלכם.
טעינת הנתונים
מדביקים עמודות ישירות מהגיליון (כולל שורת הכותרות) – מסמנים באקסל, מעתיקים, ומדביקים כאן:
בחירת המשתנים
מתי משתמשים?
לפני מבחן שמניח נורמליות – מבחן t, ANOVA, רגרסיה, מתאם פירסון – ובייחוד כשהמדגם קטן. Field (2024, סעיף 6.9) מסביר למה בודקים את המשתנה עצמו, אף שההנחה היא על שגיאות המודל: אם משתנה התוצאה מתפלג נורמלית, גם השגיאות אמורות להיות כאלה, ולכן בדיקת ההתפלגות של המשתנה היא "צעד ראשון שימושי" – ואם התוצאה אינה נורמלית בעליל (למשל צידוד חיובי כבד), אולי המודל הליניארי אינו המודל הנכון מלכתחילה. Pallant (2020, פרק 6) מריצה את הבדיקה הזאת דרך Explore על כל משתנה תלוי לפני המבחנים שבחלקים הרביעי והחמישי של ספרה, ובמבחנים שמשווים קבוצות – לכל קבוצה בנפרד (Factor List). לכן העמוד מציע קיבוץ.
מה העמוד אינו בודק: את ההנחות האחרות – ליניאריות, שונות שווה, אי-תלות – שחשובות יותר מהנורמליות (עמוד חריגים והנחות, סעיף 3); ואת השאריות של מודל רגרסיה (הן בעמוד הרגרסיה). פריט ליקרט יחיד הוא משתנה סדר לפי מוסכמת האתר (משתנים וסולמות מדידה) – שאלת הנורמליות אינה השאלה הנכונה עבורו, והעמוד מזהיר כשבוחרים אותו; ציון סולם רב-פריטי (אלפא של קרונבך וציון סולם) – כן.
ההיגיון: גרפים לפני מספרים, מספרים לפני מבחנים
הסדר של Field (2024, סעיפים 6.9.4-6.9.5 וקופסה 6.7) הוא גם סדר הפלט כאן. תחילה הצורה – היסטוגרמה ותרשים Q-Q: שניהם מראים בעין אם ההתפלגות סימטרית, אם יש זנב ארוך לצד אחד, ואם יש ערכים בודדים הרחק מהשאר. אחר כך המספרים – צידוד וגבנוניות: בהתפלגות נורמלית שניהם אפס; צידוד חיובי – ריכוז בערכים הנמוכים וזנב ימינה, שלילי – ריכוז בערכים הגבוהים; גבנוניות חיובית – זנבות כבדים, שלילית – זנבות קלים; "ככל שהערך רחוק יותר מאפס, הסטייה חמורה יותר" (סעיף 6.9.5). ל-Pallant (2020, פרק 6) אותו סרגל, עם הוספה: במדגמים גדולים למדי הצידוד "לא יעשה הבדל מהותי בניתוח", והגבנוניות עלולה להקטין את אומדן השונות אבל גם הסיכון הזה פוחת מ-200 נבדקים ומעלה (Tabachnick ו-Fidell, 2013, כמצוטטים אצל Pallant). ורק בסוף המבחנים – ובזהירות (סעיף מבחני הנורמליות).
מאחורי כל זה עומד משפט הגבול המרכזי (Field, 2024, Sections 6.2.7 and 6.8.3): מה שהמבחנים צריכים הוא התפלגות דגימה נורמלית של הממוצע (או של המקדם), והיא מתקרבת לנורמלית ככל שהמדגם גדל – בלי קשר לצורת הנתונים. הערך המקובל הוא 30, אבל בהתפלגות עם זנבות כבדים ייתכן שיידרשו 100 ואף יותר (קופסה 6.4). זו הסיבה שתיבת "קריאת התוצאה" פותחת בגודל המדגם: במדגם קטן הנורמליות באמת חשובה, ובמדגם גדול היא כמעט אינה משנה – ומבחני הנורמליות אומרים בדיוק את ההפך.
איך קוראים את הפלט?
לוח 1 – תיאור ההתפלגות. זה לוח Descriptives של Explore, עם שלוש השוואות ששווה לעשות בו. ממוצע מול חציון: בהתפלגות סימטרית הם קרובים; צידוד חיובי מושך את הממוצע למעלה ולא את החציון, ולכן "אם הממוצע גדול מהחציון, סביר שיש צידוד חיובי" (Field, 2024, Section 6.9.5) – ולהפך. ממוצע מול ממוצע גזום 5%: SPSS מסיר את 5% הערכים הגבוהים ו-5% הנמוכים ומחשב ממוצע חדש; "אם שני הממוצעים שונים מאוד, ייתכן שתצטרכו לחקור את נקודות הנתונים האלה" – ערכי הקצה משפיעים (Pallant, 2020, פרק 6; בדוגמה שלה 26.73 מול 26.64 – דומים מאוד, והמקרים נשארים). צידוד וגבנוניות מול טעויות התקן שלהם: החלוקה נותנת z (Field, 2024, Equation 6.34) – מעל 1.96 מובהק ב-.05, מעל 2.58 ב-.01, מעל 3.29 ב-.001 (קופסה 6.7). הלוח מסמן זאת בכוכביות, אבל שימו לב לדוגמה של Field עצמו: בנתוני ההיגיינה של יום 1 (N = 810) הצידוד היה 0.004- – התפלגות סימטרית לחלוטין – ועדיין הגבנוניות יצאה "מובהקת" (z = −2.38), ו"בגלל המדגם הגדול צריך לקחת את הממצאים האלה בעירבון מוגבל ולהתנחם במשפט הגבול המרכזי". במדגם גדול הכוכביות כמעט תמיד מופיעות; הערך עצמו – לא z – הוא מה שקוראים.
לוח 2 – מבחני הנורמליות. לוח Tests of Normality: השערת האפס היא שההתפלגות נורמלית, ולכן p < .05 אומר "שונה מובהק מנורמלית" ו-p > .05 – "לא נמצא הבדל" (Field, 2024, Section 6.9.5; Pallant, 2020, Chapter 6). דרגות החופש שוות ל-N: המדגם מושווה לנורמלית אידאלית, לא ל-N − 1 (Field, הערה 14 לפרק 6). קולמוגורוב-סמירנוב (D) מודד את המרחק המרבי בין ההתפלגות המצטברת של המדגם לזו של נורמלית עם הממוצע וסטיית התקן של המדגם; מכיוון שהממוצע וסטיית התקן נאמדים מהנתונים, ה-p הרגיל של קולמוגורוב-סמירנוב אינו נכון, ומשתמשים ב"תיקון Lilliefors" – זו ההערה שמתחת ללוח ב-SPSS (Gross & Ligges, 2015, תיעוד lillie.test). שפירו-וילק (W) הוא ריבוע המתאם בין הנתונים הממוינים לבין הערכים הצפויים מנורמלית – 1 בהתאמה מושלמת, וקטן ממנו ככל שהסטייה גדולה; הוא מחושב עד 5,000 תצפיות (R Core Team, 2024, תיעוד shapiro.test). ב-SPSS שפירו-וילק מודפס ליד קולמוגורוב-סמירנוב, ובאותו לוח גם כאן. כשהשניים חלוקים – מה שקורה לא מעט – אין "מנצח": שניהם סימן לחזור לתרשימים.
תרשים ההיסטוגרמה עם העקומה הנורמלית (ממוצע וסטיית תקן של המדגם) – מסתכלים על סימטריה, על חדות או שטיחות, ועל ערכים בודדים רחוקים: בדוגמה של Field הערך 20.02 בסולם 0-4 התגלה בהיסטוגרמה לפני כל מבחן, ואחרי תיקונו ל-2.02 ההתפלגות נראתה נורמלית (סעיף 6.9.3). תרשים Q-Q (quantile-quantile; Field, 2024, Section 6.9.4): לכל ערך נצפה מחושב הציון הנורמלי שהיה צפוי לדרגתו; אם הנתונים נורמליים, הנקודות יושבות על הקו האלכסוני. קשת (הנקודות "בולטות" מעל הקו באמצע) – צידוד; צורת S – זנבות כבדים או קלים (איור 6.23). העמוד מצייר כמו SPSS: הנצפה על הציר האופקי והצפוי על האנכי; ב-R הצירים הפוכים, וכך גם התבניות (Field, הערה 12 לפרק 6). ערכים זהים – כמו בסולם דירוג – חולקים נקודה אחת, גדולה יותר. גם Pallant (2020) קוראת את ה-Q-Q כך: "קו ישר למדי מצביע על התפלגות נורמלית".
מבחני הנורמליות – למה בזהירות
Field (2024, קופסה 6.7) כותב שהוא מביא את המבחנים האלה "בעיקר מפני שאנשים מצפים לראות דברים כאלה בספרי מבוא, ולא מפני שהם רעיון טוב". הבעיה כפולה, ושני צדדיה הפוכים לצורך: (1) במדגם גדול המבחנים מובהקים גם על סטיות קטנות וחסרות חשיבות – ודווקא שם, בזכות משפט הגבול המרכזי, הנורמליות כמעט אינה משנה; אז המבחן גורם לדאוג ולתקן דבר שאינו דורש תיקון. (2) במדגם קטן, שבו צריך לדאוג, אין למבחן עוצמה לגלות הפרה – והוא "מעודד אותנו לא לדאוג למשהו שכנראה צריך לדאוג לו". עצתו: במדגם גדול לא להשתמש במבחנים בכלל ("למעשה לא לדאוג יותר מדי לנורמליות"); במדגם קטן – לשים לב כשהמבחן מובהק, "אבל להתנגד לתחושת הביטחון המדומה כשאינו". אותו דבר ב-Pallant (2020, פרק 6): בדוגמה שלה (N = 433) קולמוגורוב-סמירנוב יצא p = .000 אף שההיסטוגרמה "נראית נורמלית למדי" – "זה שכיח למדי במדגמים גדולים", ו-Tabachnick ו-Fidell ממליצים להשתמש בהיסטוגרמה במקום. הדוגמה של Field דומה: יום 1 (N = 810) נראה נורמלי לחלוטין וקולמוגורוב-סמירנוב נתן p = .097 – "קרוב להפתיע למובהק", רק בגלל גודל המדגם (סעיף 6.9.5).
מוסכמת האתר – "גם וגם". המבחנים מודפסים, כי הם מופיעים בפלט SPSS ובמאמרים וצריך לדעת לקרוא אותם; אבל תיבת "קריאת התוצאה" נותנת להם משקל לפי גודל המדגם – במדגם של 200 ומעלה היא אומרת במפורש להתעלם מהם, בין 30 ל-200 להכריע לפי הצורה, ומתחת ל-30 להתייחס למבחן מובהק ולא להסתמך על לא-מובהק. דיווח של מבחן נורמליות בלבד, בלי צידוד, גבנוניות ותרשים, אינו דיווח של בדיקת נורמליות.
מה עושים כשזה לא נורמלי
קודם כול – לא להיבהל: נורמליות היא ההנחה הפחות חשובה מבין הנחות המודל הליניארי, והיא על השגיאות (עמוד חריגים והנחות, סעיפים 3-4; Field, 2024, סעיף 6.8). הסדר שם: חריגים ושגיאות הקלדה לפני הכול – ערך שמחוץ לטווח הסולם הוא טעות ולא "אי-נורמליות"; חריג אמיתי נשאר, אלא אם הוכח שאינו מהאוכלוסייה. אחר כך, כשההפרה ממשית והמדגם קטן, שיטות חסינות ו-bootstrap במקום טרנספורמציה של התוצאה (סעיף 6 שם). וכשרוצים מבחן שאינו מניח נורמליות – החלופות הא-פרמטריות: מאן-ויטני במקום t לבלתי-תלויים, וילקוקסון במקום t למזווגים, קרוסקל-וליס במקום ANOVA חד-כיוונית. Pallant (2020, פרק 6) מוסיפה הערה שמרגיעה: סולמות רבים במדעי החברה מצודדים "לא בגלל בעיה בסולם אלא בגלל טבעו של המבנה הנמדד" – שביעות רצון מהחיים מצודדת שלילית (רוב האנשים מרוצים למדי), מדדי חרדה ודיכאון באוכלוסייה הכללית מצודדים חיובית; זה תיאור של העולם, ובמדגם גדול לא בעיה למבחן.
ואיך עושים זאת ב-SPSS?
ההליך של Pallant (2020, פרק 6, "הערכת נורמליות"): Analyze › Descriptive Statistics › Explore… – המשתנים לתיבה Dependent List; משתנה הקיבוץ (אם יש) ל-Factor List; משתנה המזהה ל-Label Cases by; ב-Display – Both; Statistics… – Descriptives ו-Outliers; Plots… – Histogram (ולבטל Stem-and-leaf) ו-Normality plots with tests; Options… – Exclude cases pairwise. Field (2024, סעיף 6.9.2) מדגיש את האפשרות האחרונה: ברירת המחדל, listwise, משמיטה נבדק מכל המשתנים אם חסר לו ערך באחד מהם – בדוגמה שלו 810 נבדקים ביום 1 היו הופכים ל-123. הסינטקס שהעמוד מייצר:
EXAMINE VARIABLES=עמדות_ציון גיל BY קבוצה /PLOT HISTOGRAM NPPLOT /STATISTICS DESCRIPTIVES /CINTERVAL 95 /MISSING PAIRWISE /NOTOTAL.
קריאת הפלט. Descriptives = לוח 1 (כולל 5% Trimmed Mean, Interquartile Range, Skewness ו-Kurtosis עם Std. Error; SPSS אינו מדפיס את z – מחלקים ביד, או קוראים אותו כאן); Tests of Normality = לוח 2 (עם ההערה Lilliefors Significance Correction, ו-.200* כשה-p של קולמוגורוב-סמירנוב הוא .200 ומעלה – "גבול תחתון של המובהקות האמיתית"; העמוד מדפיס את הערך המחושב); Histogram, Normal Q-Q Plot ו-Detrended Normal Q-Q Plot (סטיית הנקודות מהקו – אמורות להתפזר סביב האפס בלי התקבצות; Pallant) ו-Boxplot; Extreme Values – חמשת הערכים הגבוהים והנמוכים עם מספר השורה (כך Field מצא את 20.02). בלי /NOTOTAL SPSS מוסיף גם שורה לכל המדגם כשיש משתנה קיבוץ.
ואיך עושים זאת ב-R?
ב-R הבסיסי: shapiro.test(), qqnorm() ו-qqline(), hist(); לקולמוגורוב-סמירנוב עם תיקון Lilliefors – lillie.test() מחבילת nortest (Gross & Ligges, 2015; ה-p של ks.test() הבסיסי אינו נכון כשהממוצע וסטיית התקן נאמדים מהנתונים – כך בתיעוד החבילה), ולצידוד וגבנוניות בנוסחאות SPSS – skewness() ו-kurtosis() מחבילת e1071 עם type = 2. שימו לב: mean(x, trim = 0.05) של R גוזם מספר שלם של תצפיות מכל צד, ולכן אינו זהה ל-5% Trimmed Mean של SPSS; והטווח הבין-רבעוני של SPSS מתקבל ב-quantile(type = 6). הסקריפט הורץ כלשונו על קובץ הדוגמה ונתן את ערכי הלוחות (בהערות). כלל האתר לעברית ב-R: קובץ UTF-8, כל שורת הערה מתחילה במילה עברית, וסביבת UTF-8 לשמות עבריים.
# בדיקת נורמליות – פרופסור סטאט. קובץ זה נשמר ב-UTF-8; כל שורת הערה מתחילה במילה עברית
library(readxl) # קריאת אקסל
library(e1071) # צידוד וגבנוניות בנוסחאות SPSS (type = 2)
library(nortest) # מבחן Lilliefors (קולמוגורוב-סמירנוב עם תיקון Lilliefors)
# טעינה: התבנית התקנית – שורה = נבדק, עמודה = משתנה; הגיליון "נתונים"
d <- read_excel("C:/Rdata/DATA_normality_example_heb.xlsx", sheet = "נתונים")
y <- d[["עמדות_ציון"]]; y <- y[!is.na(y)]
# תיאור – לוח 1: ממוצע, טעות תקן, חציון, סטיית תקן, רווח סמך, טווח בין-רבעוני (type = 6 = SPSS)
n <- length(y)
c(n = n, M = mean(y), SE = sd(y) / sqrt(n), Mdn = median(y), SD = sd(y)) # 120, 3.269, 0.068, 3.25, 0.745
mean(y) + c(-1, 1) * qt(0.975, n - 1) * sd(y) / sqrt(n) # רווח סמך 95% [3.135, 3.404]
quantile(y, c(0.25, 0.75), type = 6) # 2.75, 3.84 – טווח בין-רבעוני 1.09
# צידוד וגבנוניות כמו SPSS (type = 2), טעויות התקן ו-z
sk <- skewness(y, type = 2); ku <- kurtosis(y, type = 2) # −0.060, −0.142
se_sk <- sqrt(6 * n * (n - 1) / ((n - 2) * (n + 1) * (n + 3))) # 0.221
se_ku <- sqrt(4 * (n^2 - 1) * se_sk^2 / ((n - 3) * (n + 5))) # 0.438
c(z_skew = sk / se_sk, z_kurt = ku / se_ku) # −0.27, −0.32
# מבחני הנורמליות – לוח 2
shapiro.test(y) # W = 0.993, p = .818
lillie.test(y) # D = 0.045, p = .795
# תרשימים: היסטוגרמה עם עקומה נורמלית, ותרשים Q-Q (ב-R הצפוי על הציר האופקי – הפוך מ-SPSS)
hist(y, freq = FALSE); curve(dnorm(x, mean(y), sd(y)), add = TRUE)
qqnorm(y); qqline(y)
# לפי קבוצה: אותו דבר לכל רמה של "קבוצה"
by(d[["עמדות_ציון"]], d[["קבוצה"]], shapiro.test) # קבוצה 1: W = 0.972, p = .179; קבוצה 2: W = 0.985, p = .692
דיווח התוצאות
מדווחים מה שראיתם, לא רק מה שנבדק: הצורה במילים (סימטרית בקירוב; צידוד חיובי מתון), הצידוד והגבנוניות עם טעויות התקן, ואם מדווחים מבחן – הסטטיסטי, דרגות החופש (= N) ו-p המדויק. הדוגמה של Field (2024, סעיף 6.9.5) היא תיאור: "ביום 1 הצידוד בעצם אפס, התפלגות סימטרית; בימים 2 ו-3 ערכי צידוד סביב 1, צידוד חיובי". משפטי הדיווח שבפלט בנויים כך, בעברית ובאנגלית: צורת ההתפלגות (לפי ספים שהם מוסכמת האתר: צידוד עד 0.5 בערכו המוחלט – "סימטרית בקירוב", 0.5-1 "מתון", מעל 1 "ניכר"; אותם ספים לגבנוניות), הערכים עם טעויות התקן, ממוצע, חציון וסטיית תקן, ואז שני המבחנים. כשהמדגם גדול, כותבים במפורש שההכרעה לפי הצורה ולא לפי המבחן, ומפנים למשפט הגבול המרכזי. כללי הצורה (American Psychological Association [APA], 2020, Section 6.36): D ו-W ו-p בלי אפס לפני הנקודה (אינם יכולים לעלות על 1); צידוד וגבנוניות – עם אפס.
טעויות נפוצות
להכריע לפי p של מבחן נורמליות במדגם גדול. ב-N של מאות כמעט הכול "מובהק", וכמעט כלום לא משנה (Field, 2024, Box 6.7; Pallant, 2020, Chapter 6).
להירגע מ-p לא-מובהק במדגם קטן. למבחן אין עוצמה; "לא נמצאה סטייה" אינו "אין סטייה". מסתכלים על התרשימים.
לקרוא את הכוכביות של z במקום את הערך. z גדל עם המדגם; צידוד 0.3 הוא צידוד קטן ב-N = 50 וגם ב-N = 5,000, אף שרק בשני יש כוכביות.
לבדוק את כל המדגם כשהמבחן משווה קבוצות. ההנחה היא על ההתפלגות בתוך כל קבוצה; שתי קבוצות נורמליות עם ממוצעים שונים נראות יחד דו-גבנוניות.
לעשות טרנספורמציה בגלל צידוד. לפני כן – חריגים ושגיאות הקלדה; אחר כך – שיטות חסינות ו-bootstrap, לא טרנספורמציה של התוצאה (עמוד חריגים והנחות, סעיף 6).
לבדוק נורמליות של פריט ליקרט בודד. חמישה ערכים אפשריים אינם מתפלגים נורמלית ואינם אמורים; פריט יחיד הוא משתנה סדר – שכיחויות וחציון (שכיחויות וסטטיסטיקה תיאורית).
להשאיר את ברירת המחדל listwise ב-Explore. נבדק עם ערך חסר באחד המשתנים נשמט מכולם (Field, 2024, Section 6.9.2; Pallant, 2020, Chapter 6) – בוחרים pairwise, כמו העמוד.
להשתמש ב-p של ks.test ב-R. הוא מניח ממוצע וסטיית תקן ידועים; לנורמליות עם פרמטרים נאמדים – lillie.test (Gross & Ligges, 2015).
מקורות
American Psychological Association. (2020). Publication manual of the American Psychological Association (7th ed.). https://doi.org/10.1037/0000165-000
Field, A. (2024). Discovering statistics using IBM SPSS statistics (6th ed.). SAGE.
Gross, J., & Ligges, U. (2015). nortest: Tests for normality (R package version 1.0-4) [Computer software]. https://CRAN.R-project.org/package=nortest
Pallant, J. (2020). SPSS survival manual: A step by step guide to data analysis using IBM SPSS (7th ed.). Open University Press.
R Core Team. (2024). R: A language and environment for statistical computing (Version 4.3.3) [Computer software]. R Foundation for Statistical Computing. https://www.R-project.org/
Tabachnick ו-Fidell (2013) – כמצוטטים אצל Pallant (2020); Royston (1995) – כמצוטט בתיעוד shapiro.test של R; Dallal ו-Wilkinson (1986) ו-Stephens (1974) – כמצוטטים בתיעוד חבילת nortest; Joel ו-Charlot (2022) – כמצוטטים אצל Field (2024). לפי כלל האתר, ברשימת המקורות מופיעים רק מקורות שנקראו במקור; Pallant (2020) ו-APA (2020) – לפי פרק וסעיף של המהדורה המודפסת; Field (2024) בעותק דיגיטלי מזורם – לפי סעיף, קופסה והערה; תיעוד R ו-nortest – כפי שמודפס ב-R 4.3.3. אלגוריתם השפירו-וילק והקירוב ל-p של Lilliefors מומשו בעמוד לפי המימוש ב-R ואומתו מולו ומול PSPP.