aboutsummaryrefslogtreecommitdiff
path: root/py/pvals.py
diff options
context:
space:
mode:
Diffstat (limited to 'py/pvals.py')
-rw-r--r--py/pvals.py61
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')