diff --git a/Random/__pycache__/stats.cpython-311.pyc b/Random/__pycache__/stats.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..99b30e77125b8e59c18d27673114aa526b93eba2 Binary files /dev/null and b/Random/__pycache__/stats.cpython-311.pyc differ diff --git a/Random/main.py b/Random/main.py index 1d4c0040bb8f8b42a71f47a307a0421e5792106f..4af170438c93867a6e685e2bdb1ca1bf8e68d28f 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 0000000000000000000000000000000000000000..6b1b11d9ced8c32249df61062f1ac66e056fbb78 --- /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) +