The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.
Importance measures quantify how much a component matters to system
reliability. Different definitions answer different questions.
dist.structure provides four classical measures:
| Measure | Question |
|---|---|
| Structural | How often is j pivotal across all states of the other components? |
| Birnbaum (reliability) | At component reliabilities p, how much does dR/dp_j change R? |
| Criticality | Given the system failed by t, what fraction attributable to j failing and being critical? |
| Vesely-Fussell | Given the system failed by t, what is the probability that some cut set containing j is fully failed? |
Each reduces to a closed form in simple topologies but diverges on complex ones. The bridge network is a canonical case where all four matter, so we’ll use it throughout.
sys <- bridge_dist(replicate(5, exponential(1), simplify = FALSE))
min_paths(sys)
#> [[1]]
#> [1] 1 4
#>
#> [[2]]
#> [1] 2 5
#>
#> [[3]]
#> [1] 1 3 5
#>
#> [[4]]
#> [1] 2 3 4
min_cuts(sys)
#> [[1]]
#> [1] 1 2
#>
#> [[2]]
#> [1] 1 3 5
#>
#> [[3]]
#> [1] 2 3 4
#>
#> [[4]]
#> [1] 4 5Components 1 and 2 appear in two minimal paths each; components 4 and
5 likewise. Component 3 (the cross-link) appears in two paths but not
the “primary” ones {1,4} and {2,5}.
Structural importance is purely topological: it ignores component distributions.
For the bridge, components 1, 2, 4, 5 are structurally equivalent; component 3 is less structurally important (smaller fraction of pivotal states).
Birnbaum importance is dR/dp_j at given component
reliabilities p:
p <- 0.9
sapply(1:5, function(j) birnbaum_importance(sys, j, p))
#> [1] 0.1062 0.1062 0.0162 0.1062 0.1062At iid p = 0.9, the ordering agrees with structural importance (same symmetry). Where they diverge is at non-iid p or time-varying p.
Criticality importance turns Birnbaum into a time-varying quantity by
plugging in p_j(t) = S_j(t):
t_vals <- c(0.1, 0.5, 1, 2)
sapply(t_vals, function(t) {
sapply(1:5, function(j) criticality_importance(sys, j, t))
})
#> [,1] [,2] [,3] [,4]
#> [1,] 0.49407384 0.4197486 0.30424486 0.1300665
#> [2,] 0.49407384 0.4197486 0.30424486 0.1300665
#> [3,] 0.07258585 0.1356168 0.09658171 0.0246675
#> [4,] 0.49407384 0.4197486 0.30424486 0.1300665
#> [5,] 0.49407384 0.4197486 0.30424486 0.1300665Each column is a time point; each row is a component. Read it as: “at time t, what fraction of system-failure probability is attributable to component j having failed AND being critical”.
At small t (high reliability), the breakdown looks like structural importance (because all components have similar F_j(t)). At larger t, the contributions of each component to system failure diverge.
Vesely-Fussell uses minimal cut sets instead of direct pivotality:
t0 <- 1
sapply(1:5, function(j) vesely_fussell_importance(sys, j, t0))
#> [1] 0.6957551 0.6957551 0.5710693 0.6957551 0.6957551Component j’s Vesely-Fussell importance at time t is the conditional probability that some minimal cut set containing j is fully failed, given that the system has failed by t. It tends to be larger than criticality importance for components that appear in small cuts.
# Build a comparison table at p = 0.9 and t s.t. S(t) = 0.9 for all components.
# For iid Exp(1), S(t) = 0.9 -> t = -log(0.9)
t_star <- -log(0.9)
tab <- data.frame(
j = 1:5,
structural = sapply(1:5, function(j) structural_importance(sys, j)),
birnbaum = sapply(1:5, function(j) birnbaum_importance(sys, j, 0.9)),
criticality = sapply(1:5, function(j) criticality_importance(sys, j, t_star)),
vesely_fussell = sapply(1:5, function(j) vesely_fussell_importance(sys, j, t_star))
)
tab
#> j structural birnbaum criticality vesely_fussell
#> 1 1 0.375 0.1062 0.49349442 0.50650558
#> 2 2 0.375 0.1062 0.49349442 0.50650558
#> 3 3 0.125 0.0162 0.07527881 0.09247212
#> 4 4 0.375 0.1062 0.49349442 0.50650558
#> 5 5 0.375 0.1062 0.49349442 0.50650558For the bridge at iid p = 0.9 (equivalent to t = t_star), all four measures agree on the ordering (components 1, 2, 4, 5 identical; component 3 different). Under heterogeneous reliabilities the measures can rank components differently.
Some importance values have simple closed forms worth remembering:
# Series: Birnbaum importance of j equals product of the OTHER p's.
series3 <- series_dist(replicate(3, exponential(1), simplify = FALSE))
p_vec <- c(0.9, 0.8, 0.7)
birnbaum_importance(series3, j = 1, p = p_vec)
#> [1] 0.56
prod(p_vec[-1])
#> [1] 0.56p and ask which component contributes most to
dR/dp.All four are computed from the same primitives (phi,
min_cuts, the component survivals and failures) and the
differences are in which event you condition on and which counting you
do.
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.