回归模型 statsmodel python

Hen*_*Hub 3 python statistics linear-regression statsmodels

这更多是一个统计问题,因为代码运行良好,但我正在学习 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()
Run Code Online (Sandbox Code Playgroud)

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

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

在此输入图像描述

编辑包括多元回归表 在此输入图像描述

Scr*_*urr 6

是否可以使用 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)
Run Code Online (Sandbox Code Playgroud)

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

5.489 和 6.373 值是 95% 置信区间的置信界限。界限是根据系数添加或减去标准误差乘以与 95% 置信区间相关的 t 统计量来简单计算的。

t 统计量取决于您的样本大小,在您的情况下为 53,因此您的自由度为 52。使用t 表,这意味着对于 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
Run Code Online (Sandbox Code Playgroud)

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

对您的评论的补充回复:

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

现在查看您的模型摘要,两个模型都拟合得很好,尤其是第一个模型,因为调整后的 R 平方值很高。第二个模型可能会有潜在的改进(可以尝试自变量的不同组合),但除非您进行实验,否则您不会知道。最终,没有正确和错误的模型。归根结底就是建立几个模型并对它们进行比较以获得最好的模型。我还将链接一篇文章,解释回归模型的一些拟合优度指标。

至于置信区间,我将链接这篇文章,因为回答问题的人有创建置信区间的代码。您需要查看他在代码中创建的predict_mean_ci_low和。predict_mean_ci_high这两个变量将为您提供每次观察的置信区间,从那里,您可以通过从预测中减去较低的 CI 或从较高的 CI 中减去您的预测来计算 +/- therms/kWh。