有谁知道如何在python或相关函数中绘制线性回归曲线来绘制它?
问题描述:
我刚开始学习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
中用什么函数来再次写出它。
请给我一些建议或参考来解决问题。 感谢您阅读本文!
答
尝试与此:
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()
执行此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()
改变sm.graphics.plot_regress_exog(res, "day")
到sm.graphics.plot_fit(res, "day")
执行此: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
如果你问上_calculating_回归系数或_drawing_已知系数回归线的建议,请澄清。 – DyZ
我很抱歉我的模糊问题。最终目标是绘制显示股票价格趋势的线性回归曲线(http://www.onlinetradingconcepts.com/TechnicalAnalysis/LinRegCurve.html),但我找不到与之相关的任何公式,所以我想知道如何做到这一点。 – maynull