From dc7bcefc75ce66017b9bc1c504f2ef1dbc16fb5e Mon Sep 17 00:00:00 2001 From: Enzo De Carvalho Bittencourt <enzo.decarvalhobittencourt@ensiie.eu> Date: Thu, 28 Sep 2023 16:32:15 +0200 Subject: [PATCH] updated stats --- Random/__pycache__/stats.cpython-311.pyc | Bin 0 -> 1115 bytes Random/main.py | 31 +++++++++++++++++++++++ Random/stats.py | 19 ++++++++++++++ 3 files changed, 50 insertions(+) create mode 100644 Random/__pycache__/stats.cpython-311.pyc create mode 100644 Random/stats.py diff --git a/Random/__pycache__/stats.cpython-311.pyc b/Random/__pycache__/stats.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..99b30e77125b8e59c18d27673114aa526b93eba2 GIT binary patch literal 1115 zcmZ`&%}X0W6rbIl#AIWt#Avl3jy)7pj3H3;&=M&`GzW#&o<ixe?oM#SW;gDKG$DZ$ zdgwu+g@RrR9$IVBL;nQ(A7slyWx!J@#alpn@zmMX4aU;9Gw*}<@q06G_H#VW14_TQ zhw%stz)#Nzh}u4#BPw=)42nQzWL9O0tS`ADCv&es5z6c;NWuCdzpTr)ijk!wNmM0U z6)lW5MMKeTlS<XbNY{`^mtlxCe(H%WYL=qnX;i_YHjS_)&CI0uGY@q|3gA5}OgBgO z`3uHt#iBf*a#wHA_Kw(nns?aEeNMF|+vFNtgQ>@;4tsLDaSd4Z>iZ;L#U8=lTFsCZ z4PpRjz<r8**hTO0g?fD@mI2rOJw1einvEM-|B1SR+uI|>=@04wQ0@!#y-1*4mkmfU zd+v)4GE|@95hZC|F*j_{z%nZ72C_AUiVBhy(=wDbKjc}8A#np+wxJ1<Zfll#=G{k% zB_VTNtYX5K6jc@c(Wjz>)v6>+>ulJVz>=-11e!`6lTg)AG>dSiU7?ARQms*8iIz#C z-6m3D!qI0#m=(eZBz%cR;`*A2jZG{IB?E7eIDT2hl67U8-mCFWg3!hN%(`B|nX;&* zMa|SR3oEOI!a`=Xuvo}E6*XC}WPHRKik;|!%EHyDjZs?4yFzn^vKIIg0fULH+V0Rn zzCDn22D0uz_SI7BajSHaytA8qx71qxl^l7$xR-YCJ~(EMC%<v+WZp^U-DJMCd<vs) z(heMT;pm6q-KH~^cE{3f=q>8nzPokr?YP5FxctPY#K)0?xHCEHPR=@T&V_SrICmNw z+<N#UhQ7zp-uTzJ6U(`=TpQ-jX=`+Rq)!lJT@nNm((FpLW_W!Yw>;*Z;tMdwJpDFh z7m-I5|Ch}f<J9zKXU<dB;TVSLup9$Bz+(}>47EYxa-D$wmj87i&&+qgzsv{t3&r3A A^Z)<= literal 0 HcmV?d00001 diff --git a/Random/main.py b/Random/main.py index 1d4c004..4af1704 100755 --- a/Random/main.py +++ b/Random/main.py @@ -3,7 +3,10 @@ import graph from datetime import datetime import matplotlib.pyplot as plt import numpy as np +import stats +import scipy import seaborn as sns +import csv #shut up stupid warnings from not "the-most-up-to-date" libraries import warnings @@ -43,6 +46,31 @@ def iteratives(N, seed, generator): results[name] = res return results +def write_stats(data, name): + fields=["name","quantil25", "quantil50", "quantil75", "mean" + , "variance", "skew", "exckurt"] + quantil25 = np.quantile(data,0.25) + quantil50 = np.quantile(data,0.5) + quantil75 = np.quantile(data,0.75) + mean = np.mean(data) + variance = np.var(data) + skew = scipy.stats.skew(data) + exckurt = scipy.stats.kurtosis(data) - 3 + #write file + with open(name+'.csv', 'w', newline='') as csvfile: + datawriter = csv.DictWriter(csvfile, fieldnames=fields) + datawriter.writeheader() + datawriter.writerow({ + "name" : name, + "quantil25" : str(quantil25), + "quantil50" : str(quantil50), + "quantil75" : str(quantil75), + "mean" : str(mean), + "variance" : str(variance), + "skew" : str(skew), + "exckurt" : str(exckurt)}) + return + if __name__=="__main__": ##INIT PARAMS## N = 100 @@ -70,3 +98,6 @@ if __name__=="__main__": graph.compare(0, RESOLUTION, seed , iteratives([1000, 10, 100], seed, ParkMiller())) + print(stats.chisquared_uniform(data["ParkMiller"],N)) + print(np.quantile(data["ParkMiller"],0.25)) + write_stats(data["ParkMiller"],"ParkMiller") diff --git a/Random/stats.py b/Random/stats.py new file mode 100644 index 0000000..6b1b11d --- /dev/null +++ b/Random/stats.py @@ -0,0 +1,19 @@ +""" +Module to calculate various value on an array +(Quantile, mean, etc..) +""" +import numpy as np +import scipy + +def chisquared_uniform(arr, N): + """ + chisquared for uniform distrib + """ + _,counts = np.unique(arr, return_counts=True) + observed_freq = counts/N + #print(observed_freq) + expected_freq = np.full(shape=observed_freq.size,fill_value=1/N) + print(observed_freq),print(expected_freq) + print(np.sum(expected_freq), np.sum(observed_freq)) + return scipy.stats.chisquare(observed_freq, expected_freq) + -- GitLab