Source code for annotations.IVA.intervalvaluesanalysis

# -*- coding : UTF-8 -*-
"""
:filename: sppas.src.annotations.IVA.intervalvaluesanzlysis.py
:author:   Brigitte Bigi
:contact:  develop@sppas.org
:summary:  Eval descriptive stats of values of a tier into intervals

.. _This file is part of SPPAS: http://www.sppas.org/
..
    -------------------------------------------------------------------------

     ___   __    __    __    ___
    /     |  \  |  \  |  \  /              the automatic
    \__   |__/  |__/  |___| \__             annotation and
       \  |     |     |   |    \             analysis
    ___/  |     |     |   | ___/              of speech

    Copyright (C) 2011-2021  Brigitte Bigi
    Laboratoire Parole et Langage, Aix-en-Provence, France

    Use of this software is governed by the GNU Public License, version 3.

    SPPAS is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    SPPAS is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with SPPAS. If not, see <http://www.gnu.org/licenses/>.

    This banner notice must not be removed.

    -------------------------------------------------------------------------

"""

from sppas.src.calculus.stats.linregress import tga_linear_regression
from sppas.src.calculus.stats.descriptivesstats import sppasDescriptiveStatistics

# ----------------------------------------------------------------------------


[docs]class IntervalValuesAnalysis(sppasDescriptiveStatistics): """Interval Values Analysis estimator class. This class estimates IVA on a set of data values, stored in a dictionary: - key is the name of the segment; - value is the list of values observed in each segment. >>> d = {'sgmt_1':[1.0, 1.2, 3.2, 4.1] , 'sgmt_2':[2.9, 3.3, 3.6, 5.8]} >>> iva = IntervalValuesAnalysis(d) >>> mean = iva.mean() >>> intercept, slope = iva.intercept_slope() >>> print(slope['sgmt_1']) >>> print(slope['sgmt_2']) """
[docs] def __init__(self, dict_items): """Create a new instance of IVA. :param dict_items: (dict) a dict of a list of float/int values. """ super(IntervalValuesAnalysis, self).__init__(dict_items)
# -----------------------------------------------------------------------
[docs] def intercept_slope(self): """Estimate the intercept of data values, like for TGA. Create the list of points (x,y) of each segment where: - x is the item index; - y is the value. :returns: (dict) a dict of (key, (intercept, slope)) of float values """ lin_reg = list() for key, values in self._items.items(): points = [(pos, val) for pos, val in enumerate(values)] lin_reg.append((key, (tga_linear_regression(points)))) return dict(lin_reg)