From bfb820f15754259cfbade70c425d812cadbe3bac Mon Sep 17 00:00:00 2001 From: ltcptgeneral <35508619+ltcptgeneral@users.noreply.github.com> Date: Sun, 25 Nov 2018 21:54:47 -0600 Subject: [PATCH] analysis.py - v 1.0.4.001 changelog: - added log regressions - added exponential regressions - added log_regression and exp_regression to __all__ --- __pycache__/analysis.cpython-37.pyc | Bin 20249 -> 21298 bytes analysis.py | 61 +++++++++++++++++++++++++--- 2 files changed, 55 insertions(+), 6 deletions(-) diff --git a/__pycache__/analysis.cpython-37.pyc b/__pycache__/analysis.cpython-37.pyc index 82da3300479dfc9ccdf1d59543526dfe33745db3..ea8634b26eb79590354b9335edbe37a8a2fd17a0 100644 GIT binary patch delta 2576 zcma);Yitx%6vyY>+1Z_L=~7zkw$SL5K)bVTx1~jeN((I%5ZZzwREs>8-mz5Hw%i%o zT6a@p2|fT7t}l!bHi}UagStMVCVnvbO{0Dz6B8pMM1=T=!T5@vGh1P8G`hRg8X2plm*!>VVgh%;wY)xLxYp{*-S{}o;n%D7qY-?63d_Hg3qwof+c0%om@tb)gU$6({8&JJ% z315ma*YZ~0hV6BHJzvh-_dw6}d<9>Lo`rlBzY*I-d^KN#Z4I6u|3WWONc>H zV_5yp4ojeKU~s^&M*D5Y8gLA54fpq2#z@>YY%5{)IuTOToXGtK9?vlo%vW1Y7r|$tArIo zjMb9`I-7~;f~;4iK>Xz66~Jp5UiP~vm|GofaFlH33BbH_Qof{mj5+EtALjR!DQWO* zmWJ7AWA>tM1wC4FTulOpw3^Z!e^TSDj25qk6})2;fXnrHw#I>aaJzm?7Z|PiTe@;g z=cP&MxJ@nT$8mUh+q@SO>B&G6CRi%Z$(yu-Nq;gg8SGQX5ptkQT#x$@(^1AsqDEw3 zD3%!Pi;S5@o$;5gnr8LbwBdNdj>U(DtN|Vo4`93*6pLtV6UlrOmkkWLDh?M9k*kbk zA4vhpG!!#m>?ivGiaYMx9=9!58{K+GzayH-{|L#WBnL?jkw}uqNGdMN9JJgJX4)#O zK4IB*|KPw?455@_hvEU9!$K@Fi8hN-9LByJmg6}vKf|sZm@t9gDKO#RVcx0Hqs9re zKM85z?0_$&an%XrkPIMWElZLJIf3yhos*b(;D4ajx$dFPn?!vSQU3)v&k0UNjiiHF z(k8et@(V=9)aZCLlI8A?j+tgOGR92vpD^c7!7LufVu>e6JkC4G`VZLRNepteyK_-* z#$o@PwKY1F!@6!N>r%G(@2ro=hg-_zaNP#DQGQsL!K35e`Wjf9d8z(5Ks>X)As^r# zxwSD2C*?@vGn#lB7br^>+^3yD<9>N$K^RVCUSIHv3NK{(7WOcBLcZ7Z){N8G`w?Zw zOVL4`&g{S8W`Hl`=Zl~6e}z7AMy8tEv^1KZ$oHG8AT2L6?+ahR`!h67M?(PyI)p%6 z$UNLK58$GFZOQzKAF;!Q^{#rC-8bb~7hhxFdFfx;2w%&lrGLPA+0?qQ`ezzZuy)uI zcO(W!+UX#6gB#S-+DMk>I(dn9SAi5ZG;rALZL^<*Zbdr?3ftywvssi>UJavRM$4+VV~LJ_=V| zh>QL5yOOYMY1hLE$J%uro}}3duppFz4@99%FCW&uc%PUquW7F?Zn+W^0s{*risk0^ zZ90|SRK+FvL3^}##g(8ShG0;MWGkL+3ew^`XvyBOL}Nsn#4AI9)}@Kt$>G7Gnv0)E zzNgw~-Dq~opH_TWFqthIDnD6S4!6pSD?hCZQG&~Jn=CuoH1bx^Jf6%U>oydgxwuM) ztG}dsI{E1J>&=Ndi#|sduik9rgoyCv*}RD;XjneFdRb+f=J9qyD=_tJaxXl0CqJ*g z+Vq?>+*P;Q_7Ih;5byBs9TuycmBUQ$D`v~3YmRsRQ`u(IDsn33`bM|M#g)3b%(kcQ zc@t(x%7%`SB6>E(ohXRRD`L5Pr=uM9%2OQ`(`Vw;CUi~yTBP22E$FhPbNj69;qodC zeh|eC*gF$eTnva8MU;ddC_xCb@Vys--XTE`zqcvj zfh?rBVv-UP!Y^(mA$Y>80BuS1kW?u0Qt6Dat1rH5knc`dE%g6@y%)u&`ZSsDnki3q PEz#!cv-DZ=+pg%JMI2Z} delta 1512 zcmZuxYfM~K5WaKn?sBs%3+`@tSWz_cxIDJYtEEVkh28Qj&s6Ht25AqV7Qr62lo*If zA@Th~CQ*E(mY9;N@khI<#+c|Ie>NJ8f4o%*O&ddOs`W)^n&8Y`TKM7Kz2D54`DV_X znS1YrC3yQZcpK8v+#3DfJ@i-qCj)PIv&AhqU$hqvq|Irue3>u3BnxDLOea|=3uO_> zB5BHElBO(?r6h}+G+8EtbD9hemCWj~QrRJQ$PFXL* zAsynAIcN;i4IxVzp^Khinx8dN9X*qfaB7i`IB9_-nA3n9MWTOqD&({a zO`Gs0GeQQ%89AaxPH2^Ycw{u_QZ>ng1; za-2bm27+qwg1VYmXvhb+hF><8!*%?lai?>I++Scuq!Lyz64`(&7>U-vO`M57@GvJ) z*BJgGuw29A>e<1#s;7l1)NAZm!*HhGwM^>w0)LDa!1DaQ`LQeP`kP^r;TFT=44g;# z7}g0)VL2xUM^6l?>uh@PE<8k)ux4ky-xkNghdAzlW}&jreb>COG(wuYn4rT!HCPE&*%vWcn;{J442xJ{v^L#3eE zQsPhFB6%T?dZ$uxq~%G2r(x>q27cR8?9bXFxp~x}yy$8DpjH5#rJb0nmVsjwk0;s5 z4bn`fI>ZKhe)iFS=jAH*(%DDq{RnNB(l&QXQgJai+j)?KajosUEEjKbH$P3oW;t-V zJqxN6YwZTW<@t_m=Pwiy#oUg=d6#($o|y?Mouln`bEg%Pn(&>D#@?+uIk#yf)7tcH zb&|`11C}d39v>X7uv|ySPmIMY?1Xoc+Y{6WCMLod>dXN@wsxK^|G&=oxs+{9u^dxJ z2GwS3Ft2MT?8myUlLI%o&}X3IJ|dQSnZQb!I5s*osK(S8{JJ|j, " @@ -27,6 +27,8 @@ __all__ = [ 'stdev_z_split', 'histo_analysis', #histo_analysis_old is intentionally left out as it has been depreciated since v 1.0.1.005 'poly_regression', + 'log_regression', + 'exp_regression', 'r_squared', 'rms', 'basic_analysis', @@ -508,8 +510,6 @@ def poly_regression(x, y, power): reg_eq = scipy.polyfit(x, y, deg = power) - print(reg_eq) - eq_str = "" for i in range(0, len(reg_eq), 1): @@ -522,19 +522,68 @@ def poly_regression(x, y, power): vals = [] for i in range(0, len(x), 1): - print(x[i]) z = x[i] exec("vals.append(" + eq_str + ")") - print(vals) - _rms = rms(vals, y) r2_d2 = r_squared(vals, y) return [eq_str, _rms, r2_d2] +def log_regression(x, y, base): + + x_fit = [] + + for i in range(len(x)): + + x_fit.append(np.log(x[i]) / np.log(base)) #change of base for logs + + reg_eq = np.polyfit(x_fit, y, 1) # y = reg_eq[0] * log(x, base) + reg_eq[1] + + eq_str = str(reg_eq[0]) + "* (np.log(z) / np.log(" + str(base) +"))+" + str(reg_eq[1]) + + vals = [] + + for i in range(len(x)): + + z = x[i] + + exec("vals.append(" + eq_str + ")") + + _rms = rms(vals, y) + + r2_d2 = r_squared(vals, y) + + return [eq_str, _rms, r2_d2] + +def exp_regression(x, y, base): + + y_fit = [] + + for i in range(len(y)): + + y_fit.append(np.log(y[i]) / np.log(base)) + + reg_eq = np.polyfit(x, y_fit, 1, w=np.sqrt(y)) # y = base ^ (reg_eq[0] * x) * base ^ (reg_eq[1]) + + eq_str = "(" + str(base) + "**(" + str(reg_eq[0]) + "*z))*(" + str(base) + "**(" + str(reg_eq[1]) + "))" + + vals = [] + + for i in range(len(x)): + + z = x[i] + + exec("vals.append(" + eq_str + ")") + + _rms = rms(vals, y) + + r2_d2 = r_squared(vals, y) + + return [eq_str, _rms, r2_d2] + def r_squared(predictions, targets): # assumes equal size inputs out = metrics.r2_score(targets, predictions)