2016-11-11 117 views
1

后叠加线性回归线我有以下的数据帧,样品看起来像这样:熊猫据帧 - 让回归价值

ADBE['Date'] = ADBE['Date'].values.astype(float) 
model = pd.ols(y = ADBE['Close'], x = ADBE['Date']) 

我得到:

enter image description here

我通过了回归结果如下:

Regression results`

我试着绘制结果如下:

import matplotlib.pyplot as plt 
plt.plot(model, ADBE['Close']) 

我得到的错误信息:

“x和y必须具有相同的第一维”

我得到的回归结果只是一个数字(1维)与数组/数据框(ADBE ['Close'])进行对比,并且已经尝试使用来自stackoverflow的几个方法来进行二维回归。没有运气。任何人都会在回归之前做到这一点?

编辑:我也试过如下:

ols2 = np.polyfit(ADBE['Date'], ADBE['Close'], 1) 

poly_ols2 = np.poly1d(ols2) 

,而我得到的错误:

数据类型很精确

...为OLS2线。所以,无论哪种方式,我去(密谋回归,或通过polyfit在首位刚刚回归)我得到一个错误

回答

0

I get the error message:

"x and y must have same first dimension"

这是因为model是大熊猫模型对象:

type(model) 
pandas.stats.ols.OLS 

matplotlib不知道该如何处理这个对象。如果您想根据模型的拟合值绘制数据(例如),则应使用:model.y_fitted.values。以下是一个工作示例

from sklearn import datasets # toy dataset for this example 
import matplotlib.pyplot as plt 
%matplotlib inline # using jupyter notebook 

iris = datasets.load_iris() 
iris = pd.DataFrame(iris.data, columns=iris.feature_names) 

# note that pd.ols is deprecated and you should use 
# statsmodel or scikit learn for regression 
model = pd.ols(y = iris['sepal length (cm)'], x = iris['sepal width (cm)']) 

plt.scatter(y = model.y_fitted.values, x = iris['sepal length (cm)']) 
plt.xlabel("sepal length (cm)") 
plt.ylabel("OLS fitted values") 
plt.show()