هذا النص هو استمرار لسلسلة من المقالات المخصصة لوصف موجز للطرق الرئيسية لتحليل البيانات. في آخر مرة تناولنا طرق التصنيف ، سننظر الآن في طرق التنبؤ. من خلال التنبؤ ، نعني البحث عن رقم محدد يُتوقع الحصول عليه لملاحظة جديدة أو لفترات مقبلة. تسرد المقالة أسماء الطرق ووصفها المختصر ونص بايثون. قد يكون الملخص مفيدًا قبل المقابلة أو في المسابقة أو عند بدء مشروع جديد. من المفترض أن الجمهور يعرف هذه الأساليب ، ولكن لديه حاجة لتحديثها بسرعة في الذاكرة.
انحدار المربعات الصغرى . جرت محاولة لتقديم اعتماد عامل على آخر في شكل معادلة. يتم تقدير المعاملات بتقليل دالة الخسارة (الخطأ).
إذا قمت بحل هذه المعادلة ، يمكنك العثور على المعلمات المقدرة:
تمثيل رسومي:
إذا كانت البيانات تحتوي على خصائص Gauss-Markov:- - التوقع الرياضي لخطأ هو 0
- - الشذوذ الجنسي
- - قلة التعددية الخطية
- - القيمة المحددة
- - يتم توزيع الخطأ بشكل طبيعي
بعد ذلك ، من خلال نظرية غاوس ماركوف ، سيكون للتقديرات الخصائص التالية:- الخطية - مع التحول الخطي للمتجه Y ، تتغير التقديرات أيضًا بشكل خطي.
- غير متحيز - مع زيادة حجم العينة ، يميل التوقع الرياضي إلى القيمة الحقيقية.
- الاتساق - كلما زاد حجم العينة ، تميل التقديرات إلى قيمتها الحقيقية.
- الكفاءة - التقديرات أقل تباينًا.
- طبيعية - يتم توزيع الدرجات عادة.
import statsmodels.api as sm
Y = [1,3,4,5,2,3,4]
X = range(1,8)
X = sm.add_constant(X)
model = sm.OLS(Y,X)
results = model.fit()
print(results.summary())
results.predict(X)
- GLS المعمم . يتم استخدامه عندما لا يتم استيفاء شروط Gauss-Markov على المثلية الجنسية (التشتت المستمر) للمخلفات وعدم ارتباط المخلفات مع بعضها البعض. الهدف من GLS هو مراعاة قيم مصفوفة التباين المتبقي عن طريق تعديل حساب معلمات معادلة الانحدار. مصفوفة المعلمات المقدرة:
حيث Ω هي مصفوفة التباين المتبقي. لاحظ أنه بالنسبة إلى Ω = 1 نحصل على المربعات الصغرى المعتادة
import statsmodels.api as sm
from scipy.linalg import toeplitz
data = sm.datasets.longley.load(as_pandas=False)
data.exog = sm.add_constant(data.exog)
ols_resid = sm.OLS(data.endog, data.exog).fit().resid
res_fit = sm.OLS(ols_resid[1:], ols_resid[:-1]).fit()
rho = res_fit.params
order = toeplitz(np.arange(16))
sigma = rho**order
gls_model = sm.GLS(data.endog, data.exog, sigma=sigma)
gls_results = gls_model.fit()
print(gls_results.summary())
gls_results.predict
- wls. , ( ) , , .
import statsmodels.api as sm
Y = [1,3,4,5,2,3,4]
X = range(1,8)
X = sm.add_constant(X)
wls_model = sm.WLS(Y,X, weights=list(range(1,8)))
results = wls_model.fit()
print(results.summary())
results.predict
- tsls. wls, , , , wls. .
from linearmodels import IV2SLS, IVLIML, IVGMM, IVGMMCUE
from linearmodels.datasets import meps
from statsmodels.api import OLS, add_constant
data = meps.load()
data = data.dropna()
controls = ['totchr', 'female', 'age', 'linc','blhisp']
instruments = ['ssiratio', 'lowincome', 'multlc', 'firmsz']
data['const'] = 1
controls = ['const'] + controls
ivolsmod = IV2SLS(data.ldrugexp, data[['hi_empunion'] + controls], None, None)
res_ols = ivolsmod.fit()
print(res_ols)
print(res_ols.predict)
-ARIMA. . Auto-regression ( Y ) integrated ( — , ) moving average ( ).
from pandas import read_csv
from pandas import datetime
from pandas import DataFrame
from statsmodels.tsa.arima_model import ARIMA
from matplotlib import pyplot
def parser(x):
return datetime.strptime('190'+x, '%Y-%m')
series = read_csv('shampoo-sales.csv', header=0, parse_dates=[0], index_col=0, squeeze=True, date_parser=parser)
model = ARIMA(series, order=(5,1,0))
model_fit = model.fit(disp=0)
print(model_fit.summary())
model_fit.forecast()
- جارش . الانحدار الغير متغاير للشرط الذاتي - يستخدم عندما يكون هناك مرونة غيرية في السلسلة الزمنية.
import pyflux as pf
import pandas as pd
from pandas_datareader import DataReader
from datetime import datetime
jpm = DataReader('JPM', 'yahoo', datetime(2006,1,1), datetime(2016,3,10))
returns = pd.DataFrame(np.diff(np.log(jpm['Adj Close'].values)))
returns.index = jpm.index.values[1:jpm.index.values.shape[0]]
returns.columns = ['JPM Returns']
model = pf.GARCH(returns,p=1,q=1)
x = model.fit()
x.summary()
إذا فاتتك أي طريقة مهمة ، يرجى الكتابة عنها في التعليقات وسيتم استكمال المقالة. شكرا للانتباه.