2012-03-30 32 views
3

私はscikits.statsmodels OLS predict関数を使用してフィッティングされたデータを予測しましたが、現在はパンダの使用に移行したいと考えています。パンダOLSを使用した予測

ドキュメントrefers to OLSと同様にy_predictという名前の関数がありますが、正しく使用する方法についてのドキュメントは見つかりません。一例として

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)) 

しかし、私はフィット感を生み出すことができますが、一方はscikits.statsmodelsで

>>> 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 

ます:

>>> 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 

予測が異なる何も生成しません以下を実行してください:

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)) 

内在的なデータを外生的な限界まで予測するにはどうすればよいですか?

更新:Changのおかげで、新しいバージョンのPandas(0.7.3)は標準としてこの機能を持つようになりました。

+0

ハイテクols_test.beta

しますか? 3つの独立した変数があるとします。したがって、3つのベータ[b1、b2、b3]は[x1、x2、x3]を使用してAYを予測します。 – tesla1060

答えて

2

あなたの回帰の予測y値を取得するにはどうすればよいですか?あるいは、回帰係数を使って、外生変数の異なるサンプルセットの予測y値を得る方法はありますか? pandas y_predictとy_fittedは同じ値を与えるべきで、両方ともあなたにscikits.statsmodelsのpredictメソッドと同じ値を与えるべきです。あなたは回帰係数を探しているなら、あなたはols.predictを使用する方法の例を与えることを気にしますが、

+0

2008年から2017年のy値を予測したいと思います.statsmodelsは予測しますが、私はパンダと一緒にそれをどうやって得るのか分かりません。 – Turukawa

+0

Gotcha。 pandas ols関数を使いたい場合は、今のところols_result.beta ['x'] * exog_2008_2017).sum()+ ols_result.beta ['intercept']を実行できます。 –

+0

私はここにGithubの問題をオープンしました:https://github.com/pydata/pandas/issues/1008 statsmodels機能を複製する機能を提供するため –

関連する問題