Provádění regresní strategie pomocí Python, pandy a statsmodels
Importovat všechny požadované balíčky.
import pandas as pdfrom patsy import dmatricesfrom collections import OrderedDictimport itertoolsimport statsmodels.formula.api as smfimport sysimport matplotlib.pyplot as plt
Přečtěte si soubor dat do datového rámce pandy.
df = pd.read_csv('boston_daily_temps_1978_2019.csv', header=0, infer_datetime_format=True, parse_dates=, index_col=)
datová sada obsahuje denní průměrné teploty. Chceme měsíční průměry. Takže pojďme data srolovat na měsíční úroveň. Ukázalo se, že je to jednoduchá věc pomocí pand.
df_resampled = df.resample('M').mean()
chystáme se přidat do datové sady zaostalé proměnné sloupce., Vytvoříme kopii sady dat, abychom nenarušili původní datovou sadu.
df_lagged = df_resampled.copy()
přidejte 12 sloupců, z nichž každý obsahuje časově zaostalou verzi TAVG.
for i in range(1, 13, 1):
df_lagged = df_lagged.shift(i)
Vytiskněte prvních 15 řádků zpožděné proměnné datové sady.,
print(df_lagged.head(15))
vypíše se následující výstup:
prvních 12 řádků obsahují NaNs zavedena funkce posunu. Odstraníme těchto 12 řádků.
for i in range(0, 12, 1):
df_lagged = df_lagged.drop(df_lagged.index)
vytiskněte prvních několik řádků, abyste potvrdili, že NaNs byly odstraněny.,
print(df_lagged.head())
předtím, Než jsme dělat nic víc, pokukování a strká do data, dáme stranou a 20% dat pro testování optimální model.
nyní vytvoříme všechny možné kombinace zaostávaných hodnot. Za tímto účelem vytvoříme slovník, ve kterém klíče obsahují různé kombinace čísel zpoždění 1 až 12.
dále budeme opakovat všechny generované kombinace. Pro každou kombinaci zpoždění vytvoříme výraz modelu pomocí syntaxe patsy., Dále budeme budovat lineární regresní model pro to mas kombinace proměnných, budeme trénovat modelu na trénovací sada dat, zeptáme se statsmodels, aby nám AIC skóre pro model, a budeme poznamenejte AIC skóre a aktuální nejlepší model‘ pokud je aktuální skóre je nižší než minimální hodnota viděl tak daleko. To vše provedeme v následujícím kódu:
nakonec vytiskneme souhrn nejlepšího modelu OLSR podle našeho hodnotícího kritéria. Jedná se o model s nejnižším skóre AIC.
print(best_olsr_model_results.summary())
toto vytiskne následující výstup., Jsem upozornila na několik zajímavých oblastí v výstup:
pojďme zkontrolovat zvýrazněné sekce.,
Výběr parametrů modelu
Naše AIC skóre na základě hodnocení modelu strategie určila model s následujícími parametry:
další mas, 3, 4, 7, 8, 9 bylo stanoveno, že nemusí být dostatečně významný, aby společně vysvětlit rozptyl v závisle proměnné TAVG., Například, vidíme, že TAVG_LAG_7 není v optimální model, i když z rozptylových grafů jsme viděli dříve, se zdálo být dobré množství korelace mezi proměnnou odezvy, TAVG a TAVG_LAG_7. Důvodem vynechání může být to, že většina informací v TAVG_LAG_7 mohla být zachycena TAVG_LAG_6 a můžeme vidět, že TAVG_LAG_6 je součástí optimálního modelu.,
Statistické významnosti parametrů modelu (t-test)
druhá věc k poznámce je, že všechny parametry optimálního modelu, s výjimkou pro TAVG_LAG_10, jsou individuálně statisticky významné na 95% konfidenční úrovni na two-tailed t-test. Vykazovaná hodnota p pro jejich skóre “ t “ je menší než 0, 025, což je prahová hodnota p na úrovni spolehlivosti 95% při testu 2-tailed.,
Společný význam parametrů modelu (F-test)
třetí věc k poznámce je, že všechny parametry modelu jsou společně významný vysvětlit rozptyl v závisle proměnná TAVG.
to lze vidět ze statistiky F 1458. Hodnota p je 1.15 e-272 na úrovni spolehlivosti 95%., Tato hodnota pravděpodobnosti je tak neuvěřitelně malá, že ani nemusíte hledat tabulku distribuce F, abyste ověřili, že statistika F je významná. Model je rozhodně mnohem lepší vysvětlit rozptyl v TAVG než model pouze pro zachycení.
vědět více o tom, jak interpretovat F-statistika, viz můj článek o F-test.
AIC skóre a Maximalizace Log-Pravděpodobnost, že zvolený model
a Konečně, pojďme se podívat na AIC skóre 1990.0 uvádí statsmodels, a maximalizovat log-pravděpodobnosti -986.86.,
můžeme vidět, že model obsahuje 8 parametrů (7 časově zpožděné proměnné + intercept). Tak jako na vzorec pro AIC skóre:
AIC skóre = 2*počet parametrů -2* maximalizovat logaritmus pravděpodobnosti
= 2*8 + 2*986.86 = 1989.72, zaoblené do roku 1990. 0
což je přesně hodnota hlášená statmodely.