Python 语言 用 StatsModels 构建销售额预测模型 线性回归 + 残差分析

Python阿木 发布于 1 天前 2 次阅读


Python 线性回归与残差分析在销售额预测中的应用

在商业领域,预测销售额对于制定销售策略、库存管理和财务规划至关重要。线性回归是一种常用的统计方法,可以用来预测连续变量,如销售额。本文将使用 Python 和 StatsModels 库来构建一个线性回归模型,并对模型的残差进行分析,以评估模型的准确性和可靠性。

环境准备

在开始之前,确保你已经安装了以下 Python 库:

- NumPy
- Pandas
- StatsModels
- Matplotlib
- Seaborn

你可以使用以下命令安装这些库:

bash
pip install numpy pandas statsmodels matplotlib seaborn

数据准备

我们需要一些数据来构建我们的模型。以下是一个简单的数据集,包含日期和销售额:

python
import pandas as pd

创建一个简单的数据集
data = {
'Date': pd.date_range(start='2021-01-01', periods=100, freq='D'),
'Sales': [100 + 10 i + 5 j for i in range(100) for j in range(5)]
}

df = pd.DataFrame(data)
df['Date'] = pd.to_datetime(df['Date'])
df.set_index('Date', inplace=True)

线性回归模型构建

接下来,我们将使用 StatsModels 库来构建一个线性回归模型。在这个例子中,我们将日期作为自变量,销售额作为因变量。

python
import statsmodels.api as sm

添加一个常数项到自变量中
X = sm.add_constant(df.index)

构建线性回归模型
model = sm.OLS(df['Sales'], X).fit()

打印模型摘要
print(model.summary())

残差分析

残差分析是评估线性回归模型性能的重要步骤。残差是实际观测值与模型预测值之间的差异。以下是如何计算和可视化残差:

python
计算残差
residuals = model.resid

可视化残差
import matplotlib.pyplot as plt
import seaborn as sns

plt.figure(figsize=(10, 6))
sns.residplot(x=model.fittedvalues, y=residuals, lowess=True, color='blue')
plt.title('Residuals vs Fitted')
plt.xlabel('Fitted Values')
plt.ylabel('Residuals')
plt.show()

残差分析结果解读

通过观察残差图,我们可以得出以下结论:

- 残差似乎没有明显的模式,这表明模型可能是一个好的线性模型。
- 残差没有明显的趋势,这意味着模型没有高阶项或非线性关系。
- 残差的分布大致对称,没有明显的偏斜。

残差诊断

为了进一步诊断模型,我们可以进行以下步骤:

1. 正态性检验:检查残差是否符合正态分布。
2. 异方差性检验:检查残差的方差是否恒定。

正态性检验

我们可以使用 Q-Q 图来检查残差的正态性。

python
sm.qqplot(residuals, line='s')
plt.show()

异方差性检验

我们可以使用 Breusch-Pagan 检验来检查异方差性。

python
from statsmodels.stats.diagnostic import het_breuschpagan

_, p, _, _ = het_breuschpagan(residuals, model.fittedvalues)
print('Breusch-Pagan p-value:', p)

如果 p 值小于显著性水平(例如 0.05),则拒绝同方差假设,表明存在异方差性。

结论

通过上述步骤,我们使用 Python 和 StatsModels 库构建了一个线性回归模型,并对模型的残差进行了分析。残差分析表明,我们的模型在预测销售额方面表现良好,没有明显的异方差性或非线性关系。这只是一个简单的例子,实际应用中可能需要更复杂的数据预处理和模型调整。

后续步骤

- 收集更多数据,包括可能影响销售额的其他因素。
- 使用交叉验证来评估模型的泛化能力。
- 尝试不同的模型,如岭回归或 LASSO 回归,以减少过拟合。
- 使用模型预测未来的销售额,并评估预测的准确性。

通过不断迭代和优化,我们可以构建一个更准确、更可靠的销售额预测模型。