Statsmodels库是Python中一个强大的统计分析库,包括假设检验、回归分析、时间序列分析等功能
import statsmodels.formula.api as smf
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# 生产数据集X,Y进行回归分析
data = pd.DataFrame({'X':np.arange(10, 20, 0.25)})
data['Y'] = 2 * data['X'] +1 + np.random.randn(40)
# 上面程序生成的数据为 y=2*x+1 并加上随机数,接下来使用smf.ols()函数来拟合线性回归方程
mod = smf.ols("Y ~ X", data).fit()
#表示针对数据集data,使用Y作为因变量,X作为自变量,拟合回归方程,然后使用smf.ols的fit()方法拟合模型
#使用mod的summary()属性输出模型的结果。
print(mod.summary())
image.png
# 从结果中发现拟合模型为 y= x ,并且R-squared = ,说明此模型拟合得非常好。
# 画出模型原始数据的散点图和回归方程的直线图,以观察拟合效果。
data.plot(x='X', y='Y', kind='scatter', figsize=(8,5))
plt.plot(data['X'], mod.params[0]+mod.params[1]*data['X'], 'r')
plt.text(10,38,'y='+str(round(mod.params[1],4))+' * x + ' + str(round(mod.params[0], 4)))
plt.title('simple linear regression')
plt.show()
image.png
网友评论