回归模型统计信息model 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很高,但能不能用统计模型求出预测的均方根误差(RMSE)?
我也在尝试研究是否可以用置信区间估计抽样分布。如果我正确地解释了截取硬盘5.9309的表,标准误差为0.220,p值低0.000,我认为97.5%的置信区间是硬盘的值(或者它是我的因变量TERM?)将在5.489到6.373之间??或者我认为百分比可以表示为~+-0.072%
编辑包含的多元回归表
解决方案
是否可以使用statsmodel计算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-STATISTICS或AIC/BIC。您可以决定使用哪个或哪些度量来评估拟合优度。对我来说,我通常使用调整后的R平方和/或RMSE,尽管RMSE更多的是用于与其他模型进行比较的相对度量。
现在看一下您的模型摘要,两个模型都很适合,特别是第一个模型,给出了较高的调整后的R平方值。第二个模型可能会有潜在的改进(可能会尝试不同的自变量组合),但除非您进行实验,否则您不会知道。归根结底,没有对错的模式。归根结底,就是建造几个模型,并对它们进行比较,以获得最好的一个。我还将链接一个article,它解释了回归模型的一些拟合优度。 至于置信区间,我将链接此SO post,因为回答问题的人有创建置信区间的代码。您需要查看他在代码中创建的predict_mean_ci_low
和predict_mean_ci_high
。这两个变量将为您提供每个观测值的置信区间,在此基础上,您可以通过从预测中减去较低的CI或从较高的CI中减去预测来计算+/-温度/千瓦时。
相关文章