Skip to content

Virtual ages

Virtual Age

Compute the virtual age of the system, according to the quality of the intervention system (summarized in the rejuvenation parameter q) and the previous history of the system itself (reflected in current_virtual_age). Further, the mixed virtual age function from Ferreira et al. (2015) is considered, leading to a linear combination of Kijima Type I and Type II virtual age models.

Parameters:

Name Type Description Default
propagation

float Reflects the weight between Kijima Type I and Kijima Type II virtual age models intrinsic to the last intervention. 0 <= propagation <= 1 such that propagation = 1 leads to Kijima Type I and propagation = 0 leads to Kijima Type II.

required
q

float The rejuvenation parameter. It allows one to study the quality of the intervention system. If q = 0, one has the Weibull-based Renewal Process - RP (in which each intervention usually brings the system to an 'as good as new' - AGAN condition). If q = 1, one has the Weibull-based Non-Homogeneous Poisson Process - NHPP (in which each intervention usually brings the system to an 'as bad as old' - ABAO condition). On the other hand, if b > 1, then 0 < q < 1 might reflect that each intervention usually brings the system to an intermediate condition, between AGAN and ABAO. Further, either b < 1 and q > 1 or b > 1 and q < 0 might reflect the situations in which each intervention usually brings the system to a 'better than in its beginning' condition.

required
current_virtual_age

float The value of the virtual age underlying the system, reflecting its condition previously to x. If current_virtual_age is not determined, then it is assumed that the system is new, i.e. current_virtual_age = 0.

0
x

float The time since the last intervention.

0

Returns:

Type Description
dict

A dictionary containing: 'propagation': The input weight propagation 'virtual_age': The virtual age of the system at time x

Examples:

>>> virtual_age(propagation=0.5, q=0.8, current_virtual_age=2, x=3)
{'propagation': 0.5, 'virtualAge': 4.2}
References

Ferreira RJ, Firmino PRA, Cristino CT (2015): A Mixed Kijima Model Using the Weibull-Based Generalized Renewal Processes. PLoS ONE, 10(7), e0133772. https://doi.org/10.1371/journal.pone.0133772

Source code in wgrp/virtual_ages.py
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
def virtual_age(propagation, q, current_virtual_age=0, x=0) -> dict:
    """
    Virtual Age:
        Compute the virtual age of the system, according to the quality of the
        intervention system (summarized in the rejuvenation parameter `q`) and
        the previous history of the system itself (reflected in `current_virtual_age`).
        Further, the mixed virtual age function from Ferreira et al. (2015) is considered,
        leading to a linear combination of Kijima Type I and Type II virtual age models.

    Parameters:
        propagation : float
            Reflects the weight between Kijima Type I and Kijima Type II virtual age models
            intrinsic to the last intervention. `0 <= propagation <= 1` such that
            `propagation = 1` leads to Kijima Type I and `propagation = 0` leads to Kijima Type II.
        q : float
            The rejuvenation parameter. It allows one to study the quality of the intervention system.
            If `q = 0`, one has the Weibull-based Renewal Process - RP (in which each intervention
            usually brings the system to an 'as good as new' - AGAN condition). If `q = 1`,
            one has the Weibull-based Non-Homogeneous Poisson Process - NHPP (in which each
            intervention usually brings the system to an 'as bad as old' - ABAO condition). On the other hand,
            if `b > 1`, then `0 < q < 1` might reflect that each intervention usually brings the system
            to an intermediate condition, between AGAN and ABAO. Further, either `b < 1` and `q > 1`
            or `b > 1` and `q < 0` might reflect the situations in which each intervention usually
            brings the system to a 'better than in its beginning' condition.
        current_virtual_age : float
            The value of the virtual age underlying the system, reflecting its condition
            previously to `x`. If `current_virtual_age` is not determined, then it is assumed
            that the system is new, i.e. `current_virtual_age = 0`.
        x : float
            The time since the last intervention.

    Returns:
        A dictionary containing:
            'propagation': The input weight `propagation`
            'virtual_age': The virtual age of the system at time `x`

    Examples:
        >>> virtual_age(propagation=0.5, q=0.8, current_virtual_age=2, x=3)
        {'propagation': 0.5, 'virtualAge': 4.2}

    References:
        Ferreira RJ, Firmino PRA, Cristino CT (2015):
        A Mixed Kijima Model Using the Weibull-Based Generalized Renewal Processes.
        PLoS ONE, 10(7), e0133772.
        https://doi.org/10.1371/journal.pone.0133772

    """
    KijimaI = current_virtual_age + q * x
    KijimaII = q * (current_virtual_age + x)
    virtualAge = propagation * KijimaI + (1 - propagation) * KijimaII
    return {'propagation': propagation, 'virtualAge': virtualAge}