2016-05-02 26 views
4

私はPythonのstatsmodelsライブラリを使用して、線形回帰を使用して将来の残高を予測しています。 csvファイルは次のように表示されます。Python:Statsmodelsを使用してyの値を予測する - 線形回帰

| 残高
3 | 30
8 | 57
9 | 64
13 | 72
3 | 36
6 | 43
11 | 59
21 | 90
1 | 20
16 | 83
それはここでは、このデータの線形回帰のためのコードだ「Y」変数

「バランス」に依存しながら、独立したとして、「年」は、変数を「X」が含まれます。

import pandas as pd 
import statsmodels.api as sm 
from statsmodels.formula.api import ols 
import numpy as np 
from matplotlib import pyplot as plt 

import os 
os.chdir('C:\Users\Admin\Desktop\csv') 

cw = pd.read_csv('data-table.csv') 
y=cw.Balance 
X=cw.Year 

X = sm.add_constant(X) # Adds a constant term to the predictor 

est = sm.OLS(y, X) 
est = est.fit() 
print est.summary() 

est.params 

X_prime = np.linspace(X.Year.min(), X.Year.max(), 100)[:, np.newaxis] 
X_prime = sm.add_constant(X_prime) # add constant as we did before 

y_hat = est.predict(X_prime) 


plt.scatter(X.Year, y, alpha=0.3) # Plot the raw data 
plt.xlabel("Year") 
plt.ylabel("Total Balance") 
plt.plot(X_prime[:, 1], y_hat, 'r', alpha=0.9) # Add the regression line, colored in red 
plt.show() 

質問は '年'の値が10のときにStatsmodelsを使用して '残高'の値を予測する方法ですか?

答えて

4

あなたは結果オブジェクトestからpredictメソッドを使用することができますが、正常にそれを使用するためには、あなたはnew_valuesが辞書である式

est = sm.ols("y ~ x", data =data).fit() 
est.predict(exog=new_values) 

として使用する必要があります。

これをチェックアウトするlink

+0

この行の書き込み: ypred = est.predict(exog = dict(x1 = 10)) エラーが発生しています。 exogのYear = 10を入力する方法は? – User456898

+0

exog = 10は辞書ではありません try est.predict(exog = dict(X = 10)) –

+0

まだ動作しません。取得:ValueError:図形(1,1)と(2)が整列していない:1(dim 1)!= 2(dim 0)? – User456898

関連する問題