求StatsModels多元回归的RSME和标准差

2024-10-04 03:25:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前有一个多元回归,它根据预期寿命和影响预期寿命的变量生成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

Tags: importapidfmodelaspdstatsmodelsformula
2条回答

听起来您是指使用均方根误差计算的残差的标准偏差。这为您提供了数据点从最佳拟合线的分布情况的度量。它经常被用作预测误差的度量

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

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

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

rmse_residuals = np.sqrt(modelfit.mse_resid)

您可以尝试以下方法:

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()

相关问题 更多 >