Skip to main content

gcisens

Documentation Status

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

gcisens-0.1.0.tar.gz (81.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

gcisens-0.1.0-py3-none-any.whl (28.3 kB view details)

Uploaded Python 3

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

Hashes for gcisens-0.1.0.tar.gz
Algorithm Hash digest
SHA256 c018f039cacd43bebc665defd088998388b63e2538d1bd796cdb94d2405b78f6
MD5 154db2ffe5b7c51ab39c153bd0533dc4
BLAKE2b-256 807766159c70c301f5993fe55b77bf9ddf313f7c1e1be030ab0fcf6ec8aaec06

See more details on using hashes here.

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

Hashes for gcisens-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d731d39d0ed6444a0e80f3cdab84e56868d0f299acf7f0e5f6618a4610626889
MD5 f378d3e29e7378dcd6ec3e6ebda787ef
BLAKE2b-256 6a711846da025cea1f9fde8e85352a9ed49e7ede22b96e2b126e12680395731e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page