Note
Go to the end to download the full example code or to run this example in your browser via Binder
tetx sensitivity
import os
import pandas as pd
import matplotlib.pyplot as plt
from tetx_utils import get_fitted_model, sobol_plots, sensitivity_plots, Model, plot_convergence, tetx_data
model = get_fitted_model(Model)
x, _, input_features, _ = tetx_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}
)

total samples: 140000
Analyzing with sobol
Analyzing with pawn
Analyzing with morris
Analyzing with rbd_fast
morris_plots(res["morris"], show=True)

sobol_plots(res["sobol"])
sensitivity_plots("rbd_fast", res["rbd_fast"], show=True)

sensitivity_plots("pawn", res["pawn"], show=True)

res = model.sensitivity_analysis(data=x,
sampler="fast_sampler",
analyzer=["fast"],
sampler_kwds={"N": 20000}
)

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()
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 43.944 seconds)





