可视化模型拟合

使用 Python 中的 statsmodels 进行回归入门

Maarten Van den Broeck

Content Developer at DataCamp

良好拟合的残差性质

  • 残差近似正态分布
  • 残差均值为零
使用 Python 中的 statsmodels 进行回归入门

再次看鲷鱼与鲈鱼

鲷鱼:"好"的模型

mdl_bream = ols("mass_g ~ length_cm", data=bream).fit()

此前展示过的鲷鱼质量与长度的散点图及趋势线。

鲈鱼:"差"的模型

mdl_perch = ols("mass_g ~ length_cm", data=perch).fit()

此前展示过的鲈鱼质量与长度的散点图及趋势线。

使用 Python 中的 statsmodels 进行回归入门

残差 vs. 拟合值

鲷鱼

鲷鱼模型残差与拟合值的散点图,带LOWESS趋势线。趋势线靠近x轴。

鲈鱼

鲈鱼模型残差与拟合值的散点图,带LOWESS趋势线。趋势线呈V形。

使用 Python 中的 statsmodels 进行回归入门

Q-Q图

鲷鱼

鲷鱼模型标准化残差与理论分位数的Q-Q图。除两个离群点外,点几乎沿等值直线分布。

鲈鱼

鲈鱼模型标准化残差与理论分位数的Q-Q图。点未紧贴等值直线,尤其在图右侧偏离明显。

使用 Python 中的 statsmodels 进行回归入门

尺度-位置图

鲷鱼(Bream)

鲷鱼模型的平方根标准化残差与拟合值的散点图,带LOWESS趋势线。随着拟合值增加,趋势线略有上升。

鲈鱼(Perch)

鲈鱼模型的平方根标准化残差与拟合值的散点图,带LOWESS趋势线。随着拟合值增加,趋势线上下波动多次。

使用 Python 中的 statsmodels 进行回归入门

residplot()

sns.residplot(x="length_cm", y="mass_g", data=bream, lowess=True)
plt.xlabel("Fitted values")
plt.ylabel("Residuals")

鲷鱼模型残差与拟合值的散点图,带LOWESS趋势线。趋势线靠近x轴。

使用 Python 中的 statsmodels 进行回归入门

qqplot()

from statsmodels.api import qqplot
qqplot(data=mdl_bream.resid, fit=True, line="45")

鲷鱼QQ图,见前文

使用 Python 中的 statsmodels 进行回归入门

尺度-位置图

model_norm_residuals_bream = mdl_bream.get_influence().resid_studentized_internal

model_norm_residuals_abs_sqrt_bream = np.sqrt(np.abs(model_norm_residuals_bream))
sns.regplot(x=mdl_bream.fittedvalues, y=model_norm_residuals_abs_sqrt_bream, ci=None, lowess=True)
plt.xlabel("Fitted values") plt.ylabel("Sqrt of abs val of stdized residuals")

鲷鱼尺度-位置图,见前文

使用 Python 中的 statsmodels 进行回归入门

Passons à la pratique !

使用 Python 中的 statsmodels 进行回归入门

Preparing Video For Download...