Python:使用Statsmodels - 线性回归预测y值

时间:2016-05-02 07:07:12

标签: python pandas regression statsmodels

我正在使用Python的statsmodels库来使用线性回归来预测未来的平衡。 csv文件显示如下:

年度 |的余额
3 | 30个
8 | 57个
9 | 64个
13 | 72个
3 | 36个
6 | 43个
11 | 59个
21 | 90个
1 | 20个
16 | 83个
它包含' Year'作为独立的' x'变量,而平衡'是依赖的' y'变量

以下是此数据的线性回归代码:

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

问题是如何预测平衡'值,使用Statsmodels时的值为'年' = 10?

1 个答案:

答案 0 :(得分:5)

您可以使用结果对象predict中的est方法,但为了成功使用它,您必须使用公式

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

其中new_values是字典。

查看此link