Seite 1 von 1
numpy und linear fit
Verfasst: Donnerstag 5. Juni 2008, 23:15
von ichbinsisyphos
Hallo,
ist es möglich mit numpy einen linearen fit zu erstellen, der durch den Ursprung geht?
Scheint mir eine sehr wichtige Funktion zu sein, finde darüber aber nichts.
Keine Ahnung ob es noch andere Fit-Funktion gibt, ich benutz zur Zeit immer polyfit(x,f(x),1).
Verfasst: Freitag 6. Juni 2008, 07:59
von Darii
Verfasst: Sonntag 8. Juni 2008, 21:10
von ichbinsisyphos
ja, danke für die antwort.
ich hab mich aber erinnert, dass es für das problem eine einfache analytische lösung gibt:
sum(x*y)/sum(x**2)

Verfasst: Montag 9. Juni 2008, 08:01
von CM
ichbinsisyphos hat geschrieben:sum(x*y)/sum(x**2)
Richtig:
Das erklärt alles. Wozu sonstige Routinen?
Verfasst: Donnerstag 12. Juni 2008, 16:55
von ichbinsisyphos
CM hat geschrieben:ichbinsisyphos hat geschrieben:sum(x*y)/sum(x**2)
Richtig:
Das erklärt alles. Wozu sonstige Routinen?
bevor ich da eine beleidigung annehmen muss, frag ich lieber nach. würdens sich bitte erklären?
Verfasst: Donnerstag 12. Juni 2008, 17:11
von CM
Das war nicht als Beleidigung gemeint, tut mir leid. Aber: Das ist keine Fitroutine - auch wenn man sich denken kann, was Du gemeint hast. Ein anderer Nutzer des Forums mag über den Thread stolpern und dann doch nicht weiter wissen.
Verfasst: Donnerstag 12. Juni 2008, 18:05
von ichbinsisyphos
aso, nein, das ist keine eigentliche fitroutine.
wenn man eine gerade durch die werte legt, die den quadratischen fehler minimiert und zusätzlich einschränkt mit der bedingung das die gerade durch den ursprung geht, dann gibts eine analytische lösung.
fit ist also hier nicht nötig. was vermutlich auch der grund ist, wieso dieser spezialfall in den fit-funktionen nicht vorkommt.
herleitung ist ungefähr:
geradengleichung durch ursprung mit steigung m: y=m*x
summe über die quadratischen Fehler E = sum((m*x_i-y_i)**2) = minimal
=> dE/dm = 0 = 2*sum((m*x_i - y_i)*x_i)
=> m = sum(x*y)/sum(x**2)
es sei denn ich hab etwas übersehen ...