from scipy import stats

# PAIRED SAMPLE - TEST DI WILCOXON
# livello di significatività o alpha = 5% o 0.05
# ipotesi nulla: media_algoritmo1 - media_algoritmo2 = 0 ovvero l'ipotesi nulla afferma che la differenza tra le medie dei due algoritmi
# è uguale a zero, il che significa che non c'è una differenza significativa tra le prestazioni medie dei due algoritmi.

# Risultati algoritmi KI, AI, KR, AR e GLS
distanze_KI = [12.54, 12.02, 12.14, 13.07, 13.41, 11.58, 13.07, 11.77, 11.3, 11.94,
                        15.17, 16.02, 19.09, 19.64, 14.74, 14.37, 17.65, 17.26, 18.41, 16.48,
                        23.42, 20.54, 24.42, 22.7, 21.54, 21.16, 23.76, 23.34, 26, 25.49]
distanze_KR = [12.57, 12.19, 12.07, 12.92, 13.35, 11.36, 13.19, 11.82, 11.3, 11.94,
                        14.89, 15.17, 18.15, 18.94, 14.4, 14.35, 16.74, 17.2, 18.36, 16.52,
                        23.22, 19.97, 24.61, 21.83, 21.49, 21.36, 24.68, 22.84, 26.01, 25.27]
distanze_AI = [15.19, 14.54, 14.41, 14.96, 15.95, 13.78, 15.2, 14.6, 13.66, 14.81,
                        17.02, 16.6, 19.96, 21.22, 16.2, 17.19, 19.47, 19.68, 18.41, 18.64,
                        25.9, 23.08, 25.03, 24.66, 23.78, 23.06, 25.51, 24.34, 27.45, 27.36]
distanze_AR = [15.32, 15.2, 15.86, 17.01, 15.28, 13.79, 16.94, 14.78, 13.85, 14.67,
               17.36, 17.98, 22.72, 23.79, 17.83, 18.28, 22.76, 21.44, 23.34, 20.34,
               29.72, 27.49, 29.75, 29.04, 27.34, 26.63, 30.22, 28.41, 32.84, 32.13]
distanze_GLS = [11.42, 11.72, 11.06, 11.43, 12.18, 10, 11.8, 11.03, 10.7, 10.96,
                14.35, 14.56, 18.94, 21.07, 14.42, 13.84, 16.33, 18.43, 18.94, 15.97,
                24.15, 20.96, 26.21, 24.27, 23.64, 22.86, 25.12, 23.47, 28.12, 26.19]

# Esegui il test di Wilcoxon con segni
stat1, p_value1 = stats.wilcoxon(distanze_KI, distanze_KR)
# Esegui il test di Wilcoxon con segni
stat2, p_value2 = stats.wilcoxon(distanze_KI, distanze_AI)
# Esegui il test di Wilcoxon con segni
stat3, p_value3 = stats.wilcoxon(distanze_KI, distanze_AR)
# Esegui il test di Wilcoxon con segni
stat4, p_value4 = stats.wilcoxon(distanze_KI, distanze_GLS)
# Esegui il test di Wilcoxon con segni
stat5, p_value5 = stats.wilcoxon(distanze_KR, distanze_AI)
# Esegui il test di Wilcoxon con segni
stat6, p_value6 = stats.wilcoxon(distanze_KR, distanze_AR)
# Esegui il test di Wilcoxon con segni
stat7, p_value7 = stats.wilcoxon(distanze_KR, distanze_GLS)
# Esegui il test di Wilcoxon con segni
stat8, p_value8 = stats.wilcoxon(distanze_AI, distanze_AR)
# Esegui il test di Wilcoxon con segni
stat9, p_value9 = stats.wilcoxon(distanze_AI, distanze_GLS)
# Esegui il test di Wilcoxon con segni
stat10, p_value10 = stats.wilcoxon(distanze_AR, distanze_GLS)

# Stampa i risultati
print(f"Test di Wilcoxon con segni tra KI e KR: p-value = {p_value1}")
# Confronto con il livello di significatività alpha = 0.05
alpha = 0.05
if p_value1 < alpha:
    print("The difference is statistically significant.")
else:
    print("The difference is not statistically significant.\n")

# Stampa i risultati
print()
print(f"Test di Wilcoxon con segni tra KI e AI: p-value = {p_value2}")
# Confronto con il livello di significatività alpha = 0.05
alpha = 0.05
if p_value2 < alpha:
    print("The difference is statistically significant.")
else:
    print("The difference is not statistically significant.\n")

# Stampa i risultati
print()
print(f"Test di Wilcoxon con segni tra KI e AR: p-value = {p_value3}")
# Confronto con il livello di significatività alpha = 0.05
alpha = 0.05
if p_value3 < alpha:
    print("The difference is statistically significant.")
else:
    print("The difference is not statistically significant.\n")

# Stampa i risultati
print()
print(f"Test di Wilcoxon con segni tra KI e GLS: p-value = {p_value4}")
# Confronto con il livello di significatività alpha = 0.05
alpha = 0.05
if p_value4 < alpha:
    print("The difference is statistically significant.")
else:
    print("The difference is not statistically significant.\n")

# Stampa i risultati
print()
print(f"Test di Wilcoxon con segni tra KR e AI: p-value = {p_value5}")
# Confronto con il livello di significatività alpha = 0.05
alpha = 0.05
if p_value5 < alpha:
    print("The difference is statistically significant.")
else:
    print("The difference is not statistically significant.\n")

# Stampa i risultati
print()
print(f"Test di Wilcoxon con segni tra KR e AR: p-value = {p_value6}")
# Confronto con il livello di significatività alpha = 0.05
alpha = 0.05
if p_value6 < alpha:
    print("The difference is statistically significant.")
else:
    print("The difference is not statistically significant.\n")

# Stampa i risultati
print()
print(f"Test di Wilcoxon con segni tra KR e GLS: p-value = {p_value7}")
# Confronto con il livello di significatività alpha = 0.05
alpha = 0.05
if p_value7 < alpha:
    print("The difference is statistically significant.")
else:
    print("The difference is not statistically significant.\n")

# Stampa i risultati
print()
print(f"Test di Wilcoxon con segni tra AI e AR: p-value = {p_value8}")
# Confronto con il livello di significatività alpha = 0.05
alpha = 0.05
if p_value8 < alpha:
    print("The difference is statistically significant.")
else:
    print("The difference is not statistically significant.\n")

# Stampa i risultati
print()
print(f"Test di Wilcoxon con segni tra AI e GLS: p-value = {p_value9}")
# Confronto con il livello di significatività alpha = 0.05
alpha = 0.05
if p_value9 < alpha:
    print("The difference is statistically significant.")
else:
    print("The difference is not statistically significant.\n")

# Stampa i risultati
print()
print(f"Test di Wilcoxon con segni tra AR e GLS: p-value = {p_value10}")
# Confronto con il livello di significatività alpha = 0.05
alpha = 0.05
if p_value10 < alpha:
    print("The difference is statistically significant.")
else:
    print("The difference is not statistically significant.\n")
