שְׁאֵלָה:
בדיקת נתונים שנוצרו באופן אקראי מול תפוצתם המיועדת
MathematicalOrchid
2012-05-07 20:47:36 UTC
view on stackexchange narkive permalink

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

לפני שמישהו אחר אומר זאת: אני מבין שבדיקת השערה לא יכולה לזהות מתי התוכנית פועלת כראוי. . הוא יכול לזהות רק כאשר הוא פועל באופן שגוי באופן ספציפי. (וגם אז הבדיקה "אמורה" להיכשל X% מהמקרים, תלוי באיזו רמת משמעות אתה בוחר ...)

לכן, אני מנסה להשיג הבנה אילו כלים עשויים להיות מתאימים . בפרט:

  • אני יכול ליצור כמה נתונים אקראיים שאני רוצה. כל שעלי לעשות הוא להשאיר את התוכנית פועלת מספיק זמן. לכן אני לא מוגבל לגודל מדגם ספציפי כלשהו.

  • אני מעוניין בטכניקות המייצרות ערך p. אז בוהה בגרף ואומרת "כן, זה נראה די לינארי" זו לא אפשרות מעניינת. אלא אם כן יש דרך כלשהי להציב מספר קשה ל"נפש "של גרף. ;-)

מה שאני יודע עד כה:

  • ראיתי שהוזכרו שלושה סוגים עיקריים של בדיקות שנשמעים כמו הם עשויים להיות ישימים: מבחן צ'י בריבוע [פירסון], מבחן קולמוגורוב-סמירנוב ומבחן אנדרסון-דרלינג.

  • נראה כי מבחן צ'י בריבוע מתאים ל > הפצות דיסקרטיות, בעוד ששני האחרים מתאימים יותר להפצות רציפות. (?)

  • מקורות שונים רומזים כי מבחן AD הוא "טוב יותר" ממבחן KS, אך לא מצליח לפרט יותר.

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

אם כתבת משלך זה כמעט חייב 'להיכשל' ברגע שתעבור את גבולות הידע שלך (שהטמעת בעיצוב). עיין ב http://www.random.org/analysis/ המפרט כמה משיטות הבדיקה, וכמובן http://stackoverflow.com/q/2130621/717355. מבחינה פילוסופית, אם התוכנית היא דטרמיניסטית היא לא יכולה להיות אקראית בכל מקרה ;-) זה בהחלט נושא כדאי ללמוד (ואל תשכח דיוני קריפו על פריצת סיסמאות).
שְׁלוֹשָׁה תשובות:
Greg Snow
2012-05-07 23:02:43 UTC
view on stackexchange narkive permalink

הנה תיאור כללי של אופן הפעולה של שלוש השיטות שהוזכרו.

שיטת הצ'י בריבוע עובדת על ידי השוואת מספר התצפיות בפח למספר הצפוי להיות בפח בהתבסס על הפצה. עבור הפצות דיסקרטיות הפחים הם בדרך כלל האפשרויות או הצירופים הנפרדים של אלה. להפצות רציפות תוכלו לבחור נקודות חיתוך ליצירת הפחים. פונקציות רבות שמיישמות את זה ייצרו אוטומטית את הפחים, אך אתה אמור להיות מסוגל ליצור פחים משלך אם ברצונך להשוות באזורים ספציפיים. החיסרון של שיטה זו הוא שהבדלים בין ההתפלגות התיאורטית לנתונים האמפיריים שעדיין מכניסים את הערכים לאותו סל לא יתגלו, דוגמא תהיה לעגל, אם באופן תיאורטי יש לפזר את המספרים בין 2 ל -3 ברחבי הטווח. (אנו מצפים לראות ערכים כמו 2.34296), אך בפועל כל הערכים הללו מעוגלים ל -2 או 3 (אנחנו אפילו לא רואים 2.5) והסל שלנו כולל את הטווח שבין 2 ל -3 כולל, ואז הספירה בפח יהיה דומה לחיזוי התיאורטי (זה יכול להיות טוב או רע), אם ברצונך לזהות עיגול זה תוכל פשוט לבחור את הפחים באופן ידני כדי ללכוד זאת.

