def plot_regression_result(model, fit_result, X, y): """ 绘制回归拟合后的图表,包括 - 估计值和实际值的对比 - 趋势 - 季节性 """ year_month = [x[-5:] for x in UNIQUE_YEAR_MONTH] fig,(ax1,ax2,ax3) = plt.subplots(nrows=3,ncols=1,figsize=(16,10)) params = fit_result.params ax1.plot(year_month,model.predict(params, X),label="估计值") ax1.plot(year_month,y,label="实际值") ax1.legend() ax1.set_ylim(0,) ax1.set_title("估计值和实际值对比") x = range(1,len(year_month)+1) trend = lambda x:params["ts_rank"] * x + params["constant"] trend_value = [trend(i) for i in x] ax2.plot(year_month, trend_value) ax2.set_ylim(min(0,min(trend_value) * 1.5),max(trend_value) *1.5) ax2.set_title("趋势") month_coef = params.drop(["ts_rank","constant"]) month_coef_values = month_coef.values.tolist() ax3.plot(month_coef.index.values.tolist(),month_coef_values ) ax3.set_ylim(min(0,min(month_coef_values) *1.5),max(month_coef_values) *1.5) ax3.set_title("季节性") fig.suptitle(f"针对{product}的时间序列分析", fontsize=20, fontweight="bold") fig.tight_layout() def plot_product_regression(product): model,fit_result,X,y = fit_regression_model(product) plot_regression_result(model,fit_result,X,y) plot_product_regression(product)
时间: 2024-04-01 22:31:51 浏览: 94
这段代码的作用是绘制回归分析的结果图表,包括估计值和实际值的对比,趋势以及季节性。具体实现包括创建一个包含三个子图的图表,分别用于展示估计值和实际值的对比、趋势以及季节性;使用回归模型对给定的变量进行预测估计值,并将估计值和实际值绘制在第一个子图中;计算趋势并将其绘制在第二个子图中;计算季节性并将其绘制在第三个子图中。该代码需要传入一个产品名称作为参数。
阅读全文