Regresi pomocí beziera (B-spline) rád pouzivam.
scipy.interpolate.splrep identifikuje parametry Bspline
scipy.interpolate.splev pak na zaklade parametru vygeneruje krivku
Kdyz ocekavate v datech zlomy, dají se identifikovat mista zlomů , do nich se dají předpokládat polohy uzlů a mezi uzly získat pomoci splrep hladkou regresi bez rozkmitání.
Akima tam je: scipy.interpolate.Akima1DInterpolator
Nurbs tam asi není
"Pro takto "rozházené" body nemá moc smysl se pokoušet provádět lineární regresi "
no tohle (data) je opravdu bordel, ale robustni regrese pomůže vybruslit z kde čeho.
Když už ne plnotučný RANSAC, tak ve scipy je alespon
scipy.optimize.least_squares
res_cauchy = least_squares(residuals, x0=[1.0, 0.0], args=(x, y), loss="cauchy")
"Pro takto "rozházené" body nemá moc smysl se pokoušet provádět lineární regresi " - no hlavne nehodnotit ocima, ale mame nejake metriky ktere nam reknou jak na tom vysledek regrese je. Ale jasne, tohle neni clanek o te matematice ale o programovani.
Jeste mi neda ale musim okomentovat ty spliny - krasna ukazka toho, ze nejkomplikovanejsi na regresi a interpolaci je vyber vhodneho modelu - aby si pak clovek nepletl sum se samotnym zkoumanym jevem. S vhodnym modelem jsme schopni nafitovat uplne jakykoliv sum, ale prinos pro analyzu problemu bude nulovy.
"no hlavne nehodnotit ocima"
A to já zastávám ze své inženýrské praxe zcela odlišný názor. Metriky jsou sice fajn, ale jejich výběr je snad ještě delikátnější, než výběr samotného modelu. A u obojího platí... aby to fungovalo, musím tušit dopředu co mám hledat.
Často se stane, že dvě regrese mají na papíře velmi podobné výsledky metrik, ale očima je to úplně mimo.
Pokud problém nepřesáhne 3 dimenze je třeba používat vlastní kritický pohled na výsledky vždy.