python 使用Statsmodels回归分析

2019-11-01 09:17:15 浏览数 (3)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/weixin_44580977/article/details/102214639

Statsmodels是Python中一个强大的统计分析包,包含了回归分析、时间序列分析、假设检验等等的功能。使用时需要导入Statsmodels库 需要注意的是OLS()未假设回归模型有常数项,需要通过sm.add_constant()在自变量x的左侧加上一列常量1。

使用matplotlib库结合Statsmodels库绘制收盘价曲线和回归直线

代码语言:javascript复制
import pandas_datareader.data as web
import pandas as pd
import numpy as np
import datetime
import statsmodels.api as sm
from statsmodels import regression
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号

df_stockload = web.DataReader("600797.SS", "yahoo", datetime.datetime(2018,10,1), datetime.datetime(2019,4,1))
df_stockload.fillna(method='bfill', inplace=True)  # 后一个数据填充NAN1
print(df_stockload.info())

y_arr = df_stockload.Close.values
x_arr = np.arange(0, len(y_arr))
x_b_arr = sm.add_constant(x_arr)  # 添加常数列1
model = regression.linear_model.OLS(y_arr, x_b_arr).fit()  # 使用OLS做拟合
rad = model.params[1]  # y = kx   b :params[1] = k
intercept = model.params[0]  # y = kx   b :params[0] = b
reg_y_fit = x_arr * rad   intercept
#matplotlib 绘制
plt.plot(x_arr, y_arr)
plt.plot(x_arr, reg_y_fit, 'r')
plt.title(u"浙大网新"   " y = "  str(rad) " * x  "   str(intercept))
plt.legend(['close', 'linear'], loc='best')

plt.show()

输出结果

0 人点赞