נתון מבחן KS הוא המרחק המרבי בין שתי פונקציות ההפצה המצטברות בהשוואה (לרוב תיאורטי ואמפירי). אם לשתי התפלגויות ההסתברות יש רק נקודת חיתוך אחת אז 1 פחות המרחק המרבי הוא שטח החפיפה בין שתי התפלגויות ההסתברות (זה עוזר לאנשים לדמיין את מה שנמדד). חשבו לשרטט על אותה חלקה את פונקציית ההתפלגות התיאורטית ו- EDF ואז למדוד את המרחק בין 2 ה"עקומות ", ההבדל הגדול ביותר הוא נתון הבדיקה והוא מושווה מול התפלגות הערכים לכך כאשר האפס נכון. זה לוכד את ההבדלים הוא צורת ההתפלגות או חלוקה אחת שהועברה או נמתחה בהשוואה לאחרת. אין לו כוח רב המבוסס על חריגים בודדים (אם אתה לוקח את המקסימום או המינימום בנתונים ושולח אותו לאינסוף או שלילי אינסוף אז ההשפעה המקסימלית שיהיה על נתון הבדיקה היא $ \ frac1n $. בדיקה זו תלוי שאתה יודע את הפרמטרים של התפלגות ההתייחסות במקום לאמוד אותם מהנתונים (המצב שלך נראה בסדר כאן). אם אתה מעריך את הפרמטרים מאותם נתונים, אתה עדיין יכול לקבל בדיקה תקפה על ידי השוואה לסימולציות שלך במקום התפלגות ההתייחסות הסטנדרטית.

מבחן אנדרסון-דרלינג משתמש גם בהבדל בין עקומות ה- CDF כמו במבחן KS, אך במקום להשתמש בהפרש המקסימלי הוא משתמש בפונקציה של השטח הכולל בין 2 העקומות (הוא למעשה מרובע את ההבדלים, משקלל אותם כך לזנבות יש השפעה רבה יותר, ואז משתלבת על תחום ההפצות). זה נותן משקל רב יותר לחריגים מאשר KS וגם נותן משקל רב יותר אם ישנם כמה הבדלים קטנים (לעומת הבדל גדול אחד ש- KS היה מדגיש). זה עלול בסופו של דבר להכריע את הבדיקה כדי למצוא הבדלים שאתה מחשיב כחסרי חשיבות (עיגול קל וכו '). כמו מבחן KS, זה מניח שלא הערכתם פרמטרים מהנתונים.

הנה גרף המציג את הרעיונות הכלליים של 2 האחרונים:

enter image description here

מבוסס על קוד R זה:

  set.seed (1) tmp <- rnorm (25) edf <- approxfun (sort (tmp), (0:24) / 25 , שיטה = 'קבוע', yleft = 0, yright = 1, f = 1) par (mfrow = c (3,1), mar = c (4,4,0,0) +. 1) עקומה (edf, מ = -3, ל- = 3, n = 1000, col = 'ירוק') עקומה (pnorm, מ- -3, ל- = 3, col = 'כחול', הוסף = TRUE) tmp.x <- seq (- 3, 3, אורך = 1000) ediff <- פונקציה (x) pnorm (x) - edf (x) mx <- tmp.x [which.max (abs (ediff (tmp.x)))] ediff (mx) # קבוצות סטטיסטיות של KS (mx, edf (mx), mx, pnorm (mx), col = 'red') # KS statcurve (ediff, from = -3, to = 3, n = 1000) abline (h = 0, col = 'אפור בהיר') ediff2 פונקציה < (x) (pnorm (x) - edf (x)) ^ 2 / (pnorm (x) * (1-pnorm (x))) * dnorm (x) עקומה (ediff2, מ = -3, ל- = 3, n = 1000) קו מוטה (h = 0)  

הגרף העליון מציג EDF של מדגם מהרגיל רגיל בהשוואה ל- CDF של התקן הרגיל עם שורה המציגה את נתון KS. הגרף האמצעי מציג את ההבדל בשתי העקומות (ניתן לראות היכן נתון KS מתרחש). התחתון הוא אז ההפרש המשוקלל בריבוע, מבחן AD מבוסס על השטח שמתחת לעקומה זו (בהנחה שקיבלתי הכל נכון).

בדיקות אחרות בוחנות את המתאם ב- qqplot, מסתכלות על השיפוע ב- qqplot, משוות את הממוצע, var, ונתונים סטטיסטיים אחרים בהתבסס על הרגעים.

+1, זו תשובה טובה לשאלה בפועל (בניגוד לשלי ...). התיאור העובר באמצע סעיף 3 פשוט מתחנן לדמות המחשה, אם אתה מרגיש נוטה ליצור כזה.
זו תשובה ממש נחמדה. רק כדי לוודא שאני מבין לחלוטין: מבחן KS מחזיר את הסטייה הגדולה ביותר בין ה- CDF ל- EDF, בעוד AD מחזירה את השטח [המשוקלל] הכולל בין שתי העקומות?
@MathematicalOrchid, ברובו נכון, ה- AD מרובע את המרחק, ואז משקל, ואז משתלב, כך שהוא שונה במקצת מהאזור (אם כי להבנה, לחשוב על זה כשטח זה כנראה בסדר ופשוט הרבה יותר).
@GregSnow נקודה בהיותה, KS שוקלת רק נקודת קיצון אחת, ואילו AD שוקלת את מכלול שתי העקומות. מה שמסביר מדוע יש הרואים בכך "מעולה". תודה על התאורה. :-)
תודה! למרבה הצער, אני לא יכול להצביע שוב, אבל אחרת הייתי עושה זאת.
אני מצפה שאם להתפלגות התיאורטית שלך הייתה מסת נקודה (קפיצה אנכית ב- CDF בנקודה נתונה) וההתפלגות בפועל של הנתונים שלך הייתה מסה נקודתית כמעט, אך לא ממש, באותו מקום, אז מבחן KS עשוי להיות עדיף למבחן AD. אבל המקרה הזה כנראה מעט ממולא. מבחן KS אכן מאפשר בדיקות חד-צדדיות כאשר ה- AD הוא תמיד דו-צדדי, כך שזה יהיה הבדל נוסף (פשוט לא נפוץ).
אני לא אוהב את האפיון @MathematicalOrchid לפיו נתון KS תלוי רק ב"נקודת קיצון אחת ". המיקום של אותה "נקודה אחת" (לעתים קרובות באמצע ההפצה) ב- CDF תלוי בערכים של הנקודות האחרות בערכה ולכן אינו מבודד או בודד כמו שהשפה הזו מציעה למאזין הנאיבי.
נראה אפילו טוב יותר עם גרפים. :-D
@DWin: הכוונה שלי היא ש- KS רק אומר לך כמה הסטייה המקסימלית גדולה. זה לא אומר לך אם "רוב" הסטיות קטנות, או גדולות, או משהו כזה. זה רק אומר לך מהי הסטייה הגדולה ביותר. זה נשמע לי קצת כמו להשתמש במינימום ובמקסימום של רצף כדי לתאר עד כמה הוא משתנה; אתה מסתכל רק על שני הקצוות.
הנקודה כאן היא ש"הסטיות "אליהן אתה מתייחס הן בסולם הכמויות, ולא בסולם מדידת הנתונים. עיין בתרשים הראשון של @GregSnow's. אותו קו אדום אנכי המראה את "הסטייה" הוא הבדל בדירוג, ולא הבדל בסולם הנמדד.
האם צדקתי לחשוב שמבחן Cramer-von Mises זהה לספירה אך ללא שקלול?
gung - Reinstate Monica
2012-05-07 23:03:01 UTC
view on stackexchange narkive permalink

+1 לכתיבת שאלה ברורה ומפורטת. אני מקווה שהתשובה שלי לא מתסכלת מדי. אני מאמין שבדיקת השערה איננה גישה מתאימה במקרה שלך. בדיקת משמעות של השערה אפסית היא דבר הגיוני לעשות כאשר התשובה יכולה להיות כן או לא, אך אינך יודע איזו . (למרבה הצער, זה לא ממש אומר לך איזה, אבל זה נושא אחר.) במקרה שלך, אני מתכוון, אתה רוצה לדעת אם האלגוריתם שלך טוב. עם זאת, ידוע (בוודאות) שאף תוכנית מחשב אינה יכולה לייצר נתונים אקראיים באמת מכל התפלגות הסתברות. דבר זה נכון ראשית מכיוון שכל המחשבים הם מכונות מדינה סופיות, וכך הם יכולים לייצר רק מספרי פסבדו-רנדומרים. יתר על כן (אם מציבים את היעדר האקראיות האמיתית בצד), לא ייתכן שהערכים הנוצרים עוקבים באופן מושלם אחר כל התפלגות רציפה. ישנן מספר דרכים להבין זאת, אך אולי הקלה ביותר שיהיו 'פערים' בשורת המספרים, וזה לא נכון לשום משתנה אקראי רציף. יתר על כן, פערים אלה אינם כולם רחבים באופן שווה לחלוטין או מרווחים לחלוטין. בקרב מדעני המחשב שעובדים על יצירת מספרים פסאודורדומיים, שם המשחק הוא שיפור האלגוריתמים כך שהפערים יהיו קטנים יותר, אחידים יותר, עם תקופות ארוכות יותר (וגם שיכולים לייצר ערכים רבים יותר מהר). מכל מקום, עובדות אלה קובעות כי בדיקת השערה היא הגישה השגויה לקביעת האם האלגוריתם שלך עוקב כראוי אחרי "התפלגות הסתברות ספציפית וידועה", מכיוון שהיא אינה. (מצטער.)

במקום זאת, מסגרת מתאימה יותר היא לקבוע כמה קרוב הנתונים שלך להתפלגות התיאורטית. לשם כך אני ממליץ לשקול מחדש עלילות, ספציפית qq-plots ו- pp-plots. (שוב, אני מכיר בכך שזה בטח מתסכל, ואני מתנצל על כך.) עם זאת, אינך צריך להמציא את העלילות או להסתכל עליהן, עד כמה שזה נשמע מוזר. במקום זאת, לאחר שהמרת את הנתונים שלך כראוי לתכנון, וחישבת את הערכים המתאימים מההפצה התיאורטית המדוברת, אתה יכול לתאם אותם. זה נותן לך מספר, במיוחד ציון r, בדיוק כמו שאתה רוצה. יתר על כן, המספר נותן לך מדד מתאים לכמה טוב האלגוריתם שלך. לתהליך זה, אתה יכול ליצור נתונים רבים ככל שתרצה; נתונים נוספים יעניקו לך דיוק רב יותר ביחס למדידה. כלומר, העברנו את תפיסת הכוח שלנו מ- $ 1 \ beta $, את ההסתברות לדחות אפס כוזב באמת (מה שמובטח), לנקודת המבט של בהערכת הפרמטרים. ברור שהמטרה שלך כאן היא לייצר אלגוריתם שמביא אותך קרוב ככל האפשר ל- $ r = 1 $. יתכן וכדאי לעשות זאת לשני סוגי העלילות מכיוון שיש להם נקודות חוזק וחולשה שונות (באופן ספציפי, עלילות qq נותנות לך רזולוציה טובה יותר בזנבות ההפצה, ואילו עלילות pp מאפשרות רזולוציה טובה יותר במרכז).

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

מקווה שזה יעזור.

לא בדיוק מה שביקשתי, אבל בכל זאת תובנה. אני מניח שב"לא רציף "אתה בעצם מתייחס לעובדה שמחשבים לא מיישמים חשבון אינסופי-דיוק?
זה חלק גדול מזה, אבל לא כל הנושא. זה נושא שהוא מורכב מאוד.
חלק מהרעיונות של @gung's הפסקה הראשונה מיושמים בפונקציה 'SnowsPenultimateNormalityTest' בחבילת 'TeachingDemos' עבור R. אני מסכים עם הרעיון של @gung's לבחון מידה של קרבה במקום להתמקד בערך p. בעיה אחת בשימוש המתאם בעלילת qq לשם כך היא שאם לנתונים שלך יש את הצורה הנכונה, אך ממוצע שונה, שונות וכו 'אתה עדיין יכול לקבל מתאם גבוה באמת. חלופה היא להשתמש בנתון KS או בנתון AD כמדדי הבדל מהתיאורטי.
@gung, תודה על התשובה.האם תוכל לפרט קצת יותר על "לאחר שהמרת את הנתונים שלך כראוי לתכנון, וחישבת את הערכים המתאימים מההפצה התיאורטית המדוברת, אתה יכול לתאם אותם"?האם חישבתם את הנתונים לתכנון pp- או qq, מה יהיה השלב הבא לקבלת ציון ה- r שציינתם?האם מדובר במבחן ידוע כלשהו?אתה יכול בבקשה לתת הפניה?תודה!
Michael R. Chernick
2012-05-08 03:26:16 UTC
view on stackexchange narkive permalink

לא קראתי לחלוטין את כל התשובות אבל אני כן רואה שהן די יסודיות ומדויקות. אם אני מסתכן בכך שאני חוזר על משהו שקבור בתשובות הארוכות אני רק רוצה לומר ש- v = מבחן הריבוע של הצ'י יכול לשמש לנתונים רציפים. זה לא יכול להיות הבדיקה הטובה ביותר וכמו הרבה בדיקות זה מסתמך על תיאוריה אסימפטוטית ולכן לא יכול להיות מדויק בדגימות קטנות עם תאים דלילים (זה תלוי גם איך אתה עושה את הספינה). אנדרסון-דרלינג חזק יותר לבדיקת נורמליות מאשר מבחן K-S אך K-S עשוי להיות טוב יותר להפצות רציפות אחרות. לילפורס יש מבחן המיועד להפצות מעריכיות.



שאלה ותשובה זו תורגמה אוטומטית מהשפה האנגלית.התוכן המקורי זמין ב- stackexchange, ואנו מודים לו על רישיון cc by-sa 3.0 עליו הוא מופץ.
Loading...