Best Regression Fit
11-04-2017, 02:08 PM
Post: #1
 Eddie W. Shore Senior Member Posts: 1,038 Joined: Dec 2013
Best Regression Fit
The program BESTFIT compares a set of regressions to determine a best fit. This simulates a feature presented on the Hewlett Packard HP 48S, HP 48G, HP 49G, and HP 50g. BESTFIT compares the correlations of the following four regression models:

1. Linear: y = a * x + b
2. Logarithmic: y = a * ln x + b
3. Exponential: y = b * a^x (y = b * e^(ln a * x))
4. Power: y = b * x^a

The output is a two element list: a string of the best fit equation and its corresponding correlation.

HP Prime Program: BESTFIT
Code:
 EXPORT BESTFIT(L1,L2) BEGIN // 2017-11-02 EWS // Simulate Best Fit // HP 48GX,49G,50g // initialize LOCAL clist,m,c,v,s,n; clist:={0,0,0,0}; // test // correlation is linear only // requires approx() // linear y=a*x+b clist[1]:=approx(correlation(L1,L2)); // log y=a*LN(x)+b  c:=approx(correlation(LN(L1),L2)); IF IM(c)==0 THEN clist[2]:=c; END; // exponential y=b*e^(a*x) c:=approx(correlation(L1,LN(L2))); IF IM(c)==0 THEN clist[3]:=c; END; // power y=b*a^x c:=approx(correlation(LN(L1),LN(L2))); IF IM(c)==0 THEN clist[4]:=c; END; // test // POS(L0^2,MAX(L0^2)) m:=POS(clist^2,MAX(clist^2)); c:=clist[m]; IF m==1 THEN v:=linear_regression(L1,L2); s:=STRING(v[2])+"+"+STRING(v[1])+ "*X"; RETURN {s,c}; END; IF m==2 THEN v:=logarithmic_regression(L1,L2); s:=STRING(v[2])+"+"+STRING(v[1])+ "*LN(X)"; RETURN {s,c}; END; IF m==3 THEN v:=exponential_regression(L1,L2); s:=STRING(v[2])+"*"+STRING(v[1])+ "^X"; RETURN {s,c}; END; IF m==4 THEN v:=power_regression(L1,L2); s:=STRING(v[2])+"*X^"+ STRING(v[1]); RETURN {v,s}; END; END;

BESTFIT2: An Extended Version

Version 2 adds the following regressions:

5. Inverse: y = b + a/x
6. Simple Logistic: y = 1/(b + a*e^(-x))
7. Simple Quadratic: y = b + a*x^2
8. Square Root: y = √(a*x + b)

HP Prime Program: BESTFIT2
Code:
 EXPORT BESTFIT2(L1,L2) BEGIN // 2017-11-02 EWS // Simulate Best Fit // HP 48GX,49G,50g // additional models // initialize LOCAL clist,m,c,v,s; clist:={0,0,0,0,0,0,0,0}; // test // correlation is linear only // requires approx() // linear y=a*x+b clist[1]:=approx(correlation(L1,L2)); // log y=a*LN(x)+b  c:=approx(correlation(LN(L1),L2)); IF IM(c)==0 THEN clist[2]:=c; END; // exponential y=b*e^(a*x) c:=approx(correlation(L1,LN(L2))); IF IM(c)==0 THEN clist[3]:=c; END; // power y=b*a^x c:=approx(correlation(LN(L1),LN(L2))); IF IM(c)==0 THEN clist[4]:=c; END; // inverse y=b+a/x IF POS(L1,0)==0 THEN clist[5]:=approx(correlation(1/L1, L2)); END; // simple logistic IF POS(L2,0)==0 THEN clist[6]:=approx(correlation(e^(−L1), 1/L2)); END; // simple quadratic clist[7]:=approx(correlation(L1^2, L2)); // square root  IF ΣLIST(L2≥0)==SIZE(L2) THEN clist[8]:=approx(correlation(L1, L2^2)); END; // test // POS(L0^2,MAX(L0^2)) m:=POS(clist^2,MAX(clist^2)); c:=clist[m]; IF m==1 THEN v:=linear_regression(L1,L2); s:=STRING(v[2])+"+"+STRING(v[1])+ "*X"; END; IF m==2 THEN v:=logarithmic_regression(L1,L2); s:=STRING(v[2])+"+"+STRING(v[1])+ "*LN(X)"; END; IF m==3 THEN v:=exponential_regression(L1,L2); s:=STRING(v[2])+"*"+STRING(v[1])+ "^X"; END; IF m==4 THEN v:=power_regression(L1,L2); s:=STRING(v[2])+"*X^"+ STRING(v[1]); END; // inverse IF m==5 THEN v:=linear_regression(1/L1,L2); s:=STRING(v[2])+"+"+STRING(v[1])+ "/X"; END; // simple logistic IF m==6 THEN v:=linear_regression(e^(−L1), 1/L2); s:="1/("+STRING(v[2])+"+"+ STRING(v[1])+"*e^(−X))"; END; // simple quadratic IF m==7 THEN v:=linear_regression(L1^2,L2); s:=STRING(v[2])+"+"+STRING(v[1])+ "*X^2"; END; // square root IF m==8 THEN v:=linear_regression(L1,L2^2); s:="√("+STRING(v[2])+"+"+ STRING(v[1])+"*X)"; END; RETURN {s,c}; END;

Link: http://edspi31415.blogspot.com/2017/11/h...n-fit.html
 « Next Oldest | Next Newest »

 Messages In This Thread Best Regression Fit - Eddie W. Shore - 11-04-2017 02:08 PM RE: Best Regression Fit - salvomic - 11-04-2017, 03:51 PM RE: Best Regression Fit - akmon - 12-17-2017, 04:17 PM RE: Best Regression Fit - Namir - 12-27-2017, 03:31 PM RE: Best Regression Fit version 2 - Namir - 12-27-2017, 09:14 PM RE: Best Regression Fit - Namir - 12-28-2017, 12:54 PM

User(s) browsing this thread: 1 Guest(s)