Skip to content

foapy.characteristics.ma.periodicity

periodicity(intervals, dtype=None)

Calculates periodicity of the intervals grouped by congeneric sequence.

\[ \left[ \tau_j \right]_{1 \le j \le m} = \left[ \left( \prod_{i=1}^{n_j} \Delta_{ij} \right)^{1/n_j} * \frac{ n_j }{ \sum_{i=1}^{n_j} \Delta_{ij} } \right]_{1 \le j \le m} \]

where \( \Delta_{ij} \) represents \(i\)-th interval of \(j\)-th congeneric intervals array, \( n_j \) is the total number of intervals in \(j\)-th congeneric intervals array and \(m\) is number of congeneric intervals arrays.

Parameters:

Name Type Description Default

intervals

array_like

An array of congeneric intervals array

required

dtype

dtype

The dtype of the output

None

Returns:

Type Description
array

An array of the periodicity of congeneric intervals.

Examples:

Calculate the periodicity of a sequence.

1
2
3
4
5
6
7
8
9
import foapy
import numpy as np

source = np.array(['a', 'b', 'a', 'c', 'a', 'd'])
order = foapy.ma.order(source)
intervals = foapy.ma.intervals(order, foapy.binding.start, foapy.mode.normal)
result = foapy.characteristics.ma.periodicity(intervals)
print(result)
# [0.95244063 1.         1.         1.        ]

Calculate the periodicity of congeneric intervals of a sequence.

import foapy

X = []
X.append([1, 1, 4, 4])
X.append([3, 1, 3])
X.append([5, 3, 1])

result = foapy.characteristics.ma.periodicity(X)
print(result)
# [0.8        0.8914645  0.82207069]
Source code in .tox/docs-deploy/lib/python3.11/site-packages/foapy/characteristics/ma/_periodicity.py
def periodicity(intervals, dtype=None):
    """
    Calculates periodicity of the intervals grouped by congeneric sequence.

    $$
    \\left[ \\tau_j \\right]_{1 \\le j \\le m} =
    \\left[
    \\left( \\prod_{i=1}^{n_j} \\Delta_{ij} \\right)^{1/n_j} *
    \\frac{ n_j }{ \\sum_{i=1}^{n_j} \\Delta_{ij} }
    \\right]_{1 \\le j \\le m}
    $$

    where \\( \\Delta_{ij} \\) represents $i$-th interval of $j$-th
    congeneric intervals array, \\( n_j \\) is the total
    number of intervals in $j$-th congeneric intervals array
    and $m$ is number of congeneric intervals arrays.

    Parameters
    ----------
    intervals : array_like
        An array of congeneric intervals array
    dtype : dtype, optional
        The dtype of the output

    Returns
    -------
    : array
        An array of the periodicity of congeneric intervals.

    Examples
    --------

    Calculate the periodicity of a sequence.

    ``` py linenums="1"
    import foapy
    import numpy as np

    source = np.array(['a', 'b', 'a', 'c', 'a', 'd'])
    order = foapy.ma.order(source)
    intervals = foapy.ma.intervals(order, foapy.binding.start, foapy.mode.normal)
    result = foapy.characteristics.ma.periodicity(intervals)
    print(result)
    # [0.95244063 1.         1.         1.        ]
    ```

    Calculate the periodicity of congeneric intervals of a sequence.

    ``` py linenums="1"
    import foapy

    X = []
    X.append([1, 1, 4, 4])
    X.append([3, 1, 3])
    X.append([5, 3, 1])

    result = foapy.characteristics.ma.periodicity(X)
    print(result)
    # [0.8        0.8914645  0.82207069]
    ```
    """  # noqa: W605

    from foapy.characteristics.ma import arithmetic_mean, geometric_mean

    geometric_mean_seq = geometric_mean(intervals, dtype=dtype)
    arithmetic_mean_seq = arithmetic_mean(intervals, dtype=dtype)
    return np.divide(
        geometric_mean_seq,
        arithmetic_mean_seq,
        where=arithmetic_mean_seq != 0.0,
        dtype=dtype,
    )