skpro.utils.plotting.plot_crossplot_std#

skpro.utils.plotting.plot_crossplot_std(y_true, y_pred, ax=None)[source]#

Probabilistic cross-plot for regression, error vs predictive standard deviation.

Plots:

  • x-axis: absolute error samples \(|y_i - \widehat{y}_i.\mu|\)

  • y-axis: predictive standard deviation \(\widehat{y}_i.\sigma\), of the prediction \(\widehat{y}_i\) corresponding to \(y_i\)

Parameters:
y_truearray-like, [n_samples, n_targets]

Ground truth values

y_predskpro distribution, or predict_var return, [n_samples, n_targets]

Predicted values

axmatplotlib axes, optional

Axes to plot on, if None, a new figure is created and returned

Returns:
axmatplotlib axes

Axes containing the plot If ax was None, a new figure is created and returned If ax was not None, the same ax is returned with plot added

Examples

>>> from skpro.utils.plotting import plot_crossplot_std
>>> from skpro.regression.residual import ResidualDouble
>>> from sklearn.ensemble import RandomForestRegressor
>>> from sklearn.linear_model import LinearRegression
>>> from sklearn.datasets import load_diabetes
>>>
>>> X, y = load_diabetes(return_X_y=True, as_frame=True)
>>> reg_mean = LinearRegression()
>>> reg_resid = RandomForestRegressor()
>>> reg_proba = ResidualDouble(reg_mean, reg_resid)
>>>
>>> reg_proba.fit(X, y)
ResidualDouble(...)
>>> y_pred = reg_proba.predict_proba(X)
>>> plot_crossplot_std(y, y_pred)