הבלוג של גרי רשף

31/10/2011

רגרסיה לינארית – שיטת הריבועים הפחותים

Filed under: Uncategorized — גרי רשף @ 21:33

אי שם בימי נעורינו למדנו בתיכון שכל ישר במישור ניתן לתיאור בתור Y=aX+b,
כאשר X המשתנה הבלתי תלוי ו-Y המשתנה התלוי (כלומר- X קובע את Y); ובנוסף a הוא השיפוע ו-b החיתוך עם ציר Y.
רגרסיה לינארית מטפלת בתופעות בהן יש שני משתנים שאת הקשר בינהם רוצים לתאר באופן לינארי,
כאשר כל מה שמחפשים הוא את a ואת b הנ"ל שיאפשרו לנסח במפורש את המשוואה Y=aX+b,
והיא מחשבת אותם כך שהסטיות של הנתונים האמיתיים מהקו התיאורטי יהיו מינימליות (ליתר דיוק- סכום ריבועי הסטיות מכיוון שהסטיות עצמן מתקזזות).
את הרקע המתמטי אינני זוכר (לדאבוני ולשמחתכם) ולכן נקבל את הנוסחאות שבספרים כמובנות מאליהן.
השיפוע a מחושב בשיטת הריבועים הפחותים כך:

clip_image002

ולמי שנבהל- נתרגם את הנוסחה ל-SQL-ית מדוברת:

clip_image004

החישוב של b פשוט- לאחר שחישבנו את a:
clip_image006

בפוסט הקודם יצרנו טבלת תושבים של מדינת ישראל לפי שנים, וכעת נעשה בה שימוש כדי לחזות את מספר תושבי המדינה בשנת 2030.
T – הגדרנו מיהו X ומיהו Y.
T1- חישבנו את הערכים השונים עבור הנוסחה.
T2- חישוב a.
T3- חישוב b,
ולסיום- חישוב התחזית (כלומר- להציב במשוואה Y=aX+b את ערכי a,b המחושבים ואת X=2030 ולחשב את Y):

With T As
(Select Cast(Shana As Float) X,
        Cast(Toshavim As Float) Y
From    T_Toshavim),
T1 As
(Select Avg(X) AvgX,
        Avg(Y) AvgY,
        Count(X) N,
        Sum(X*Y) SumXY,
        Sum(X*X) SumXX
From    T),
T2 As
(Select (SumXY-N*AvgX*AvgY)/(SumXX-N*AvgX*AvgX) a,
        AvgX,
        AvgY
From    T1),
T3 As
(Select a,
        AvgY-a*AvgX b
From    T2)
Select  a,
        b,
        a*2030+b Toshavim
From    T3;

clip_image008

כלומר- התחזית של המודל (המעט תמים) שלנו הוא שבעוד 19 שנים אוכלוסיית מדינת ישראל תהיה כ-9.3 מיליון תושבים.

עד כמה זה מופרך? הלשכה המרכזית לסטטיסטיקה מעריכה שיהיו 9.6-10.6 מיליון תושבים.

ליתר בטחון- אוסיף לקלנדר שלי תזכורת ל-01/01/2030 לבדוק מי צדק..

מודעות פרסומת

