python 使用Statsmodels回归分析

版权声明:本文为博主原创文章,遵循 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库绘制收盘价曲线和回归直线

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

输出结果
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44580977/article/details/102214639