Decision Support
evidencelib includes pignistic transforms for decision support.
m.pignistic()
m.pignistic_of(A)
m.pignistic_regions()
m.decision()
decision() returns the singleton with the largest value from pignistic().
It is a convenience method, not a replacement for application-specific utility,
risk, or loss functions.
When a mass function contains empty-set conflict, for example after
conjunctive() / smets(), pignistic() excludes the empty proposition and
rescales the remaining scores by 1 - m(empty) by default. Pass
normalize_conflict=False if you need raw unnormalized TBM scores instead.
DST
In DST, singleton hypotheses are disjoint. pignistic() returns a probability
distribution over singletons.
frame = Frame.dst(["A", "B"])
A, B = frame.symbols()
m = frame.mass({A: 0.4, B: 0.2, A | B: 0.4})
assert sum(m.pignistic().values()) == 1.0
Use this output when: a downstream system expects one probability per exclusive hypothesis.
DSmT
In free or hybrid DSmT, singleton hypotheses can overlap. pignistic() returns
singleton event scores useful for ranking, but the scores do not have to sum to
one.
Use pignistic_regions() if you need a probability distribution over disjoint
Venn regions.
frame = Frame.dsmt(["A", "B"])
A, B = frame.symbols()
m = frame.mass({A: 0.2, B: 0.3, A & B: 0.4, A | B: 0.1})
scores = m.pignistic()
intersection_score = m.pignistic_of(A & B)
regions = m.pignistic_regions()
pignistic_of(A) implements the generalized pignistic transformation for any
proposition using the DSm-cardinality ratio C_M(X & A) / C_M(X). The singleton
dictionary returned by pignistic() is a convenience view built from the same
calculation.
pignistic_regions() uses the same conflict normalization behavior as
pignistic().
regions is useful when the downstream calculation requires mutually exclusive
states.
Use this output when: you need probabilities over disjoint states rather than scores for overlapping events.