1function RankTable = getSensitivityRanking(self, params, reward)
2% RANKTABLE = GETSENSITIVITYRANKING(PARAMS, REWARD)
4% Rank model parameters by their influence on a steady-state reward, as in
5% Trivedi and Bobbio (2017), Table 9.3.
7% Both
the unscaled sensitivity of Eq. (9.79) and
the scaled sensitivity of
8% Eq. (9.80) are reported. The ranking
is by descending absolute scaled
9% sensitivity, since that
is the comparison
the book makes:
the scaled form
10%
is dimensionless, so it
is the one that can be compared across parameters
11% measured in different units. The sign
is retained in
the table because it
12% says whether increasing a parameter helps or hurts.
14% @param params Cell array of parameter structs, see SolverCTMC.getSensitivity
15% @param reward Reward rate vector or handle over
the state space
16% @
return RankTable Table with columns Parameter, Value, Sens, ScaledSens, sorted
18% Copyright (c) 2012-2026, Imperial College London
22 line_error(mfilename,
'params must be a cell array of parameter structs');
24if nargin < 3 || isempty(reward)
25 line_error(mfilename,
'a reward is required to rank parameters');
29Parameter = cell(L, 1);
32ScaledSens = zeros(L, 1);
36 if isfield(p,
'name') && ~isempty(p.name)
37 Parameter{l} = p.name;
39 Parameter{l} = sprintf(
'theta%d', l);
41 [S, SS] = self.getSensitivity(p, reward);
47[~, ord] = sort(abs(ScaledSens),
'descend');
48Parameter = categorical(Parameter(ord));
51ScaledSens = ScaledSens(ord);
53RankTable = table(Parameter, Value, Sens, ScaledSens);