2016-12-05 126 views
0

我刚开始学习Python,我想知道我怎么能与时间序列的价格数据的(例如,收盘价,其中有只有Ÿ因素有谁知道如何在python或相关函数中绘制线性回归曲线来绘制它?

import pandas as pd 
import pandas_datareader.data as web 
import matplotlib.pyplot as plt 
from datetime import datetime 

start=datetime(2015,1,1) 
end=datetime(2015,12,31) 

df = web.DataReader("AMZN", "yahoo", start, end) 
close = df['Close'] 

我画的线性回归曲线参照web page来掌握绘制线性回归曲线的基本思路,但我不知道在python中用什么函数来再次写出它。

请给我一些建议或参考来解决问题。 感谢您阅读本文!

+0

如果你问上_calculating_回归系数或_drawing_已知系数回归线的建议,请澄清。 – DyZ

+0

我很抱歉我的模糊问题。最终目标是绘制显示股票价格趋势的线性回归曲线(http://www.onlinetradingconcepts.com/TechnicalAnalysis/LinRegCurve.html),但我找不到与之相关的任何公式,所以我想知道如何做到这一点。 – maynull

回答

1

尝试与此:

import pandas_datareader.data as web 
from datetime import datetime 
import numpy as np 
import matplotlib.pyplot as plt 
import statsmodels.api as sm 

start = datetime(2015, 1, 1) 
end = datetime(2015, 12, 31) 

df = web.DataReader("AMZN", "yahoo", start, end) 

df['day'] = df.index.map(lambda observation_timestamp: observation_timestamp.dayofyear) 
y = df.Close 
X = df.day 
X = sm.add_constant(X) 
est = sm.OLS(y, X) 
est = est.fit() 

X_prime = np.linspace(X.day.min(), X.day.max(), 100) 
X_prime = sm.add_constant(X_prime) 
y_hat = est.predict(X_prime) 

plt.plot(X_prime[:,1], y_hat) 
plt.scatter(X.day, y) 
plt.show() 

enter image description here

执行此est.summary()

      OLS Regression Results        
============================================================================== 
Dep. Variable:     Close R-squared:      0.935 
Model:       OLS Adj. R-squared:     0.934 
Method:     Least Squares F-statistic:      3570. 
Date:    Mon, 05 Dec 2016 Prob (F-statistic):   5.06e-150 
Time:      00:27:53 Log-Likelihood:    -1199.8 
No. Observations:     252 AIC:        2404. 
Df Residuals:      250 BIC:        2411. 
Df Model:       1           
Covariance Type:   nonrobust           
============================================================================== 
       coef std err   t  P>|t|  [95.0% Conf. Int.] 
------------------------------------------------------------------------------ 
const  289.9491  3.622  80.053  0.000  282.816 297.083 
day   1.0212  0.017  59.748  0.000   0.988  1.055 
============================================================================== 
Omnibus:      15.313 Durbin-Watson:     0.117 
Prob(Omnibus):     0.000 Jarque-Bera (JB):    6.134 
Skew:       0.007 Prob(JB):      0.0466 
Kurtosis:      2.236 Cond. No.       429. 
============================================================================== 

另一个例子:

import pandas_datareader.data as web 
from datetime import datetime 
import statsmodels.api as sm 
from patsy.highlevel import dmatrices 

import matplotlib.pyplot as plt 

start = datetime(2015, 1, 1) 
end = datetime(2015, 12, 31) 

df = web.DataReader("AMZN", "yahoo", start, end) 

df['day'] = df.index.map(lambda observation_timestamp: observation_timestamp.dayofyear) 

y, X = dmatrices('Close ~ day', data=df, return_type='dataframe') 

mod = sm.OLS(y, X) 

res = mod.fit() 
sm.stats.linear_rainbow(res) 
sm.graphics.plot_regress_exog(res, "day") 
plt.show() 

enter image description here

改变sm.graphics.plot_regress_exog(res, "day")sm.graphics.plot_fit(res, "day")

enter image description here

执行此:res.summary()

      OLS Regression Results        
============================================================================== 
Dep. Variable:     Close R-squared:      0.935 
Model:       OLS Adj. R-squared:     0.934 
Method:     Least Squares F-statistic:      3570. 
Date:    Mon, 05 Dec 2016 Prob (F-statistic):   5.06e-150 
Time:      00:26:04 Log-Likelihood:    -1199.8 
No. Observations:     252 AIC:        2404. 
Df Residuals:      250 BIC:        2411. 
Df Model:       1           
Covariance Type:   nonrobust           
============================================================================== 
       coef std err   t  P>|t|  [95.0% Conf. Int.] 
------------------------------------------------------------------------------ 
Intercept 289.9491  3.622  80.053  0.000  282.816 297.083 
day   1.0212  0.017  59.748  0.000   0.988  1.055 
============================================================================== 
Omnibus:      15.313 Durbin-Watson:     0.117 
Prob(Omnibus):     0.000 Jarque-Bera (JB):    6.134 
Skew:       0.007 Prob(JB):      0.0466 
Kurtosis:      2.236 Cond. No.       429. 
============================================================================== 
+0

谢谢你的回答!我可以再问你一个问题吗?你给我看的情节都是线性的(斧头)。你碰巧知道如何绘制一条曲线并遵循价格变化的线性回归线? (例如:http://www.onlinetradingconcepts.com/images/technicalanalysis/LinRegCurveES.gif) – maynull