import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import poisson
# λ voor het thuisteam
lambda_thuis = float(input("Geef λ van het thuisteam: "))
# λ voor het uitteam
lambda_uit = float(input("Geef λ van het uitteam: "))
# ELO-ratings voor beide teams
elo_thuis = float(input("Geef de ELO-rating van het thuisteam: "))
elo_uit = float(input("Geef de ELO-rating van het uitteam: "))
# Voor het berekenen van de kans op overwinning voor beide teams op basis van EL
# O-rating
kans_thuis_winst_elo = elo_thuis / (elo_thuis + elo_uit)
kans_uit_winst_elo = elo_uit / (elo_thuis + elo_uit)
print(f"\nKans op overwinning thuisteam op basis van ELO-Rating: {kans_thuis_winst_elo:.4f} ({kans_thuis_winst_elo * 100:.2f}%)")
print(f"Kans op overwinning uitteam op basis van ELO-Rating: {kans_uit_winst_elo:.4f} ({kans_uit_winst_elo * 100:.2f}%)")
# Voor het berekenen van de kansen voor verschillende aantallen doelpunten (0 to
# t 10)
doelpunten = np.arange(0, 11)
kansen_thuis = poisson.pmf(doelpunten, lambda_thuis)
kansen_uit = poisson.pmf(doelpunten, lambda_uit)
# Voor het berekenen van de kans op gelijkspel
kans_gelijkspel = sum(kansen_thuis[i] * kansen_uit[i] for i in range(len(doelpunten)))
print(f"\nKans op gelijkspel op basis van Poissonverdeling: {kans_gelijkspel:.4f} ({kans_gelijkspel * 100:.2f}%)")
# Voor het berekenen van de kans op overwinning op basis van Poissonverdeling
kans_thuis_winst_poisson = sum(kansen_thuis[i] * sum(kansen_uit[j] for j in range(i)) for i in range(1, len(doelpunten)))
kans_uit_winst_poisson = sum(kansen_uit[i] * sum(kansen_thuis[j] for j in range(i)) for i in range(1, len(doelpunten)))
print(f"\nKans op een overwinning van het thuisteam op basis van Poissonverdeling: {kans_thuis_winst_poisson:.4f} ({kans_thuis_winst_poisson * 100:.2f}%)")
print(f"Kans op een overwinning van het uitteam op basis van Poissonverdeling: {kans_uit_winst_poisson:.4f} ({kans_uit_winst_poisson * 100:.2f}%)")
# Voor het plotten en laten zien van de Poissonverdelingen
plt.figure(figsize=(10, 6))
# Thuisteam
plt.bar(doelpunten - 0.2, kansen_thuis * 100, width=0.4, color='blue', alpha=0.7, label='Thuisteam')
# Uitteam
plt.bar(doelpunten + 0.2, kansen_uit * 100, width=0.4, color='red', alpha=0.7, label='Uitteam')
plt.title(f"Poissonverdeling voor thuisteam (λ= {lambda_thuis}) en uitteam (λ= {lambda_uit})")
plt.xlabel('Aantal doelpunten')
plt.ylabel('Kans in %')
plt.xticks(doelpunten)
plt.legend()
plt.grid(True)
plt.show()