कोर्स
मान लीजिए आप मासिक बिजली मांग का पूर्वानुमान लगा रहे हैं। आपके पास एक अच्छा ARIMA मॉडल है जो शृंखला की आत्म-सहसंबद्धता और रुझान को पकड़ता है। फिर हीट वेव आती है और आपका पूर्वानुमान 15% चूक जाता है। शृंखला नहीं बदली; मौसम बदला। यही वह परिस्थिति है जिसके लिए ARIMAX बना है: जब बाहरी कारक शृंखला के इतिहास जितना ही परिवर्तन चलाते हैं, तब टाइम सीरीज़ का पूर्वानुमान।
हम देखेंगे कि ARIMAX क्या है, यह ARIMA और SARIMAX से कैसे अलग है, और कब किसका उपयोग समझ में आता है। हम एक पूर्ण Python कार्यान्वयन भी करेंगे जिसमें डेटा तैयारी, मॉडल फिटिंग, डायग्नोस्टिक्स, और पूर्वानुमान मूल्यांकन शामिल हैं, ताकि आप सीखी हुई बातों को लागू कर सकें।
ARIMAX क्या है?
ARIMAX का अर्थ है AutoRegressive Integrated Moving Average with eXogenous variables. यह एक ARIMA मॉडल है जो बाहरी इनपुट भी स्वीकार करता है—अर्थात लक्ष्य शृंखला के बाहर के पूर्वानुमानकर्ता। उदाहरण: विज्ञापन खर्च, तापमान, प्रोमोशन फ्लैग्स, ब्याज दरें।
सामान्य संकेतन ARIMAX(p, d, q) है, जिसमें एक या अधिक बाह्य भाजक (regressors) होते हैं। p, d, और q का वही अर्थ है जो ARIMA में होता है: ऑटोरेग्रेसीव क्रम, डिफरेंसिंग की डिग्री, और मूविंग एवरेज क्रम। "X" का मतलब है कि आप अतिरिक्त कॉलम पास कर सकते हैं जिनके बारे में आपको लगता है कि वे लक्ष्य को प्रभावित करते हैं। एक बात यहाँ उल्लेखनीय है: कुछ सॉफ्टवेयर पैकेज ARIMAX को ARIMA त्रुटियों के साथ एक रिग्रेशन मॉडल के रूप में लागू करते हैं, बजाय इसके कि बाहरी चर को प्रत्यक्ष AR इनपुट की तरह लें। गणितीय रूप से भेद सूक्ष्म है, पर गुणांकों की व्याख्या में फर्क पड़ता है। statsmodels के आउटपुट को देखते समय हम इस पर लौटेंगे।
ARIMAX कैसे काम करता है
ARIMAX दो चीजें जोड़ता है: शृंखला की अपनी स्मृति और बाहरी चर की व्याख्यात्मक शक्ति।
AR, I, और MA घटक
AR (ऑटोरेग्रेसीव) घटक लक्ष्य शृंखला के पिछड़े मानों का उपयोग करके वर्तमान मान का अनुमान लगाता है। यदि पिछले महीने की बिक्री ऊँची थी, तो उसका महत्व है।
I (इंटीग्रेटेड) घटक शृंखला का डिफरेंसिंग करता है ताकि ट्रेंड या यूनिट रूट हटकर शृंखला स्थिर (stationary) बन जाए।
MA (मूविंग एवरेज) घटक पिछले पूर्वानुमान त्रुटियों का उपयोग करता है ताकि मॉडल की व्यवस्थित गलतियों को सुधारा जा सके।
ये तीनों मिलकर एक सामान्य टाइम सीरीज़ के बहुत-से प्रेरक तत्वों—रुझान, चक्र, और अवशेषों में आत्म-सहसंबंध—को संभालते हैं।
जहाँ बाहरी चर काम आते हैं
बाहरी चर वह जानकारी जोड़ते हैं जो शृंखला का अपना इतिहास नहीं दे सकता। यदि आप बिक्री का पूर्वानुमान कर रहे हैं, तो पिछली बिक्री आपको सामान्य पैटर्न बताती है। परंतु मूल्य कटौती या कोई प्रतिस्पर्धी का बाजार में आना नई जानकारी है। मॉडल हर बाहरी पूर्वानुमानकर्ता के लिए एक गुणांक का अनुमान लगाता है, साथ ही त्रुटियों में आत्म-सहसंबंध का भी हिसाब रखता है।
व्यावहारिक रूप से समझें: यदि आपका लक्ष्य शृंखला अपने पूर्व मानों से अच्छी तरह समझाई जा सकती है और आपके पास कोई भरोसेमंद बाहरी पूर्वानुमानकर्ता नहीं हैं, तो साधारण ARIMA पर्याप्त है। लेकिन जब आपको पता है कि बाहरी कारक प्रभाव डाल रहे हैं—और जब आपके पास उनके भविष्य मान वास्तव में उपलब्ध होंगे—तो ARIMAX आमतौर पर अधिक सटीक पूर्वानुमान देता है।
ARIMA बनाम ARIMAX बनाम SARIMAX
SARIMAX, SARIMA पर आधारित है और इसमें बाह्य चर जोड़ता है। व्यवहार में, Python में ARIMAX के अधिकांश कार्यान्वयन statsmodels के SARIMAX() से होकर जाते हैं, जहाँ seasonal order को शून्य रखा जाता है।
यह कोई वर्कअराउंड नहीं है। यही मानक तरीका है। जब आपकी शृंखला में स्पष्ट मौसमी पैटर्न हो या आपको बाहरी रिग्रेसर्स चाहिए हों, SARIMAX अच्छा प्रथम विकल्प है; यह दोनों को साफ़-सुथरे ढंग से संभालता है। एक सावधानी: हर लाइब्रेरी में "ARIMAX" और "SARIMAX" एक-दूसरे के स्थान पर नहीं चलते। कुछ पैकेजों में बिना मौसमी पदों के SARIMAX और ARIMAX कार्यात्मक रूप से एक जैसे हैं। अन्य में, वे इस बात में भिन्न होते हैं कि बाहरी चर लाइकलीहुड में कैसे प्रवेश करते हैं। आप जिस टूल का उपयोग कर रहे हैं, उसकी डॉक्युमेंटेशन देखें।
ARIMAX कब उपयोग करें
आम तौर पर बात एक ही पर आ टिकती है: क्या आपके पास ऐसे बाहरी पूर्वानुमानकर्ता हैं जो लक्ष्य को यथार्थ रूप से प्रभावित करते हैं, और क्या पूर्वानुमान के समय उनके भविष्य मान आपके पास होंगे?
जहाँ ARIMAX मूल्य जोड़ता है
उत्तम उदाहरण हैं: प्रोमोशन फ्लैग्स या मूल्य परिवर्तन के साथ बिक्री का पूर्वानुमान, तापमान इनपुट के साथ ऊर्जा मांग, अभियान खर्च के साथ वेबसाइट ट्रैफिक, और ब्याज दर डेटा के साथ आर्थिक संकेतक। हर मामले में बाहरी चर वह जानकारी देता है जो शृंखला स्वयं उत्पन्न नहीं कर सकती।
जब बाहरी पूर्वानुमानकर्ता उपलब्ध न हों, अविश्वसनीय हों, या आउट-ऑफ़-सेम्पल सटीकता में सुधार न करें, तब साधारण ARIMA पर्याप्त हो सकता है। ऐसे पूर्वानुमानकर्ता जोड़ना जो संकेत के बिना शोर लाते हैं, मदद नहीं करता। अधिक इनपुट का अर्थ बेहतर पूर्वानुमान नहीं है। किसी भी प्रस्तावित पूर्वानुमानकर्ता का प्रतिबद्ध होने से पहले होल्ड-आउट डेटा पर मूल्यांकन करें।
कारणता पर एक टिप्पणी
किसी पूर्वानुमानकर्ता और लक्ष्य के बीच संबंध कारणता स्थापित नहीं करता। ARIMAX एक पूर्वानुमान ढांचा है; यह सहसंबंधों का अनुमान लगाता है। यदि विज्ञापन खर्च का बिक्री से सहसंबंध इसलिए है कि दोनों दिसंबर में बढ़ते हैं, तो मॉडल इसे पकड़ सकता है, पर यह नहीं बताएगा कि वृद्धि का कारण विज्ञापन था। यदि आप केवल परिणामों का पूर्वानुमान नहीं, बल्कि निर्णयों को सूचित करने के लिए मॉडल का उपयोग कर रहे हैं, तो यह अंतर महत्वपूर्ण है। परिणाम प्रस्तुत करते समय इस बारे में स्पष्ट होना उचित है।
Python में ARIMAX मॉडल कैसे बनाएं
अब कार्यान्वयन पर आते हैं।
हम एक पुनरुत्पाद्य उदाहरण लेंगे: मासिक आइसक्रीम बिक्री (बिकी इकाइयाँ) जिनमें तापमान (°C) और प्रोमोशन फ्लैग बाहरी पूर्वानुमानकर्ता हैं। डेटासेट 48 महीनों का है, जिसमें 36 महीने प्रशिक्षण और 12 महीने मूल्यांकन के लिए हैं।
डेटा तैयार करें
सबसे पहले एक संगत मासिक दिनांक इंडेक्स के साथ DataFrame लोड या बनाएँ। अपना लक्ष्य चर और बाहरी कॉलम पहचानें, फिर सब कुछ दिनांक से संरेखित करें। विभाजन से पहले रिक्त मानों को संभालें। ट्रेन/टेस्ट सीमा के पार इम्प्यूट न करें, क्योंकि वह लीकेज लाता है।
जल्दी आत्मसात करने का नियम: जो भी बाहरी मान आप प्रशिक्षण के दौरान पास करते हैं, पूर्वानुमान के समय उनके समकक्ष भविष्य मान चाहिए होंगे। यदि आप भविष्य का तापमान पूर्वानुमान नहीं पा सकते, तो तापमान को पूर्वानुमानकर्ता की तरह उपयोग नहीं कर सकते। यह छोटी बात नहीं है; यह कई उम्मीदवारों को बाहर कर देता है।
import pandas as pd
import numpy as np
from statsmodels.tsa.statespace.sarimax import SARIMAX
from statsmodels.tsa.stattools import adfuller
from sklearn.metrics import mean_absolute_error
# Construct a sample monthly dataset
np.random.seed(42)
dates = pd.date_range(start="2020-01", periods=48, freq="MS")
temperature = 15 + 10 * np.sin(np.linspace(0, 4 * np.pi, 48)) + np.random.normal(0, 1, 48)
promotion = np.where((np.arange(48) % 6 == 0), 1, 0)
sales = (
500
+ 8 * temperature
+ 150 * promotion
+ np.cumsum(np.random.normal(0, 10, 48))
)
df = pd.DataFrame({"sales": sales, "temperature": temperature, "promotion": promotion}, index=dates)
# Train/test split
train = df.iloc[:36]
test = df.iloc[36:]
statsmodels के अनुमान के लिए स्केलिंग सामान्यतः आवश्यक नहीं होती, लेकिन जब पूर्वानुमानकर्ता बहुत भिन्न स्केल पर हों, तो यह संख्यात्मक स्थिरता में मदद करती है। स्केल करना या नहीं करना एक निर्णय का विषय है।
शृंखला और पूर्वानुमानकर्ताओं की जाँच करें
मॉडल पैरामीटर चुनने से पहले लक्ष्य शृंखला को दृश्य रूप से जाँचें और एक stationarity परीक्षण चलाएँ। Augmented Dickey-Fuller (ADF) परीक्षण मानक है। p-मूल्य 0.05 से नीचे होने पर शृंखला के stationary होने का संकेत मिलता है और संभवतः डिफरेंसिंग (d=0) की आवश्यकता नहीं है। यदि शृंखला में स्पष्ट ट्रेंड है, तो सामान्यतः d=1 सेट करेंगे। परीक्षण एक इनपुट है; डोमेन ज्ञान और दृश्य निरीक्षण भी महत्त्वपूर्ण हैं।
अपने पूर्वानुमानकर्ताओं को भी जाँचें: क्या वे लक्ष्य के साथ संरेखित हैं? क्या कोई संभावना है कि कोई पूर्वानुमानकर्ता पूर्वानुमान तिथि के बाद मापा गया हो? महीने की शुरुआत से पहले सेट किया गया प्रोमोशन फ्लैग ठीक है। उसी महीने का राजस्व नहीं।
उम्मीदवार पैरामीटर चुनें और मॉडल फिट करें
ACF और PACF प्लॉट्स p और q के उम्मीदवार मान सुझाने में मदद करते हैं। PACF में लैग 1 पर महत्वपूर्ण स्पाइक और ACF का टेपर होना अक्सर AR(1) सुझाता है; इसका उलटा MA(1) सुझाता है। प्रशिक्षण डेटा पर AIC या BIC से एक छोटे सेट के उम्मीदवारों की तुलना करें, और अंतिम मूल्यांकन के लिए ही टेस्ट सेट बचाएँ।
# Fit ARIMAX(1,1,1) via SARIMAX with no seasonal order
exog_train = train[["temperature", "promotion"]]
exog_test = test[["temperature", "promotion"]]
model = SARIMAX(
train["sales"],
exog=exog_train,
order=(1, 1, 1),
seasonal_order=(0, 0, 0, 0),
trend="n"
)
result = model.fit(disp=False)
print(result.summary())
summary() आउटपुट ARIMA गुणांकों के साथ बाहरी चरों के गुणांक भी दिखाता है। तापमान गुणांक बताता है कि तापमान में एक डिग्री की वृद्धि, शृंखला की अपनी गति का ऑटोरेग्रेसीव ढाँचा खाते में लेने के बाद, बिक्री के स्तर में कितने परिवर्तन से जुड़ी है। एक जरूरी बात: statsmodels रिग्रेशन-with-ARIMA-errors फॉर्म्युलेशन उपयोग करता है, जिसका अर्थ है कि डिफरेंसिंग (d=1) रिग्रेशन समीकरण पर नहीं, बल्कि त्रुटि प्रक्रिया पर लागू होती है। गुणांक d से निरपेक्ष होकर बिक्री के स्तर पर प्रभाव दर्शाता है। ट्रांसफर-फ़ंक्शन ARIMAX फॉर्म्युलेशन (कुछ अन्य पैकेजों में) में d=1 होने का मतलब होता कि गुणांक स्तर के बजाय परिवर्तनों पर प्रभाव दर्शाते। यह भेद अक्सर उलझन पैदा करता है, इसलिए आप जो टूल उपयोग कर रहे हैं, उसकी डॉक्युमेंटेशन जाँच लें।
अवशेष जाँचें और पूर्वानुमान का मूल्यांकन करें
अवशेष white noise जैसे दिखने चाहिए। अवशेष ACF प्लॉट में किसी शेष आत्म-सहसंबंध की जाँच करें। महत्वपूर्ण स्पाइक दिखने का अर्थ है कि मॉडल कोई संरचना छोड़ रहा है। यदि मौसमी लैग्स पर व्यवस्थित पैटर्न दिखें, तो मौसमी order के साथ SARIMAX पर जाएँ।
# Generate out-of-sample predictions
predictions = result.forecast(steps=12, exog=exog_test)
# Evaluate
mae = mean_absolute_error(test["sales"], predictions)
# Naive baseline: forecast each period using the previous period's actual value
naive_forecast = np.concatenate([[train["sales"].iloc[-1]], test["sales"].values[:-1]])
naive_mae = mean_absolute_error(test["sales"], naive_forecast)
print(f"ARIMAX MAE: {mae:.1f}")
print(f"Naive MAE: {naive_mae:.1f}")
ARIMAX के MAE की तुलना एक साधारण आधाररेखा से करें (पिछले अवधि के मान को वर्तमान का पूर्वानुमान मानना)। यदि आपके टेस्ट सेट पर ARIMAX साधारण मॉडल को नहीं हरा पाता, तो यह सार्थक निष्कर्ष है। अतिरिक्त जटिलता उचित नहीं है। यह अपेक्षा से ज्यादा बार होता है, खासकर जब बाहरी पूर्वानुमानकर्ता इन-सेम्पल जितने साफ़ नहीं होते।
भविष्य मानों का पूर्वानुमान करें
प्रशिक्षण अवधि से आगे का पूर्वानुमान आउट-ऑफ़-सेम्पल मूल्यांकन जैसा ही होता है: forecast() कॉल के साथ भविष्य के बाहरी मान सप्लाई करें। प्रोमोशन फ्लैग्स के लिए यह आमतौर पर सीधा होता है क्योंकि प्रोमोशनल कैलेंडर पहले से पता होता है। तापमान के लिए, आप आम तौर पर मौसम का पूर्वानुमान या ऐतिहासिक मौसमी औसत उपयोग करेंगे।
ध्यान रखें: statsmodels जो कॉन्फिडेंस इंटरवल देता है, वे आपके द्वारा दिए गए पूर्वानुमानकर्ताओं के मानों पर सशर्त होते हैं। वे उन पूर्वानुमानकर्ताओं की अनिश्चितता का हिसाब नहीं रखते। यदि आपका तापमान पूर्वानुमान अनिश्चित है, तो वास्तविक पूर्वानुमान अनिश्चितता इन इंटरवल से अधिक चौड़ी है। यदि आप परिणाम हितधारकों को प्रस्तुत कर रहे हैं, तो यह बताना उचित है।
सामान्य चुनौतियाँ और सीमाएँ
ऊपर दिया कार्यान्वयन सुखद मार्ग को कवर करता है। यहाँ वे जगहें हैं जहाँ चीजें टूटती हैं।
- भविष्य के पूर्वानुमानकर्ता अज्ञात हो सकते हैं: यह सबसे आम व्यावहारिक बाधा है। यदि आप अपने बाहरी चरों के भविष्य मान विश्वसनीय रूप से प्राप्त नहीं कर सकते, तो आप उनका उपयोग नहीं कर सकते। कल के तापमान के साथ ऊर्जा मांग का पूर्वानुमान लगाने के लिए तापमान का पूर्वानुमान चाहिए, कल का वास्तविक नहीं।
- पूर्वानुमानकर्ता जानकारी लीक कर सकते हैं: पूर्वानुमान तिथि के बाद मापा गया चर आपके इन-सेम्पल मूल्यांकन को वास्तविकता से कहीं बेहतर दिखा सकता है। ध्यान दें कि आपके पूर्वानुमानकर्ताओं के टाइमस्टैम्प वास्तव में किससे मेल खाते हैं।
- संबंध बदल सकते हैं: ऐतिहासिक डेटा पर अनुमानित गुणांक आगे चलकर वैसा न रहें। जो मूल्य लोच दो साल तक स्थिर थी, वह किसी बाजार झटके के बाद बदल सकती है—और 2024–2025 ने इसे काफी वास्तविक बना दिया। मॉडल को समय-समय पर फिर से अनुमानित करना अच्छा अभ्यास है।
- सहसंबद्ध पूर्वानुमानकर्ता व्याख्या जटिल करते हैं: अत्यधिक सह-रैखिक इनपुट व्यक्तिगत गुणांक अनुमानों को अस्थिर बना सकते हैं। यह हमेशा पूर्वानुमान सटीकता नहीं बिगाड़ता, पर यह बताना कठिन हो जाता है कि कौन-सा पूर्वानुमानकर्ता काम कर रहा है।
- अधिक इनपुट बेहतर पूर्वानुमान की गारंटी नहीं हैं: हर प्रस्तावित पूर्वानुमानकर्ता को होल्ड-आउट डेटा पर आधाररेखा से तौलें। कुछ फीचर इन-सेम्पल में सूचनात्मक लगते हैं पर आउट-ऑफ़-सेम्पल शोर जोड़ते हैं।
- सीज़नैलिटी के लिए मौसमी पद जरूरी हैं: यदि आपकी शृंखला में सुसंगत मौसमी पैटर्न है, जैसे दिसंबर स्पाइक के साथ मासिक बिक्री, तो मौसमी order के साथ SARIMAX सही चुनाव है। केवल ARIMAX इसे नहीं पकड़ेगा।
- कारणता स्थापित नहीं होती: दोहराने लायक: ARIMAX पूर्वानुमान ढांचा है, कारण-निष्कर्ष का तरीका नहीं। अतिरिक्त विश्लेषण के बिना गुणांकों के चिह्नों से कारण दावे न करें।
निष्कर्ष
जब आपके पास ऐसे बाहरी कारक हों जो लक्ष्य को सचमुच प्रभावित करते हों, और आप पूर्वानुमान के समय उनके भविष्य मान दे सकें, तब ARIMAX अपनी जगह बनाता है। यह ARIMA का स्वाभाविक विस्तार है, उसका विकल्प नहीं। यदि आपकी शृंखला सुव्यवस्थित है और आपके पास भरोसेमंद पूर्वानुमानकर्ता नहीं हैं, तो साधारण ARIMA आमतौर पर बेहतर शुरुआती बिंदु है। चर जोड़ना प्रगति जैसा लगता है। कभी-कभी ऐसा नहीं होता।
वर्कफ़्लो चार बातों को अच्छी तरह करने पर टिका है:
- अपने पूर्वानुमानकर्ताओं को ठीक से संरेखित करें,
- मूल्यांकन से पहले लीकेज की जाँच करें,
- वास्तविक होल्ड-आउट डेटा पर मान्य करें, और
- हमेशा किसी साधारण आधाररेखा से तुलना करें।
जो ARIMAX मॉडल मुश्किल से एक साधारण पूर्वानुमान को हराता है, वह साधारण पूर्वानुमान से बेहतर नहीं है। वह बस अधिक महँगा है।
यदि आप टाइम सीरीज़ की बुनियाद में और गहराई तक जाना चाहते हैं, तो हमारा Time Series Analysis in Python कोर्स ARIMA, stationarity, और डायग्नोस्टिक्स को विस्तार से कवर करता है। statsmodels से संबंधित चीज़ों के लिए, हमारा Introduction to Regression with statsmodels in Python कोर्स वह सांख्यिकीय अंतर्दृष्टि देता है जिसकी आपको मॉडल सारांशों की व्याख्या और अवशेषों की जाँच के समय ज़रूरत होगी।
विनोद चुगानी ने टोक्यो में जेपीमॉर्गन के सबसे कम उम्र के हेज फंड सेल्स डेस्क हेड के रूप में अपना करियर शुरू किया और बाद में लेहमन ब्रदर्स में व्यक्तिगत बिक्री का रिकॉर्ड बनाया, फिर 30 देशों में फैला एक इलेक्ट्रॉनिक्स डिस्ट्रीब्यूशन व्यवसाय बनाया, जिसकी आय SG$100 मिलियन से आगे बढ़ी, इसके बाद उन्होंने डेटा की ओर रुख किया। ड्यूक में अर्थशास्त्र के स्नातक और NYC डेटा साइंस अकादमी के पूर्व छात्र, वे मेवन पर ह्यूगो बोव्न-एंडरसन के Building AI Applications कोर्स के लिए 100+ आवेदनों में से तीन छात्रवृत्ति प्राप्तकर्ताओं में से एक थे। आज, वे DataCamp, KDnuggets, Machine Learning Mastery, और Statology के लिए सांख्यिकी से लेकर एजेंटिक एआई तक के विषयों पर लिखते हैं, और NYC डेटा साइंस अकादमी में डेटा प्रोफेशनलों को मेंटर करते हैं, उनके नाम पर 1,000 से अधिक एक-से-एक सत्र हैं।
FAQs
ARIMAX और ARIMA में क्या अंतर है?
ARIMA लक्ष्य शृंखला का पूर्वानुमान केवल उसके अपने पिछले मानों और पिछले पूर्वानुमान त्रुटियों से करता है। ARIMAX इसे बाहरी चरों—जैसे तापमान, प्रोमोशन, या ब्याज दरें—को शामिल करके विस्तारित करता है, जिनके बारे में माना जाता है कि वे लक्ष्य को प्रभावित करते हैं। यदि वे बाहरी कारक वास्तव में आपकी शृंखला में भिन्नता चलाते हैं और आप उनके भविष्य मान दे सकते हैं, तो ARIMAX आम तौर पर अकेले ARIMA से बेहतर पूर्वानुमान देगा।
ARIMAX SARIMAX से कैसे भिन्न है?
ARIMAX बाहरी चरों को संभालता है, लेकिन मौसमी पैटर्न को नहीं। SARIMAX, ARIMAX के ऊपर मौसमी AR, डिफरेंसिंग, और MA पद जोड़ता है, जिससे वह सही विकल्प बनता है जब आपकी शृंखला में आवर्ती मौसमी संरचना हो। Python के statsmodels में, ARIMAX आम तौर पर SARIMAX() के माध्यम से seasonal order (0, 0, 0, 0) के साथ लागू होता है। उस संरचना में वे कार्यात्मक रूप से एक ही मॉडल हैं।
क्या ARIMAX के साथ पूर्वानुमान करने के लिए मुझे बाहरी चरों के भविष्य मान देने होंगे?
हाँ—यह सबसे महत्वपूर्ण व्यावहारिक बाधाओं में से एक है। प्रशिक्षण अवधि से आगे के पूर्वानुमान बनाते समय, आपको प्रत्येक बाहरी चर के लिए हर भविष्य समय चरण पर मान देने होंगे। प्रोमोशन फ्लैग्स या अवकाश संकेतकों के लिए यह आमतौर पर सरल है। तापमान या कमोडिटी कीमतों जैसे चरों के लिए, आपको पूर्वानुमानित मान या उचित मान्यताएँ चाहिए होंगी, जो अतिरिक्त अनिश्चितता लाती हैं।
मैं ARIMAX मॉडल के लिए p, d, और q कैसे चुनूँ?
(डिफरेंस की हुई) लक्ष्य शृंखला के ACF और PACF प्लॉट्स से शुरू करें। PACF में लैग 1 पर महत्वपूर्ण स्पाइक और ACF का क्षय अक्सर AR(1) सुझाता है; उलटा पैटर्न MA(1) सुझाता है। d तय करने के लिए डोमेन ज्ञान और ADF परीक्षण का उपयोग करें। फिर प्रशिक्षण डेटा पर AIC या BIC का उपयोग करते हुए (p, d, q) के कुछ उम्मीदवार संयोजनों की तुलना करें। इस चयन चरण में टेस्ट सेट का उपयोग न करें—उसे केवल अंतिम मूल्यांकन के लिए रखें।
ARIMAX मॉडल में किसी बाहरी चर पर गुणांक का क्या अर्थ होता है?
गुणांक उस अनुमानित परिवर्तन का प्रतिनिधित्व करता है जो उस पूर्वानुमानकर्ता में एक-इकाई वृद्धि से लक्ष्य शृंखला के स्तर में आता है, ऑटोरेग्रेसीव संरचना का हिसाब रखने के बाद। statsmodels में यह d=1 होने पर भी लागू होता है, क्योंकि डिफरेंसिंग रिग्रेशन समीकरण पर नहीं, बल्कि त्रुटि प्रक्रिया पर लागू होती है (यह रिग्रेशन-with-ARIMA-errors फॉर्म्युलेशन है)। कुछ अन्य पैकेज ट्रांसफर-फ़ंक्शन फॉर्म्युलेशन का उपयोग करते हैं, जहाँ d=1 से गुणांक स्तर के बजाय परिवर्तनों पर प्रभाव दर्शाते। इसलिए अपने टूल की डॉक्युमेंटेशन जाँचें। जब पूर्वानुमानकर्ता अलग-अलग स्केल पर हों या आपस में सहसंबद्ध हों, तो व्याख्या कठिन हो सकती है—गुणांकों की तुलना की परवाह हो तो इनपुट्स का मानकीकरण करना उपयोगी है।
मैं बाहरी पूर्वानुमानकर्ताओं में मल्टीकोलिनियरिटी कैसे पहचानूँ और संभालूँ?
फिट करने से पहले प्रत्येक पूर्वानुमानकर्ता के लिए Variance Inflation Factor (VIF) निकालें। 10 से ऊपर के मान समस्याग्रस्त सह-रैखिकता का संकेत देते हैं। ऐसा मिले तो सबसे कम सैद्धांतिक रूप से उचित पूर्वानुमानकर्ता को हटाने का प्रयास करें, या सहसंबद्ध चरों को एक समेकित चर में संयोजित करें। उच्च सह-रैखिकता आवश्यक नहीं कि पूर्वानुमान सटीकता को नुकसान पहुँचाए, पर यह व्यक्तिगत गुणांकों को अविश्वसनीय और समझना कठिन बनाती है।
मैं कैसे आँकूँ कि ARIMAX वास्तव में मूल्य जोड़ रहा है या नहीं?
हमेशा किसी सरल आधाररेखा से तुलना करें—एक नाइऍव पूर्वानुमान (पिछली अवधि के मान का उपयोग) अच्छा प्रारंभिक बिंदु है। यदि होल्ड-आउट टेस्ट डेटा पर ARIMAX इसे नहीं हरा पाता, तो मॉडल अपनी जटिलता का औचित्य नहीं देता। MAE और RMSE दोनों उचित मेट्रिक्स हैं; MAE हितधारकों को समझाना आसान है। यह तुलना ऐसे सही टेस्ट सेट पर चलाएँ जिसका उपयोग पैरामीटर चयन में कभी न हुआ हो।
मुझे ARIMAX की जगह SARIMAX कब उपयोग करना चाहिए?
जब आपकी शृंखला में सुसंगत मौसमी पैटर्न दिखे—दिसंबर पीक के साथ मासिक बिक्री, सोमवार स्पाइक के साथ साप्ताहिक वेब ट्रैफिक, आदि—तो SARIMAX का उपयोग करें। SARIMAX मौसमी AR, डिफरेंसिंग, और MA घटक जोड़ता है जो ARIMAX में नहीं होते। चूँकि Python का statsmodels वैसे भी ARIMAX को SARIMAX() के माध्यम से लागू करता है, तो व्यावहारिक प्रश्न केवल इतना है कि क्या गैर-शून्य मौसमी order सेट करना है। यदि ARIMAX फिट करने के बाद आपके अवशेष मौसमी लैग्स पर महत्वपूर्ण आत्म-सहसंबंध दिखाएँ, तो यह मौसमी पद जोड़ने का संकेत है।
