【问题标题】:Find RSME and Standard Deviation of a StatsModels Multiple Regression查找 StatsModels 多元回归的 RSME 和标准差
【发布时间】:2021-10-02 13:40:09
【问题描述】:

我目前有一个多元回归,它根据预期寿命和影响它的变量生成 OLS 汇总,但不包括 RMSE 或标准偏差。 statsmodels 是否有 rsme 库,有没有办法计算我的代码的标准差?

我找到了这个问题的前一个例子:regression model statsmodel python,我阅读了 statsmodels 信息页面:https://www.statsmodels.org/stable/generated/statsmodels.tools.eval_measures.rmse.html 和测试我仍然无法解决这个问题。

import pandas as pd
import openpyxl
import statsmodels.formula.api as smf
import statsmodels.formula.api as ols

df = pd.read_excel(C:/Users/File1.xlsx, sheet_name = 'States')

dfME = df[(df[State] == "Maine")]

pd.set_option('display.max_columns', None)

dfME.head()

model = smf.ols(Life Expectancy ~ Race + Age + Weight + C(Pets), data = dfME) 
modelfit = model.fit()
modelfit.summary

【问题讨论】:

  • 对于 rmse,您可以在我的回答中使用另一个 statsmodels 函数。你想计算什么标准差?
  • 我正在寻找每个州的预期寿命并查看我的代码,我已将其过滤到缅因州。我将做所有 50 个州,我需要找到每个州的标准偏差。对于我的分析来说,了解哪些状态与平均值的偏差较小和较大是很重要的。
  • 那么预期寿命的标准差?

标签: python pandas regression statsmodels standard-deviation


【解决方案1】:

你可以试试这样的:

from statsmodels.tools.eval_measures import rmse
X = dfME[["Race", "Age", "Weight", "C(Pets)"]]
rmse_result = rmse(dfME["Life Expectancy"], model.predict(X))

要获得预期寿命的标准差,您可以简单地使用:

stdev = dfME["Life Expectancy"].std()

【讨论】:

  • 这段代码给我一个错误:ValueError:形状(1,4)和(2,6)未对齐:4(dim 1)!= 2(dim 0)
  • @DayWalker - 查看我的编辑。您可能将 y 作为另一个变量。
  • 是否可以将其放入 for 循环中以使用上面的代码生成所有 50 个状态的标准开发?
【解决方案2】:

听起来您的意思是残差的标准偏差,它是使用均方根误差计算的。这使您可以衡量数据点与最佳拟合线的分布程度。它通常用作预测误差的度量。

Statsmodels 中的摘要留下了很多信息。幸运的是,Statsmodels 为我们提供了替代方案。您可以在此处找到可用属性和方法的列表:Regression Results

让我们使用代码中的变量赋值 modelfit。要查找残差的均方误差,请使用链接中的 Statsmodels 中的 mse_resid 方法。要找到残差的 RMSE(均方根误差),请使用 Numpy 中的平方根函数 sqrt 对均方误差求平方根。

因此可以使用以下代码找到残差的均方根误差:

rmse_residuals = np.sqrt(modelfit.mse_resid)

【讨论】:

  • 这很有帮助。我搜索了很多文档,但在任何地方都找不到 .mse_resid。我将在接下来的分析中大量使用这一点。
猜你喜欢
  • 2018-11-23
  • 2012-12-03
  • 1970-01-01
  • 2013-10-24
  • 1970-01-01
  • 1970-01-01
  • 2016-05-03
  • 2021-07-16
  • 2013-08-20
相关资源
最近更新 更多