13 תגובות »

  1. מר רשף שלום רב,
    (בזכותך) השתמשתי בשיטת הריבועים הפחותים כדי למצוא קו לינארי על נתוני ביקוש.
    אשמח לדעת האם ישנה שיטה מקבילה אשר עוזרת למצוא קו למשוואה ריבועים מהסוג a+b*t^2?
    או שפשוט לנסות להתאים את הנוסחה שנתת למשוואה ריבועית?
    תודה רבה, אלעד.

    תגובה של אלעד — 14/12/2012 @ 12:14

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

      המתמטיקה הדרושה לעשות את זה בחישוב ישיר בSQL היא מורכבת וחורגת מהיקף של תגובה.

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

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

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

      אסיים בדוגמה שממחישה את הצורך בזהירות בהסקת מסקנות

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

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

      כמובן שזה קשקוש מוחלט.
      פשוט בקיץ אוכלים הרבה גלידה וכמעט שאין מקרי שפעת ולהפך בחורף.

      איציק ארועטי

      תגובה של איציק ארועטי — 14/12/2012 @ 13:45

    • אלעד- קודם תודה לאיציק.
      שתי הערות:

      1. משוואה ריבועית היא מהצורה Y=aX^2+bX+C ומה שכתבת זה מקרה מיוחד בו b=0.
      לדאבוני אינני יודע כיצד עושים רגרסיה ריבועית, אבל אקסל מאפשר זאת.

      2. הפואנטה בדוגמה של איציק (כלומר- הרחבה שלי לדבריו) שלפעמים X גורם ל-Y, לפעמים Y גורם ל-X, ולפעמים – כמו בדוגמה עם הגלידה והשפעת – משהו חיצוני גורם לשניהם.

      תגובה של גרי רשף — 15/12/2012 @ 00:26

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

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

        שימו לב לשני דברים
        1. המשתנים לא חייבים להיות רציפים. למשל, מגדר.
        2. רמת הכנסה וגיל הם משתנים מסבירים של פונקציית הביקוש. אבל גיל הוא משתנה מסביר של רמת הכנסה.
        כלומר, יש בפונקציה שמסבירה את הביקוש שני משתנים מסבירים שתלויים זה בזה. התלות הזו עשויה להוביל למסקנות לא נכונות מהמודל.

        אנחנו נתקלים בתוצאות רגרסיות הרבה פעמים בתוצאות מחקרים.
        למשל ההסתברות להתקף לב של מעשנים גבוהה ב58% מלא מעשנים היא תוצאה ישירה של ניתוח נתונים מרגרסיה לינארית.

        תגובה של איציק ארועטי — 15/12/2012 @ 12:50

  2. יש לי שאלה ואשמח אם תוכל לעזור לי בבקשה.
    נניח שאני מצלם תמונה, כל פיקסל בתמונה מורכב מרמת הצבע האדום, רמת הצבע הירוק ורמת הצבע הכחול (נקרא גם RGB). זאת אומרת שעל ידי שלוש הרמות האלה, ניתן להרכיב כל צבע בתמונה.
    מה שאומר, שכל פיקסל הוא וקטור מגודל 3.
    בצילום תמונות, יכולה להיווצר בעיה של תאורה, מה שישנה את הצבע בתמונה.
    כדי לפתור בעיה זו, נאמר לי שעליי להשתמש בשיטת הריבועים הפחותים.
    עליי לצרף לתמונה 3 אובייקטים כלשהם שאני אדע את ה- RGB שלהם, ורק לאחר מכן לצלם את התמונה. נאמר לי שעל ידם אני אוכל לשחזר את התמונה לצבעה המקורי.
    נניח שלאובייקטים שצירפתי יש את ה-RGB הבאים:
    אובייקט 1: [32 19 221]
    אובייקט 2: [41 237 26]
    אובייקט 3: [226 12 37]

    לאחר צילום התמונה, הRGB של האובייקטים השתנה:
    אובייקט 1: [41 11 215]
    אובייקט 2: [32 212 15]
    אובייקט 3: [225 18 28]

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

    תגובה של אלון — 05/06/2012 @ 12:32

    • בנושא של עיבוד תמונה- אין לי מושג.
      אני משער שערכי ה-RGB אינם נשמרים בטבלאות ולכן השימוש ב-SQL אינו רלוונטי כאן.
      הדבר היחידי הרלוונטי הוא השימוש בנוסחת הריבועים הפחותים.
      אני מציע שתפנה לפורום רציני שעוסק בתכנות, ושם אולי יש כאלו שמכירים מעט יותר את הנושא (בתפוז יש פורום שפות תכנות ובוודאי יש גם כאלה שמתמקדים בכלי הפיתוח שאתה עובד איתם).

      תגובה של גרי רשף — 05/06/2012 @ 12:38

      • וואי הגבת מהר, תודה על התגובה :]
        אני אנסה בפורום של תכנות. תודה רבה בכל זאת..

        תגובה של אלון — 05/06/2012 @ 12:40

  3. רגרסיה באקסל:
    יש לפחות ארבע דרכים לעשות רגרסיה באקסל.
    האחת תוארה כאן
    השנייה משתמשת ב Analasys pack
    השלישית משתמשת בפונקציות INTERCEPT ו- SLOPE הבנויות בתוך האקסל ומשמשות חישוב השיפוע a ונקודת החיתוך b
    הדרך הרביעית וה"מגניבה" מכולן היא להשתמש בהתאמת עקומות.
    ראשית יוצרים גרף מסוג X-Y
    אח"כ לוחצים קליק ימני על אחת הנקודות בגרף ובוחרים קו מגמה.
    יש כמה אפשרויות כגון קו ישר כפי שתואר לעיל אבל גם עקומות נוספות כגון לוגריתם אקספוננט ועוד.
    אם מסמנים הצג משוואה בתרשים מקבלים את נוסחת הקו שהתקבלה.

    מאוד נוח להראות במצגות גרפים כאלה מאשר לנסות להסביר למנהלים את הדרך המתמטית שהגענו לנוסחה

    מקווה שעזרתי,
    איציק

    תגובה של thmhe trugyh — 06/03/2012 @ 10:56

    • איציק- תודה רבה: בהחלט עזרת!
      מקווה שכולן מחזירות אותה תוצאה כמו זו שהצעתי, שלא אתפדח..

      תגובה של גרי רשף — 06/03/2012 @ 20:54

  4. שלום,

    האם תוכל לעזור לי,בשימוש הנוסחה באקסל?

    תודה

    תגובה של גיא — 22/02/2012 @ 18:16

    • קצת באיחור: בהנחה שבאקסל מופיעות השנים (X, המשתנה הבלתי תלוי) בתאים A2..A10
      והאוכלוסיה (Y, המשתנה התלוי) בתאים B2..B10
      אזי במקום (Sum(X*X יש להשתמש בפונקציה (SumProduct(A2..A10,A2..A10
      במקום (Count(X בפונקציה (CountA(A2..A10
      במקום (AVG(Y בפונקציה (Average(B2..B10
      וכך הלאה;
      ולאחר שתחשב את a תוכל לחשב את b (בהנחה שחישבת את a בתא D1:
      (Average(B2..B10)-D1*Average(A2..A10=

      כתבתי את הנוסחאות כך שהן יהיו כאן קריאות למרות שהתצוגה בעברית משבשת אותן.
      לפיכך אין להעתיק אותן מכאן על ידי Ctrl C אלא לכתוב אותן באקסל כפי שהן מוצגות פה.

      תגובה של גרי רשף — 26/02/2012 @ 06:45

  5. […] בפוסט הקודם (רגרסיה לינארית) הראיתי כיצד ניתן לתאר באופן לינארי קשר בין שני משתנים. ברור שבמציאות קשר לינארי מושלם הוא דבר נדיר, אבל הרגרסיה הלינארית מוצאת את הקו הכי קרוב למציאות. הבעייה היא שתמיד יהיה קו כזה- גם אם קשה למצוא קשר כלשהו בין המשתנים, ולכן צריך לחשב במקביל את מקדם המתאם בינהם שמודד את חוזקו של הקשר הזה. מקדם המתאם מחזיר תוצאה בין 1 ו-1-, כאשר 1 פירושו מתאם חיובי מלא, 1- פירושו מתאם שלילי (יחס הפוך) מלא, 0 פירושו היעדר כל מתאם בין המשתנים, וכל מספר אחר מציין מתאם חלקי – חיובי או שלילי – ואת חוזקו. […]

    פינגבאק של מקדם המתאם - גרי רשף — 01/11/2011 @ 19:14

  6. […] בפוסט הקודם (רגרסיה לינארית) הראיתי כיצד ניתן לתאר באופן לינארי קשר בין שני משתנים. ברור שבמציאות קשר לינארי מושלם הוא דבר נדיר, אבל הרגרסיה הלינארית מוצאת את הקו הכי קרוב למציאות. הבעייה היא שתמיד יהיה קו כזה- גם אם קשה למצוא קשר כלשהו בין המשתנים, ולכן צריך לחשב במקביל את מקדם המתאם בינהם שמודד את חוזקו של הקשר הזה. מקדם המתאם מחזיר תוצאה בין 1 ו-1-, כאשר 1 פירושו מתאם חיובי מלא, 1- פירושו מתאם שלילי (יחס הפוך) מלא, 0 פירושו היעדר כל מתאם בין המשתנים, וכל מספר אחר מציין מתאם חלקי – חיובי או שלילי – ואת חוזקו. […]

    פינגבאק של מקדם המתאם « הבלוג של גרי רשף — 01/11/2011 @ 19:12


RSS feed for comments on this post. TrackBack URI

כתיבת תגובה

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

הלוגו של WordPress.com

אתה מגיב באמצעות חשבון WordPress.com שלך. לצאת מהמערכת / לשנות )

תמונת Twitter

אתה מגיב באמצעות חשבון Twitter שלך. לצאת מהמערכת / לשנות )

תמונת Facebook

אתה מגיב באמצעות חשבון Facebook שלך. לצאת מהמערכת / לשנות )

תמונת גוגל פלוס

אתה מגיב באמצעות חשבון Google+ שלך. לצאת מהמערכת / לשנות )

מתחבר ל-%s

יצירה של אתר חינמי או בלוג ב־WordPress.com.

%d בלוגרים אהבו את זה: