Source code for elliot.evaluation.statistical_significance

"""
Module description:
"""

__version__ = '0.3.1'
__author__ = 'Vito Walter Anelli, Claudio Pomo, Alejandro Bellogín'
__email__ = 'vitowalter.anelli@poliba.it, claudio.pomo@poliba.it, alejandro.bellogin@uam.es'

from scipy import stats
import typing as t
import numpy as np


[docs]class PairedTTest:
[docs] @staticmethod def common_users(arr_0: t.Dict[int, float], arr_1: t.Dict[int, float]): return list(arr_0.keys() & arr_1.keys())
[docs] @staticmethod def compare(arr_0: t.Dict[int, float], arr_1: t.Dict[int, float], users: t.List[int]): list_0 = list(map(arr_0.get, users)) list_1 = list(map(arr_1.get, users)) return stats.ttest_rel(list_0, list_1)[1]
[docs]class WilcoxonTest:
[docs] @staticmethod def common_users(arr_0: t.Dict[int, float], arr_1: t.Dict[int, float]): return list(arr_0.keys() & arr_1.keys())
[docs] @staticmethod def compare(arr_0: t.Dict[int, float], arr_1: t.Dict[int, float], users: t.List[int]): list_0 = list(map(arr_0.get, users)) list_1 = list(map(arr_1.get, users)) return stats.wilcoxon(list_0, list_1)[1] if any(np.array(list_0) - np.array(list_1)) else np.nan