Modelpassing visualiseren

Introductie tot regressie met statsmodels in Python

Maarten Van den Broeck

Content Developer at DataCamp

Goede fit: residu-eigenschappen

  • Residuen zijn normaal verdeeld
  • Het gemiddelde van de residuen is nul
Introductie tot regressie met statsmodels in Python

Weer brasem en baars

Brasem: het “goede” model

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

Het eerder getoonde spreidingsdiagram van brasemmassa versus lengte, met trendlijn.

Baars: het “slechte” model

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

Het eerder getoonde spreidingsdiagram van baarsmassa’s versus lengte, met trendlijn.

Introductie tot regressie met statsmodels in Python

Residuen vs. gefitte waarden

Brasem

Een spreidingsdiagram van residuen versus gefitte waarden voor het brasemmodel, met een LOWESS-trendlijn. De trendlijn blijft dicht bij de x-as.

Baars

Een spreidingsdiagram van residuen versus gefitte waarden voor het baarsmodel, met een LOWESS-trendlijn. De trendlijn vormt een V-vorm.

Introductie tot regressie met statsmodels in Python

Q-Q-plot

Brasem

Een Q-Q-plot van gestandaardiseerde residuen van het brasemmodel versus theoretische kwantielen. De punten volgen grotendeels de lijn waar residuen en kwantielen gelijk zijn, op twee uitschieters na.

Baars

Een Q-Q-plot van gestandaardiseerde residuen van het baarsmodel versus theoretische kwantielen. De punten volgen de gelijkheidslijn niet goed, vooral rechts in de plot.

Introductie tot regressie met statsmodels in Python

Scale-location-plot

Brasem

Een spreidingsdiagram van de vierkantswortel van gestandaardiseerde residuen versus gefitte waarden voor het brasemmodel, met een LOWESS-trendlijn. De trendlijn stijgt licht naarmate de gefitte waarden toenemen.

Baars

Een spreidingsdiagram van de vierkantswortel van gestandaardiseerde residuen versus gefitte waarden voor het baarsmodel, met een LOWESS-trendlijn. De trendlijn gaat meerdere keren op en neer naarmate de gefitte waarden toenemen.

Introductie tot regressie met statsmodels in Python

residplot()

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

Een spreidingsdiagram van residuen versus gefitte waarden voor het brasemmodel, met een LOWESS-trendlijn. De trendlijn blijft dicht bij de x-as.

Introductie tot regressie met statsmodels in Python

qqplot()

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

Brasem QQ-plot, zoals eerder gezien

Introductie tot regressie met statsmodels in Python

Scale-location-plot

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

Brasem scale-location-plot, zoals eerder gezien

Introductie tot regressie met statsmodels in Python

Laten we oefenen!

Introductie tot regressie met statsmodels in Python

Preparing Video For Download...