gcisens
Variance-based (Sobol') sensitivity analysis and Sensitivity Discrepancy Report for rule-based MCDA models — ESP-COMET and ESP-SPOTIS.
Criteria weights are the standard explanation of MCDA models, but they capture
only linear effects. gcisens checks whether the weights of a model faithfully
represent its global behaviour, and flags criteria whose influence is hidden in
nonlinearities and interactions.
Based on:
- Śniegowski, Świder, Shekhovtsov, Sałabun — Detecting Hidden Criterion Influence When Weights Mislead in Rule-Based Decision Support Systems (KES 2026)
- Sałabun, Shekhovtsov, Wątróbski — Variance-Based Analysis of Global Criteria Importance in the ESP-COMET Method (ISD 2025)
Install
pip install gcisens
Quick start
import numpy as np
from gcisens import esp_comet, SobolStudy
bounds = np.array([[18, 60], [1, 29], [1009, 19999]], float)
esps = np.array([[25, 25, 2000]]) # expected solution point(s)
model = esp_comet(esps=esps, bounds=bounds,
criteria_names=["Age", "Distance", "Income"])
result = SobolStudy(model, n_samples=2048, seed=42).run()
result.table() # weights, S1, ST, ranks, category per criterion
result.diagnosis() # Sensitivity Discrepancy Report
result.summary() # R², ΣS1, ΣST, Spearman correlations
result.plot_indices() # w vs S1 vs ST bar chart
result.to_latex() # publication-ready table
Already know pymcdm? Build the model the pymcdm way — the classes are re-exported 1:1 and both styles mix freely:
from gcisens import COMET, ESPExpert, SobolStudy
expert = ESPExpert(esps=esps, bounds=bounds)
model = COMET(expert.make_cvalues_psi(), expert)
result = SobolStudy(model, bounds=bounds).run()
What you get
| Output | Method |
|---|---|
| Global weights (regression on characteristic objects) + R² | result.summary() |
| Local weights at a reference point | result.run(reference_point=...) |
| Sobol' indices S1 / ST / S2 with confidence intervals | result.table(), result.s2_table() |
| Per-criterion diagnosis: hidden influence, interaction dominance, moderate discrepancy, confirmed transparency | result.diagnosis() |
| Validation against labels (Δmean, lift@k) | result.validate(X, labels) |
| Plots (pymcdm style): indices, S2 heatmap, ranking flows, decision surface with ESPs, score distributions | result.plot_*() |
| Exports: CSV, LaTeX (article layout), standalone HTML report | result.to_csv/to_latex/to_html |
| Side-by-side comparison of configurations | compare({...}).table() |
Supported models
| Model | Declared weights | Notes |
|---|---|---|
esp_comet(esps, bounds) / any COMET |
extracted by regression | multiple ESPs supported |
esp_spotis(esp, bounds, weights) / any SPOTIS |
provided by the user | scores are distances (lower = closer) |
any callable f(X) -> scores |
optional | fallback for other methods |
Diagnosis thresholds are configurable via DiagnosisThresholds (defaults follow
the KES 2026 article).
Examples
examples/article_esp_comet.py reproduces the three experiments of the KES 2026
article on the bundled IBM HR Attrition dataset.
License
MIT
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file gcisens-0.1.0.tar.gz.
File metadata
- Download URL: gcisens-0.1.0.tar.gz
- Upload date:
- Size: 81.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c018f039cacd43bebc665defd088998388b63e2538d1bd796cdb94d2405b78f6
|
|
| MD5 |
154db2ffe5b7c51ab39c153bd0533dc4
|
|
| BLAKE2b-256 |
807766159c70c301f5993fe55b77bf9ddf313f7c1e1be030ab0fcf6ec8aaec06
|
File details
Details for the file gcisens-0.1.0-py3-none-any.whl.
File metadata
- Download URL: gcisens-0.1.0-py3-none-any.whl
- Upload date:
- Size: 28.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d731d39d0ed6444a0e80f3cdab84e56868d0f299acf7f0e5f6618a4610626889
|
|
| MD5 |
f378d3e29e7378dcd6ec3e6ebda787ef
|
|
| BLAKE2b-256 |
6a711846da025cea1f9fde8e85352a9ed49e7ede22b96e2b126e12680395731e
|