Démarrage rapide - Spline cubique croissante

Ce premier exemple montre comment utiliser une spline cubique avec contrainte de monotonie.

Le code complet

examples/quick_start.py
    import numpy as np
    from BsplineQuantRegpy import SplineCubicQuant
    import matplotlib.pyplot as plt

    # Generate data
    x = np.linspace(0, 1, 100)
    y = 3*x + 0.2*np.sin(10*np.pi*x) + 0.2*np.random.randn(100)
    knots = np.quantile(x, np.linspace(0, 1, 11))

    # Fit with monotonicity constraint
    result = SplineCubicQuant(x, y, knots, tau=0.5, monot=1)
    # Fit without monotonicity constraint (uncomment to test)
    #result = SplineCubicQuant(x, y, knots, tau=0.5, monot=0)
    # Evaluate
    x_eval = np.linspace(0, 1, 200)
    y_eval = result(x_eval)

    plt.plot(x,y,"*r")
    plt.plot(x_eval,y_eval,color='black')
    plt.show()

Explication

  1. Importation : On importe SplineCubicQuant pour la régression avec splines cubiques.

  2. Génération des données : - 100 points sur l’intervalle [0, 1] - La fonction cible est \(3x + 0.2\sin(10\pi x)\) avec du bruit

  3. Définition des nœuds : 11 nœuds placés aux quantiles de x

  4. Ajustement : Appel à SplineCubicQuant avec monot=1 pour imposer une contrainte de croissance

  5. Visualisation : Affichage des données et de la courbe ajustée

Résultat

L’exécution produit un graphique montrant les données en rouge et la spline ajustée en noir, respectant la contrainte de monotonie.

Pour essayer sans contrainte

Décommentez la ligne : .. code-block:: python

#result = SplineCubicQuant(x, y, knots, tau=0.5, monot=0)