# -*- coding: utf-8 -*-
"""
 feuille 2 d'informatique'
"""

import numpy as np
import matplotlib.pyplot as plt


plt.close('all')

categories = ['Triomphe de Farcy sans engrais', 'Triomphe de Farcy avec engrais' ,
              'Beurre de Rocquencourt sans engrais', 'Beurre de Rocquencourt avec engrais',
              'Rudy sans engrais', 'Rudy sans engrais'
              ]
couleurs = ('r','r','b','b','y','y')

valeurs = []
errorValeurs = []

def moyenne(L):
    return sum(L)/len(L)

def ecart_type(L):
    m = moyenne(L)
    carre = [ (x-m)**2 for x in L]
    variance = sum(carre)/len(L)
    return variance**(0.5)

n = 30

#Question a) X1 gaussienne gauss(11,2) X2 gaussienne gauss(13,2))

# Echantillon sans engrais
Echantillon1 = [9.0, 11.2, 12.6, 11.3, 9.1, 9.6, 12.0, 15.8, 10.6, 11.8,
                10.3, 10.5, 9.5, 10.1, 9.6, 8.6, 11.2, 13.1, 9.7, 12.4, 
                10.4, 15.1, 11.6, 12.7, 8.5, 9.1, 11.8, 10.0, 9.2, 7.8]

print('Question a)')
m = moyenne(Echantillon1)
print(m)
s = ecart_type(Echantillon1)
print('[ ', m -1.96*s/n**.5,';', m +1.96*s/n**.5, ' ]')

valeurs.append(m)
errorValeurs.append(1.96*s/n**.5)

# Echantillon avec engrais
Echantillon2 = [11.6, 13.5, 15.2, 12.8, 14.2, 15.3, 13.0, 13.6, 9.7, 
                12.6, 15.1, 8.4, 10.5, 10.1, 10.7, 13.0, 11.8, 14.7, 
                13.4, 12.2, 13.0, 10.6, 12.9, 13.7, 15.9, 12.1, 11.5, 
                16.0, 8.2, 13.9]
print(Echantillon2)
m = moyenne(Echantillon2)
print(m)
s = ecart_type(Echantillon2)
print('[ ', m -1.96*s/n**.5,';', m +1.96*s/n**.5, ' ]')
print('')

valeurs.append(m)
errorValeurs.append(1.96*s/n**.5)

#Question b) X1 gaussienne gauss(11,3) X2 gaussienne gauss(13,3))

# Echantillon sans engrais
Echantillon1 = [11.2, 15.7, 12.9, 9.4, 12.1, 9.9, 10.4, 9.4, 10.6,
                13.6, 9.2, 12.1, 11.6, 10.1, 11.5, 10.0, 13.9, 14.0,
                15.2, 10.8, 12.9, 11.3, 8.7, 14.1, 6.0, 16.5, 6.6, 
                7.2, 9.9, 13.4]
print('Question b)')
m = moyenne(Echantillon1)
print(m)
s = ecart_type(Echantillon1)
print('[ ', m -1.96*s/n**.5,';', m +1.96*s/n**.5, ' ]')

valeurs.append(m)
errorValeurs.append(1.96*s/n**.5)

# Echantillon avec engrais
Echantillon2 = [12.2, 9.2, 12.1, 9.8, 12.4, 15.3, 6.2, 13.1, 15.1, 
                10.8, 9.9, 9.6, 6.8, 11.8, 12.3, 12.7, 8.5, 7.7, 
                12.5, 16.9, 13.3, 10.7, 11.7, 14.2, 8.7, 15.1, 
                12.5, 15.7, 15.4, 13.4]
print(Echantillon2)
m = moyenne(Echantillon2)
print(m)
s = ecart_type(Echantillon2)
print('[ ', m -1.96*s/n**.5,';', m +1.96*s/n**.5, ' ]')
print('')

valeurs.append(m)
errorValeurs.append(1.96*s/n**.5)

#Question c) X1 gaussienne gauss(12,3) X2 gaussienne gauss(12,3))
print('Question c)')
# Echantillon sans engrais
Echantillon1 = [12.1, 11.5, 12.9, 12.2, 11.0, 8.1, 10.0, 11.7, 20.2,
                10.6, 5.9, 4.9, 10.8, 10.8, 10.8, 3.4, 11.8, 14.9, 
                8.3, 7.1, 14.0, 11.5, 8.7, 10.6, 13.5, 12.5, 12.9, 
                9.0, 7.6, 9.5]

m = moyenne(Echantillon1)
print(m)
s = ecart_type(Echantillon1)
print('[ ', m -1.96*s/n**.5,';', m +1.96*s/n**.5, ' ]')

valeurs.append(m)
errorValeurs.append(1.96*s/n**.5)

# Echantillon avec engrais
Echantillon2 = [14.3, 11.4, 10.0, 11.5, 16.5, 14.9, 11.1, 10.9, 
                15.3, 11.7, 9.5, 8.7, 5.0, 12.3, 6.4, 9.7, 6.8, 
                13.1, 16.4, 15.1, 14.6, 11.5, 14.5, 14.0, 12.2, 
                17.6, 12.4, 12.8, 15.6, 14.0]
print(Echantillon2)
m = moyenne(Echantillon2)
print(m)
s = ecart_type(Echantillon2)
print('[ ', m -1.96*s/n**.5,';', m +1.96*s/n**.5, ' ]')


valeurs.append(m)
errorValeurs.append(1.96*s/n**.5)

plt.close('all')

plt.figure("Intervalles de confiance", figsize = (15,5))

categories = ['Triomphe de Farcy sans engrais', 'Triomphe de Farcy avec engrais' ,
              'Beurre de Rocquencourt sans engrais', 'Beurre de Rocquencourt avec engrais',
              'Rudy sans engrais', 'Rudy avec engrais'
              ]
couleurs = ('r','r','b','b','y','y')
a = (0.2, 0.6,0.2, 0.6,0.2, 0.6)

for i in range(6):
    plt.bar(i, valeurs[i], color = couleurs[i], alpha = a[i], label = categories[i])
    plt.errorbar(i, valeurs[i], yerr = errorValeurs[i], color = 'k', 
             fmt = 'none', capsize = 3, elinewidth = 1, capthick = 1)

# Ajout de titres et de labels
plt.title("Comparaison des haricots, les barres d'erreurs sont les intervalles de confiance" )
plt.xlabel('Haricots')
plt.ylabel('Poids en (dg)')
plt.legend()
plt.show()
