האם אפשר לחשב סטיית תקן ללא שמירת הערכים

האם אפשר לחשב סטיית תקן ללא שמירת הערכים ../images/Emo35.gif

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

vinney

Well-known member
הסברת בעצמך למה אתה לא יכול לעשות את זה

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

HaifaMan

New member
מה לגבי 2 מעברים?

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

HaifaMan

New member
במחשבה שניה

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

vinney

Well-known member
לא ברורה לי הנוסחה

קח סדרת נתונים : 1,2,3 ממוצע הוא 2, סטיית תקן 1. הנוסחה שלך נותנת משהו מופרך לדעתי... סכום ריבועים זה 1+4+9=14 סכום האיברים זה 1+2+3=6 סה"כ יוצא לפי הנוסחה שלך:
14-2*3*6+4 = 14-36+4 = -18 כל זה חלקי 3, אבל זה לא משנה, סטיית תקן זה מספר חיובי.​
 

HaifaMan

New member
הגיוני שטעיתי..שרבטתי מהזכרון

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

גיל14

New member
זה כי פתחת לא טוב את הסוגריים

שים לב לאיבר האחרון - הממוצע בריבוע...בסוגריים, היה בתוך הסכום. זה שאין לו אינדקס רץ, לא אומר שאתה יכול להוציא אותו מהסכום ככה, צריך להכפיל במספר המחוברים, כלומר ב-n. אז נקבל באמת עבור ממוצע = 2, n = 3, ריבועים = 14, סכום = 6:
z (14-2*2*6+3*4)/3 = (14-24+12)/3 = 2/3​
וזו אכן השונות (וסטיית התקן - שורש מזה, בערך 0.816). לא יודע למה החלטת, ויני, שסטיית התקן היא 1.
 

Arrival

New member
לא מכיר את הנושא אבל...

נראה לי שאפשר למצוא את המספר המקורב למספר הדרוש על ידי אלגוריתם כזה... יש לך את המשתנה עם הממוצע המצטבר ועוד 20 משתנים. אחרי כל 20 משתנים אתה מחסיר מהם את הממוצע המצטבר, מעלה בריבוע ושומר במשתנה נפרד. בסוף אתה מחלק את המשתנה הנפרד בN ומקבל מספר ששואף למספר אותו אתה מחפש באינסוף. 2000 מספרים נראים לי די הרבה, ותחום של 0..8000 נראה לי כתחום פיזור קטן יחסית. אבל נא לקחת את זה בערבון מוגבל מכיוון שאני בסמסטר א1...
 

vinney

Well-known member
הנושא נפתר בפורום מתמטיקה

תוך שימוש בשונות (הפרש בין ממוצע ריבועים לריבוע הממוצע). מזל שיש מתמטיקאים
 

BlackBamba

New member
לא, הוא ממש לא נפתר שם...

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