2012-03-30 13 views
3

Ich habe die scikits.statsmodels OLS predict Funktion verwendet, um angepasste Daten zu prognostizieren, möchte aber jetzt auf Pandas umsteigen.Vorhersage mit Pandas OLS

Die Dokumentation refers to OLS sowie eine Funktion namens y_predict, aber ich kann keine Dokumentation finden, wie man es richtig verwendet.

Als Beispiel:

exogenous = { 
    "1998": "4760","1999": "5904","2000": "4504","2001": "9808","2002": "4241","2003": "4086","2004": "4687","2005": "7686","2006": "3740","2007": "3075","2008": "3753","2009": "4679","2010": "5468","2011": "7154","2012": "4292","2013": "4283","2014": "4595","2015": "9194","2016": "4221","2017": "4520"} 
endogenous = { 
    "1998": "691", "1999": "1580", "2000": "80", "2001": "1450", "2002": "555", "2003": "956", "2004": "877", "2005": "614", "2006": "468", "2007": "191"} 

import numpy as np 
from pandas import * 

ols_test = ols(y=Series(endogenous), x=Series(exogenous)) 

Doch während ich einen Anfall produzieren kann:

>>> ols_test.y_fitted 
1998  675.268299 
1999  841.176837 
2000  638.141913 
2001 1407.354228 
2002  600.000352 
2003  577.521485 
2004  664.681478 
2005 1099.611292 
2006  527.342854 
2007  430.901264 

Prediction produziert nichts anderes:

>>> ols_test.y_predict 
1998  675.268299 
1999  841.176837 
2000  638.141913 
2001 1407.354228 
2002  600.000352 
2003  577.521485 
2004  664.681478 
2005 1099.611292 
2006  527.342854 
2007  430.901264 

In scikits.statsmodels würde man folgendes tun:

import scikits.statsmodels.api as sm 
... 
ols_model = sm.OLS(endogenous, np.column_stack(exogenous)) 
ols_results = ols_mod.fit() 
ols_pred = ols_mod.predict(np.column_stack(exog_prediction_values)) 

Wie mache ich das in Pandas, um die endogenen Daten bis an die Grenzen des exogenen zu prognostizieren?

UPDATE: Dank Chang, hat die neue Version von Pandas (0.7.3) jetzt diese Funktionalität als Standard.

+0

hallo, werden Sie etwas dagegen, ein Beispiel zu geben, wie die ols.predict zu benutzen? sagen Sie, Sie haben drei unabhängige Variablen, also drei Betas [b1, b2, b3] jetzt wollen Sie [x1, x2, x3] verwenden, um ay vorherzusagen – tesla1060

Antwort

2

ist Ihr Problem, wie Sie die vorhergesagten y-Werte Ihrer Regression erhalten? Oder wie benutzt man die Regressionskoeffizienten, um vorhergesagte y-Werte für eine andere Menge von Stichproben für die exogenen Variablen zu erhalten? pandas y_predict und y_fitted sollten Ihnen den gleichen Wert geben und beide sollten Ihnen dieselben Werte geben wie die Vorhersage-Methode in scikits.statsmodels.

Wenn Sie sich für die Regressionskoeffizienten suchen, tun ols_test.beta

+0

Ich hätte gerne vorhergesagte y-Werte für 2008 bis 2017, die ich mit scikits bekommen kann .statsmodels sagen voraus, aber ich habe keine Ahnung, wie man es mit Pandas bekommt. – Turukawa

+0

Gotcha. Wenn Sie die Funktion pandas ols verwenden möchten, können Sie jetzt (ols_result.beta ['x'] * exog_2008_2017) .sum() + ols_result.beta ['intercept'] ausführen. –

+0

Ich habe ein Github Problem darüber hier geöffnet: https://github.com/pydata/pandas/issues/1008 , um eine Funktion zur Verfügung zu stellen, die die statsmodels Funktionalität repliziert –