diff options
Diffstat (limited to 'py/pvals.py')
-rw-r--r-- | py/pvals.py | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/py/pvals.py b/py/pvals.py new file mode 100644 index 0000000..9f46826 --- /dev/null +++ b/py/pvals.py @@ -0,0 +1,61 @@ +from data2 import trials, fancy +from scipy.stats import cramervonmises +from bisect import bisect_left +from random import random + +def distance(pit1, pit2): + out = ((pit2[1]-pit1[1])**2 + (pit2[0]-pit1[0])**2)**(1/2) + if (out == 0): + return 100 + else: + return out + +def cdf(a,nnsim,tup): + return [bisect_left(nnsim, x)/len(nnsim) for x in a] + +def calcpval(trialno): + trial = trials[trialno] + size = trial.size[0] + pits = len(trial.pits) + + nnsim = [] + for j in range(1000): + curpits = [] + k = 0 + while k < pits: + add = (random()*size,random()*size) + if trial.method == 'obstacles': + for obs in trial.fake: + if obs.contains(add): + continue + if trial.method == 'pits': + for pit in trial.fake: + if distance(add,pit.loc) < pit.diam/2: + continue + curpits.append(add) + k += 1 + for pit in curpits: + l = size + for pit2 in curpits: + l = min(l,distance(pit,pit2)) + nnsim.append(l) + + nnsim.sort() + + nnreal = trials[trialno].nearest_neighbor() + stat = cramervonmises(nnreal,cdf,(nnsim,())) + return stat.pvalue + +sizes = [[12,12],[24,24]] +meths = ['obstacles','pits','trails'] +pvals = [['']*len(sizes) for x in range(len(meths))] +for n in range(len(trials)): + trial = trials[n] + pvals[meths.index(trial.method)][sizes.index(trial.size)] = '%.4f' % calcpval(n) + +print('\\tabrule $12\\times12$&$24\\times24$\\cr\\tabrule') +for row in range(len(meths)): + print(fancy[meths[row]],end='') + for col in range(len(sizes)): + print('&'+pvals[row][col],end='') + print('\\cr\\tabrule') |