回归模型统计模块Python实现

3

这更像是一个统计问题,因为代码已经正常工作了,但我正在学习在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的表格,标准误差为0.220,p值低于0.000,我认为在97.5%的置信区间内,HDD的值(或者是我的因变量Therm?)将介于5.489和6.373之间?或者我认为以百分比表示可能表达为〜±0.072%

enter image description here

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

1个回答

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)

关于结果的解释,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平方和/或RMSE,尽管RMSE更多地是相对指标,用于与其他模型进行比较。
现在看看您的模型摘要,两个模型都很好,特别是第一个模型,因为其高的调整后R平方值。第二个模型可能会有潜在改进(可以尝试不同的自变量组合),但除非您进行实验,否则您将无法知道。最终,并没有正确或错误的模型。这只是建立几个模型并进行比较以获得最佳模型的问题。我还会链接一篇文章,解释回归模型的一些拟合度指标。
关于置信区间,我会链接这个 SO post,因为回答问题的人有创建置信区间的代码。你需要查看他在代码中创建的 predict_mean_ci_lowpredict_mean_ci_high。这两个变量将为您提供每个观测值的置信区间,从那里,您可以通过从您的预测中减去较低的CI或从上限CI中减去您的预测来计算+/- therms/kWh。

你好,感谢您的回复,这正是我需要学习的。您能否在帖子中评论/编辑另外两个问题?我已经编辑了我的帖子,包括多元回归输出结果,您能否对拟合优度进行评论?简单线性回归和多元回归都是建立燃料使用模型。Therm是天然气能量单位,HDD是工程单位,用于确定室外温度有多冷。多元回归是以千瓦时为单位的电力,通常与室外空气温度相关性不强。我的第二个问题是,工程师总是包括置信区间和模型精度。 - bbartling
模型中所述的精度始终以能量单位(因变量)表示,始终为+- therms/kWh。我可以根据statsmodel输出确定精度吗?这是为了声明模型中的不确定性...感谢您花时间帮助我理解。 - bbartling
当我查看多元回归表时,所有系数都具有较低的P值和标准误差...还有什么可以说明拟合的好坏呢? - bbartling
@HenryHub 我已编辑我的回复,以回答你的额外问题! :) - Scratch'N'Purr
喵,你能帮我看一下这篇文章吗?https://stackoverflow.com/questions/52635962/python-statsmodels-linear-regression - bbartling

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接