sul1 sensitivity

import os
import matplotlib.pyplot as plt

from sul1_utils import get_fitted_model, sobol_plots, sensitivity_plots, Model, plot_convergence, sul1_data
model = get_fitted_model(Model)
x, _, input_features, _ = sul1_data()

import SALib
from ai4water.postprocessing._sa import morris_plots
print(SALib.__version__)
********** Removing Examples with nan in labels  **********

***** Training *****
input_x shape:  (374, 6)
target shape:  (374, 1)
1.4.5
res = model.sensitivity_analysis(data=x,
                                 sampler="morris",
                                 analyzer=["sobol", "pawn", "morris", "rbd_fast"],
                                 sampler_kwds={"N": 20000}
                                )
sul1 sensitivity
total samples: 140000
Analyzing with sobol
Analyzing with pawn
Analyzing with morris
Analyzing with rbd_fast
morris_plots(res["morris"], show=True)
sul1 sensitivity
sobol_plots(res["sobol"])
  • sul1 sensitivity
  • sul1 sensitivity
sensitivity_plots("rbd_fast", res["rbd_fast"], show=True)
sul1 sensitivity
sensitivity_plots("pawn", res["pawn"], show=True)
sul1 sensitivity
res = model.sensitivity_analysis(data=x,
                                 sampler="fast_sampler",
                                 analyzer=["fast"],
                                 sampler_kwds={"N": 20000}
                                )
sul1 sensitivity
total samples: 120000
Analyzing with fast

convergence plots

results = {}
for n in [100, 200, 400, 800, 1600, 3200, 6400, 10_000, 20_000]:
    print(f"n is {n}")
    results[n] = model.sensitivity_analysis(
        data=x,
        sampler="morris",
        analyzer=["morris", "sobol", "pawn", "rbd_fast"],
        save_plots=False,
        sampler_kwds = {"N": n},
        analyzer_kwds = {'print_to_console': False},
        names = input_features
    )

plot_convergence(
    results, "morris", "mu_star",
    #labels=list(column_names.values()),
    leg_kws={"fontsize": 12},
    xlabel_kws={"fontsize": 12},
    ylabel_kws={"fontsize": 12},
    xticklabel_kws={"fontsize": 10},
    figsize=(8, 5)
)
plt.savefig(os.path.join(model.path, "morris_convergence.png"), bbox_inches="tight", dpi=300)
plt.tight_layout()
plt.show()

plot_convergence(results, "sobol", "ST",
                 leg_kws={"fontsize": 12},
                 xlabel_kws={"fontsize": 12},
                 ylabel_kws={"fontsize": 12},
                 xticklabel_kws={"fontsize": 10},
figsize=(8, 5)
                 )
plt.savefig(os.path.join(model.path, "sobol_convergence.png"), bbox_inches="tight", dpi=300)
plt.tight_layout()
plt.show()

plot_convergence(results, "pawn", "CV",
                 leg_kws={"fontsize": 12},
                 xlabel_kws={"fontsize": 12},
                 ylabel_kws={"fontsize": 12},
                 xticklabel_kws={"fontsize": 10},
                 figsize=(8, 5)
                 )
plt.savefig(os.path.join(model.path, "pawn_convergence.png"), bbox_inches="tight", dpi=300)
plt.tight_layout()
plt.show()


plot_convergence(results, "rbd_fast", "S1",
                 leg_kws={"fontsize": 12},
                 xlabel_kws={"fontsize": 12},
                 ylabel_kws={"fontsize": 12},
                 xticklabel_kws={"fontsize": 10},
                 figsize=(8, 5)
                 )
plt.savefig(os.path.join(model.path, "fast_convergence.png"), bbox_inches="tight", dpi=300)
plt.tight_layout()
plt.show()
  • Convergence of morris Sensitivity Analysis
  • Convergence of sobol Sensitivity Analysis
  • Convergence of pawn Sensitivity Analysis
  • Convergence of rbd_fast Sensitivity Analysis
n is 100
total samples: 700
Analyzing with morris
Analyzing with sobol
Analyzing with pawn
Analyzing with rbd_fast
n is 200
total samples: 1400
Analyzing with morris
Analyzing with sobol
Analyzing with pawn
Analyzing with rbd_fast
n is 400
total samples: 2800
Analyzing with morris
Analyzing with sobol
Analyzing with pawn
Analyzing with rbd_fast
n is 800
total samples: 5600
Analyzing with morris
Analyzing with sobol
Analyzing with pawn
Analyzing with rbd_fast
n is 1600
total samples: 11200
Analyzing with morris
Analyzing with sobol
Analyzing with pawn
Analyzing with rbd_fast
n is 3200
total samples: 22400
Analyzing with morris
Analyzing with sobol
Analyzing with pawn
Analyzing with rbd_fast
n is 6400
total samples: 44800
Analyzing with morris
Analyzing with sobol
Analyzing with pawn
Analyzing with rbd_fast
n is 10000
total samples: 70000
Analyzing with morris
Analyzing with sobol
Analyzing with pawn
Analyzing with rbd_fast
n is 20000
total samples: 140000
Analyzing with morris
Analyzing with sobol
Analyzing with pawn
Analyzing with rbd_fast

Total running time of the script: ( 0 minutes 41.131 seconds)

Gallery generated by Sphinx-Gallery