תיאוריה מול פרקטיקה

מה ההבדל בין ACF ל-SACF?

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

האינטואיציה

What is ACF?

ה-ACF הוא תיאורטי. הוא מייצג את האמת המתמטית המושלמת בעולם אידיאלי עם אינסוף נתונים.

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

What is SACF?

ה-SACF הוא מעשי (Sample). זה מה שאנחנו מחשבים בפועל במחשב מתוך הנתונים שאספנו.

בגלל שיש לנו מדגם סופי (למשל, 200 תצפיות), ה-SACF לעולם לא יהיה מושלם. תמיד נראה בו קפיצות אקראיות (רעש סטטיסטי) סביב האפס בפיגורים 3 ומעלה.

הנוסחה המתמטית לתהליך MA(2):

Xt = Zt + θ1Zt-1 + θ2Zt-2

כאשר Zt הוא רעש לבן (הזעזוע של היום), ו-θ1, θ2 קובעים את משקל הזעזועים של אתמול ושלשום.

סימולציה של MA(2)

שנו את ערכי התטא ותראו איך ה-SACF משתנה בהתאם בפיגורים 1 ו-2.

1. הנתונים (תהליך MA(2))

2. ACF תיאורטי (האמת)

3. SACF (מה שחישבנו)

*הקווים האדומים הם רווחי הסמך (95%). אם הקפיצות נשארות בתוך הקווים, הקורלציה האמיתית היא כנראה אפס.

💡 נקודה חשובה: SACF הוא בעצם האומדן (הקירוב) שלנו מתוך הנתונים ל-ACF התיאורטי שלעולם לא נוכל לדעת בוודאות.

למה הם נראים שונה?

  • • בתהליך MA(2) (Moving Average), הערך של היום מושפע מהזעזוע האקראי (רעש) של היום, ומהזעזועים של אתמול ושלשום.
  • • בגלל הקשר המוגבל הזה ליומיים הקודמים בלבד, הקורלציה האמיתית קיימת אך ורק בפיגורים 1 ו-2. החל מפיגור 3, הקורלציה היא בדיוק אפס. זה מה שרואים ב-ACF התיאורטי.
  • • אבל, כשאנחנו אוספים נתונים במציאות, יש לנו מדגם סופי בלבד.
  • • במקרה לגמרי, חלק מהנקודות עשויות "להסתדר" יחד בפיגורים גדולים יותר וליצור אשליה של תבנית.
  • • האשליות האלו הן הקפיצות שרואים ב-SACF החל מפיגור 3. אם תלחצו על "צור מדגם חדש", תראו שהקפיצות בפיגורים 1 ו-2 נשארות יציבות (כי הן אמיתיות), אבל שאר הקפיצות משנות כיוון!

למה ההבדל הזה כל כך חשוב לנו?

בעולם האמיתי, אלוהים לא נותן לנו את נוסחת ה-ACF התיאורטית. יש לנו רק את קובץ הנתונים שלנו.

אנחנו נראה תמיד רק את ה-SACF המבולגן. התפקיד שלנו הוא להסתכל על ה-SACF ולנחש לפיו איך נראית האמת (ה-ACF). במקרה של MA(2), נראה שתי קפיצות משמעותיות החוצות את הקווים האדומים בפיגורים 1 ו-2, ולאחר מכן הכל "קופץ" בתוך הגבולות.

סיכום והשוואה

ACF

תיאורטי (של האוכלוסייה)

  • האמת המתמטית המוחלטת
  • מחושב בהנחה שיש אינסוף נתונים
  • עבור MA(2): שונה מאפס בפיגורים 1 ו-2, בדיוק 0 החל מפיגור 3

SACF

מעשי (של המדגם)

  • ההערכה מתוך נתונים אמיתיים
  • מחושב על גודל מדגם סופי (N)
  • עבור MA(2): קפיצות בפיגורים 1 ו-2, וקפיצות אקראיות (רעש) בשאר

איך עושים את זה בפייתון? (קוד לדוגמה)

python
import numpy as np
import matplotlib.pyplot as plt
from statsmodels.graphics.tsaplots import plot_acf
from statsmodels.tsa.arima_process import ArmaProcess

# 1. יצירת תהליך MA(2) עם פרמטרים theta1, theta2
np.random.seed(42)
ma2_process = ArmaProcess(ar=[1], ma=[1, 0.50, 0.40])
ma2_data = ma2_process.generate_sample(nsample=200)

# 2. שרטוט הסדרה העיתית
plt.figure(figsize=(10, 4))
plt.plot(ma2_data)
plt.title(f"MA(2) Time Series (theta1={0.50}, theta2={0.40})")
plt.show()

# 3. שרטוט SACF (האומדן המעשי שלנו ל-ACF התיאורטי)
# הפונקציה plot_acf משרטטת כברירת מחדל את ה-SACF עם רווחי סמך של 95%
plot_acf(ma2_data, lags=20, alpha=0.05)
plt.title("Sample ACF for MA(2)")
plt.show()

3 נקודות שניקח איתנו

1

ACF = Truth

הוא מציג את התכונות האמיתיות. ב-MA(2), הוא בדיוק אפס החל מפיגור 3.

2

SACF = Estimate

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

3

שימו לב לגבולות

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