<?php
|
/*---------------------------------------------------------------*/
|
/*
|
Titre : Calcul de l'équation de la droite de régression linéaire
|
|
URL : https://phpsources.net/code_s.php?id=890
|
Date édition : 14 Fév 2019
|
Date mise à jour : 14 Aout 2019
|
Rapport de la maj:
|
- fonctionnement du code vérifié
|
*/
|
/*---------------------------------------------------------------*/
|
|
|
## Fonction de calcul du paramète alpha de la droite de regression
|
// linéaire
|
function calcul_alpha($ymoy, $beta, $xmoy){
|
|
$alpha = $ymoy - ($beta*$xmoy);
|
return $alpha;
|
|
};
|
|
## Fonction de calcul de Y par regression linéaire
|
function calcul_y($xtmp, $alpha, $beta){
|
|
$ycir = $alpha + $beta*$xtmp;
|
return $ycir;
|
|
}
|
|
function regression_lineaire($x , $y){
|
|
## Cette fonction permet d'opérer une regression linéaire simple de type
|
//
|
|
## Y = alpha + (beta * X) à  partir d'un tableau de données (xi et yi)
|
|
|
## Les données sont passées sous la forme de deux tableaux $x et $y selon
|
//
|
## le principe suivant :
|
|
## $x[0]=1; $y[0]=1;
|
## $x[1]=2; $y[1]=2;
|
## $x[2]=3; $y[2]=4;
|
## $x[3]=4; $y[3]=3;
|
## $x[4]=5; $y[4]=7;
|
## $x[5]=6; $y[5]=5;
|
|
|
|
## Nombre d'entrées dans le tableau
|
$n=count($x);
|
|
## Affichage du tableau de données
|
echo "<b>Données : </b>";
|
echo "<br>";
|
echo "<table cellpadding='3'>";
|
|
$i=0;
|
|
while($i<=($n-1)){
|
|
echo "<tr><td>x : ".$x[$i]."<td>y : ".$y[$i]."</tr>" ;
|
|
##Calculs Initiaux
|
$Ex += $x[$i];
|
$Ey += $y[$i];
|
$Exy += $x[$i]*$y[$i];
|
$Ex2 += pow($x[$i], 2);
|
|
$i++;
|
|
}
|
echo "</table>";
|
|
## Affichage des résultats
|
echo "<br>";
|
echo "<b>Calculs Initiaux : </b>";
|
echo "<br>";
|
echo "Ex (Somme des x) = ".$Ex;
|
echo "<br>";
|
echo "Ey (Somme des y) = ".$Ey;
|
echo "<br>";
|
echo "Exy (Somme des x*y) = ".$Exy;
|
echo "<br>";
|
echo "Ex² (Sommes des x²) = ".$Ex2;
|
echo "<br>";
|
echo "(Ex)à ‚Â² (Carré de Exà ‚Â²) = ". $sum2_x = pow($Ex, 2);
|
echo "<br>";
|
echo "<br>";
|
echo "<b>Moyennes de x et y : </b>";
|
echo "<br>";
|
echo "Xmoy = ". $xmoy = ($Ex/$n);
|
echo "<br>";
|
echo "Ymoy = ". $ymoy = ($Ey/$n);
|
echo "<br>";
|
echo "<br>";
|
echo "<b>Paramètres de la droite : </b>";
|
echo "<br>";
|
echo "beta = ". $beta = ($Exy - (($Ex*$Ey)/$n))/($Ex2-($sum2_x/$n));
|
echo "<br>";
|
echo "alpha = ". $alpha = calcul_alpha($ymoy, $beta, $xmoy);
|
echo "<br>";
|
echo "<br>";
|
echo "<b>Equation de la droite : </b>";
|
echo "<br>";
|
echo "y = ".$alpha." + ".$beta." * x";
|
echo "<br>";
|
|
$i=0;
|
|
while($i<=($n-1)){
|
|
$post_tss = ($y[$i]-$ymoy)*($y[$i]-$ymoy);
|
$post_rss = (calcul_y($x[$i], $alpha, $beta)-$ymoy)*(calcul_y($x[$i],
|
$alpha, $beta)-$ymoy);
|
|
|
##Paramètres de calcul du paramètres de corrélation linéaire
|
// (Rà ‚Â²= RSS/TSS)
|
$tss += $post_tss;
|
$rss += $post_rss;
|
|
$i++;
|
|
}
|
echo "<br>";
|
echo "<b>Coefficient de Corrélation : </b>";
|
echo "<br>";
|
echo "R² = ". $r2 = $rss/$tss;
|
echo "<br>";
|
echo "<br>";
|
|
|
|
## Prévisions des futures valeurs à  partir de l'équation de la droite
|
// de
|
// régression
|
|
echo "<b>Prévisions : </b>";
|
echo "<br>";
|
echo "Prévision pour x=7 : ".calcul_y(7, $alpha, $beta);
|
echo "<br>";
|
echo "Prévision pour x=10 : ".calcul_y(10, $alpha, $beta);
|
echo "<br>";
|
echo "Prévision pour x=100 : ".calcul_y(100, $alpha, $beta);
|
}
|
?>
|
|
|