Thomas Meinike: Suche Formel

Beitrag lesen

Hallo,

geht das oder ist das unmöglich?
mal was zum tüfteln.

Bei Deinem Problem hilft die lineare Regression. Der folgende Code (mal schnell von VB nach PHP portiert) setzt Deine x-Werte in das Array $x und die a-Werte in das Array $y. Heraus kommen die Parameter b und a, fuer die Gleichung y = b * x + a.

Deine Daten ergeben: y = 2 * x - 8

<?php

// PHP-Portierung von
// http://www.et.fh-merseburg.de/person/meinike/bpoldstuff/tt170898.htm

$sx=0;
$sy=0;
$sz=0;
$s2=0;
$s3=0;

$x=array(9,10,11,12,13);
$y=array(10,12,14,16,18);
$n=count($x);

for($i=0;$i<$n;$i++)
{
  $sx = $sx + $x[$i];
  $sy = $sy + $y[$i];
  $sz = $sz + $x[$i] * $y[$i];
  $s2 = $s2 + $x[$i] * $x[$i];
  $s3 = $s3 + $y[$i] * $y[$i];
}

$b = ($n * $sz - $sx * $sy) / ($n * $s2 - $sx * $sx);
  $a = ($sy - $b * $sx) / $n;
  // Korrelationskoeffizient
  // $r = abs(($n * $sz - $sx * $sy) / sqrt(($n * $s2 - $sx * $sx) * ($n * $s3 - $sy * $sy)));

if($a>=0)print "y = $b * x + ".abs($a);
else print "y = $b * x - ".abs($a);

?>

BTW: Der Korrelationskoeffizient $r ist gleich 1, d. h. alle Punkte liegen genau auf der erhaltenen Geraden.

MfG, Thomas