Données

In [1]:
x=[1,2,3,4,5,6,7,8,9,10]
y=[1.48,8.58,16.44,24.53,29.96,36.97,48.91,55.70,55.70,70.11]

Nuage de points

In [2]:
from pylab import *
scatter(x, y)
xlabel("abscisses")
ylabel("ordonnees")
title("TITRE")
show()

Point moyen

In [3]:
def moyenne(L):
    #renvoie la moyenne des elements de la liste L
    sommeL = 0
    nombre_de_donnees = len(L)
    for i in range(nombre_de_donnees):
        sommeL = sommeL + L[i]
    return sommeL / nombre_de_donnees

print("G ( ",moyenne(x), " ; ",moyenne(y)," )")
G (  5.5  ;  34.838  )

Coefficient de corrélation linéaire

calcul de la variance des x :

In [4]:
def variance(L):
    # L est une liste
    varianceL = 0
    nombre_de_donnees = len(L)
    m = moyenne(L)
    for i in range(nombre_de_donnees):
        varianceL = varianceL + (L[i] - m)**2
    varianceL = varianceL / nombre_de_donnees
    return varianceL
                                 
print("V(x) = ", variance(x))
V(x) =  8.25
In [5]:
from math import sqrt

print("Pour la série x, l'écart-type vaut : ",sqrt(variance(x)))
Pour la série x, l'écart-type vaut :  2.8722813232690143

calcul de la variance des y :

In [6]:
print("V(y) = ", variance(y))
print("Pour la série y, l'écart-type vaut : ",sqrt(variance(y)))
V(y) =  458.790156
Pour la série y, l'écart-type vaut :  21.41938738619758

calcul de la covariance de x et y :

In [7]:
def covariance(L1,L2):
    nombre_de_donnees = len(L1)
    if not(nombre_de_donnees ==  len(L2)):
        return 0
    else:
        cov = 0
        moyL1  = moyenne(L1)
        moyL2  = moyenne(L2)
        for i in range(nombre_de_donnees):
            cov = cov + (L1[i] - moyL1) * (L2[i] - moyL2)
    return cov / nombre_de_donnees

print("COV(x,y) = ", covariance(x,y))
COV(x,y) =  61.198

calcul du coefficient de corrélation linéaire :

In [8]:
def coefficientCorrelation(L1,L2):
    return covariance(L1,L2) / (sqrt(variance(L1) * variance(L2)))
print("Le coefficient de corrélation linéaire est r = ", coefficientCorrelation(x,y))
Le coefficient de corrélation linéaire est r =  0.9947254043354764

Droite de régression de y en x

In [9]:
a = covariance(x,y) / variance(x)
b= moyenne(y) - a * moyenne(x)
print('a = ',a)
print('b = ',b)
a =  7.417939393939394
b =  -5.960666666666661

Tracé de la droite de régression de y en x

In [10]:
scatter(x, y)
x1 = linspace(min(x),max(x), 50)
y1 = a*x1 + b
plot(x1, y1)
xlabel("abscisses")
ylabel("ordonnees")
title("TITRE")
show()

coefficient de corrélation linéaire (cas particuliers)

In [11]:
from pylab import *

x = [1,2,3,4,5]
y = [3,5,7,9,11]

scatter(x, y)
xlabel("abscisses")
ylabel("ordonnees")
title("TITRE")
show()

print("r = ",coefficientCorrelation(x,y))
r =  1.0
In [12]:
from pylab import *

x = [1,2,3,4,5]
y = [11,9,7,5,3]

scatter(x, y)
xlabel("abscisses")
ylabel("ordonnees")
title("TITRE")
show()

print("r = ",coefficientCorrelation(x,y))
r =  -1.0
In [13]:
from pylab import *

x = [0,1,0,1]
y = [0,0,1,1]

scatter(x, y)
xlabel("abscisses")
ylabel("ordonnees")
title("TITRE")
show()

print("r = ",coefficientCorrelation(x,y))
r =  0.0
In [14]:
from pylab import *

x = [1,2,3,4]
y = [1,1,1,1.0000001]

scatter(x, y)
xlabel("abscisses")
ylabel("ordonnees")
title("TITRE")
show()

print("r = ",coefficientCorrelation(x,y))
r =  0.7745966692414834
In [15]:
from pylab import *

x = [-5,-4,-3,-2,-1,0,1,2,3,4,5]
y = [i**2 for i in x]

scatter(x, y)
xlabel("abscisses")
ylabel("ordonnees")
title("TITRE")
show()

print("r = ",coefficientCorrelation(x,y))
r =  0.0