回归模型统计信息model python [英] regression model statsmodel python

查看:33
本文介绍了回归模型统计信息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_lowpredict_mean_ci_high。这两个变量将为您提供每个观测值的置信区间,在此基础上,您可以通过从预测中减去较低的CI或从较高的CI中减去预测来计算+/-温度/千瓦时。

这篇关于回归模型统计信息model python的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