Teks ini merupakan kelanjutan dari serangkaian artikel yang ditujukan untuk deskripsi singkat tentang metode utama analisis data. The terakhir kali kita bahas metode klasifikasi, sekarang kita akan mempertimbangkan metode peramalan. Dengan memperkirakan, kami bermaksud mencari nomor tertentu yang diharapkan akan diperoleh untuk pengamatan baru atau untuk periode mendatang. Artikel ini mencantumkan nama metode, deskripsi singkat dan skrip Python. Abstrak dapat berguna sebelum wawancara, dalam kompetisi, atau ketika memulai proyek baru. Diasumsikan bahwa audiens mengetahui metode ini, tetapi memiliki kebutuhan untuk dengan cepat menyegarkan mereka dalam memori.
Regresi kuadrat terkecil . Suatu usaha dilakukan untuk menyajikan ketergantungan satu faktor pada faktor lainnya dalam bentuk persamaan. Koefisien diperkirakan dengan meminimalkan fungsi kerugian (kesalahan).
Jika Anda menyelesaikan persamaan ini, Anda dapat menemukan taksiran parameter:
Representasi grafis:
Jika data memiliki properti Gauss-Markov:- - ekspektasi matematis dari kesalahan adalah 0
- - homoskedastisitas
- - kurangnya multikolinearitas
- - nilai yang ditentukan
- - kesalahan terdistribusi secara normal
Kemudian, dengan teorema Gauss-Markov, estimasi akan memiliki properti berikut:- Linearitas - dengan transformasi linear dari vektor Y, estimasi juga berubah secara linear.
- Tidak dapat disesuaikan - dengan ukuran sampel yang meningkat, ekspektasi matematis cenderung ke nilai sebenarnya.
- Konsistensi - saat ukuran sampel meningkat, perkiraan cenderung ke nilai sebenarnya.
- Efisiensi - estimasi memiliki varian yang paling sedikit.
- Normalitas - nilai didistribusikan secara normal.
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 Umum . Ini digunakan ketika kondisi Gauss-Markov pada homoskedastisitas (dispersi konstan) residu dan non-korelasi residu satu sama lain tidak puas. Tujuan GLS adalah untuk memperhitungkan nilai-nilai matriks kovarians residual dengan menyesuaikan perhitungan parameter dari persamaan regresi. Matriks estimasi parameter:
di mana Ī© adalah matriks kovarians residual. Perhatikan bahwa untuk Ī© = 1 kita mendapatkan kuadrat terkecil yang biasa
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()
- GARCH . General autoregression conditional heteroscedastic - digunakan ketika ada heteroskedasticity dalam deret waktu.
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()
Jika Anda melewatkan metode penting, silakan tulis tentang hal itu di komentar dan artikel akan ditambahkan. Terimakasih atas perhatiannya.