回归模型状态模型python

regression model statsmodel python

这更像是一个统计问题,因为代码运行良好,但我正在 python 中学习回归建模。我在下面有一些代码和 statsmodel 来创建一个简单的线性回归模型:

import statsmodels.api as sm
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

ng = pd.read_csv('C:/Users/ben/ngDataBaseline.csv',  thousands=',', index_col='Date', parse_dates=True)

X = ng['HDD']
y = ng['Therm']

# Note the difference in argument order
model = sm.OLS(y, X).fit()

# Print out the statistics
model.summary()

我得到如下屏幕截图所示的输出。我正在尝试判断拟合优度,我知道 R^2 很高,但是是否可以使用 statsmodel 找到预测的均方根误差 (RMSE)?

我也在尝试研究是否可以估计具有置信区间的抽样分布。如果我为拦截 HDD 5.9309 正确解释 table,标准误差为 0.220,p 值低 0.000,并且我认为 97.5% 置信区间的 HDD 值(或者它是我的因变量 Therm?)将在 5.489 和 6.373 之间??或者我认为可以表示为 ~ +- 0.072%

的百分比

编辑包括多元回归table

是否可以使用 statsmodels 计算 RMSE?是的,但您必须首先使用您的模型生成预测,然后使用 rmse 方法。

from statsmodels.tools.eval_measures import rmse

# fit your model which you have already done

# now generate predictions
ypred = model.predict(X)

# calc rmse
rmse = rmse(y, ypred)

至于解释结果,HDD 不是截距。这是你的自变量。系数(例如重量)为 5.9309,标准误差为 0.220。该变量的 t 分数非常高,表明它是一个很好的预测变量,并且由于它很高,p 值非常小(接近 0)。

5.489 和 6.373 值是 95% 置信区间的置信界限。边界是根据标准误差乘以与系数的 95% 置信区间相关的 t 统计量的简单计算得出的。

t 统计量取决于您的样本量,在您的情况下为 53,因此您的自由度为 52。使用 t-table,这意味着对于 df=52 和置信度水平95%,t 统计量为 2.0066。因此边界可以手动计算如下:

lower: 5.9309 - (2.0066 x 0.220) = 5.498
upper: 5.9309 + (2.0066 x 0.220) = 6.372

当然,由于四舍五入会导致一些精度损失,但您可以看到手动计算与摘要中报告的内容非常接近。

对您的评论的补充回复:

您可以使用多种指标来评估拟合优度。其中之一是调整后的 R 平方统计量。其他是 RMSE、F 统计量或 AIC/BIC。由您决定使用哪个或哪些指标来评估拟合优度。对我来说,我通常使用调整后的 R 平方 and/or RMSE,尽管 RMSE 更多的是与其他模型进行比较的相对指标。

现在查看您的模型摘要,两个模型都非常适合,尤其是第一个模型具有高调整 R 平方值。第二个模型可能有潜在的改进(可能会尝试自变量的不同组合),但除非您进行实验,否则您不会知道。归根结底,没有对错之分。它只是归结为构建多个模型并比较它们以获得最佳模型。我还将 link 一个 article 来解释回归模型的一些拟合优度指标。

至于置信区间,我 link 这个 SO post 因为回答问题的人有创建置信区间的代码。您需要查看他在代码中创建的 predict_mean_ci_lowpredict_mean_ci_high。这两个变量将为您提供每次观察的置信区间,从那里,您可以通过从预测中减去较低的 CI 或从较高的 [=43] 中减去预测来计算 +/- therms/kWh =].