Wie kann ich berechnen, eine Trendlinie in PHP?
Also ich habe gelesen, die zwei Fragen zur Berechnung einer Trendlinie, die für ein Diagramm, aber ich bin immer noch verloren.
Ich habe ein array von xy-Koordinaten, und ich will mit einem anderen array von xy-Koordinaten (kann auch weniger sein-Koordinaten), die eine logarithmische Trendlinie mit PHP.
Ich bin, die übergabe von arrays an javascript zu zeichnen Diagramme auf der client-Seite.
InformationsquelleAutor Stephen | 2010-05-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Logarithmische Least-Squares -
Da können wir konvertieren eine logarithmische Funktion in eine Zeile, indem Sie die
log
desx
Werte, führen wir eine linear least squares "curve fitting". In der Tat, die Arbeit wurde für uns gemacht und eine Lösung vorgelegt wird Welt Der Mathematik.In Kürze, erhalten wir
$X
und$Y
Werte aus einer Verteilung, wiey = a + b * log(x)
. Die Methode der kleinsten Quadrate geben einige WerteaFit
undbFit
zu minimieren, dass der Abstand von der parametrischen Kurve an die Datenpunkte gegeben.Hier ist ein Beispiel für die Implementierung in PHP:
Zunächst werde ich erzeugen einige zufällige Daten mit bekannten zugrunde liegenden Verteilung gegeben durch
$a
und$b
Nun, hier ist, wie die Verwendung der Gleichungen zur Schätzung der
$a
und$b
.Können Sie dann erstellen Sie Punkte für Ihre Javascript so dicht, wie Sie möchten:
In diesem Fall, den code Schätzungen
bFit = 5.17
undaFit = 9.7
, das ist ganz nah, nur für50
Daten Punkte.Zum Beispiel VORGEGEBENE Daten in den Kommentar unten, eine logarithmische Funktion funktioniert nicht gut.
Least-squares-Lösung ist
y = -514.734835478 + 2180.51562281 * log(x)
ist im wesentlichen eine Linie in diesem Bereich.In der Theorie, Ihren aktualisierten Kommentar Sinn macht. In der Praxis? Ich bin ein dunce in Mathe. Ich sah die beiden Gleichungen, die Sie erwähnt und fiel fast in Ohnmacht.
Okay. Nun, ich habe etwas mehr Forschung in das problem und geschrieben und getestet haben einige code, der das für Sie übernimmt, und neu geschrieben, meine Antwort. Lassen Sie mich wissen, wenn Sie irgendwelche Fragen haben.
Das ist genial. Das ist genau das, was ich suchte. Ich werde zu brechen, Ihren code und versuchen Sie zu erfahren, was genau Los ist. Ich weiß es zu schätzen.
Dies ist eine sehr hilfreiche Antwort. Danke!!!
InformationsquelleAutor Geoff
Ich würde empfehlen, mit Bibliothek: http://www.drque.net/Projects/PolynomialRegression/
Verfügbar Komponist: https://packagist.org/packages/dr-que/polynomial-regression.
InformationsquelleAutor Piotr Borek