|
4 | 4 | try:
|
5 | 5 | from numba import njit
|
6 | 6 | except (ImportError, ModuleNotFoundError):
|
7 |
| - |
8 |
| - def jit(*dec_args, **dec_kwargs): |
9 |
| - """ |
10 |
| - decorator mimicking numba.jit |
11 |
| - """ |
12 |
| - |
13 |
| - def intercepted_function(f, *f_args, **f_kwargs): |
14 |
| - return f |
15 |
| - |
16 |
| - return intercepted_function |
17 |
| - |
18 |
| - njit = jit |
19 |
| - |
| 7 | + from libpysal.common import jit as njit |
20 | 8 |
|
21 | 9 |
|
22 | 10 | def calculate_significance(test_stat, reference_distribution, alternative="two-sided"):
|
@@ -108,57 +96,3 @@ def _permutation_significance(test_stat, reference_distribution, alternative='tw
|
108 | 96 | return p_value
|
109 | 97 |
|
110 | 98 |
|
111 |
| -if __name__ == "__main__": |
112 |
| - import numpy |
113 |
| - import esda |
114 |
| - import pandas |
115 |
| - from libpysal.weights import Voronoi |
116 |
| - |
117 |
| - coordinates = numpy.random.random(size=(2000, 2)) |
118 |
| - x = numpy.random.normal(size=(2000,)) |
119 |
| - w = Voronoi(coordinates, clip="bbox") |
120 |
| - w.transform = "r" |
121 |
| - stat = esda.Moran_Local(x, w) |
122 |
| - |
123 |
| - ts = calculate_significance(stat.Is, stat.rlisas, method="two-sided") |
124 |
| - di = calculate_significance(stat.Is, stat.rlisas, method="directed") |
125 |
| - lt = calculate_significance(stat.Is, stat.rlisas, method="lesser") |
126 |
| - gt = calculate_significance(stat.Is, stat.rlisas, method="greater") |
127 |
| - fo = calculate_significance(stat.Is, stat.rlisas, method="folded") |
128 |
| - |
129 |
| - numpy.testing.assert_array_equal( |
130 |
| - numpy.minimum(lt, gt), di |
131 |
| - ) # di is just the minimum of the two tests |
132 |
| - |
133 |
| - print( |
134 |
| - f"directed * 2 is the same as two-sided {(di*2 == ts).mean()*100}% of the time" |
135 |
| - ) |
136 |
| - |
137 |
| - print( |
138 |
| - pandas.DataFrame( |
139 |
| - numpy.column_stack((ts, di, fo, lt, gt)), |
140 |
| - columns=["two-sided", "directed", "folded", "lt", "gt"], |
141 |
| - ).corr() |
142 |
| - ) |
143 |
| - |
144 |
| - answer = input("run big simulation? [y/n]") |
145 |
| - if answer.lower().startswith("y"): |
146 |
| - all_correlations = [] |
147 |
| - for i in range(1000): |
148 |
| - x = numpy.random.normal(size=(2000,)) |
149 |
| - stat = esda.Moran_Local(x, w) |
150 |
| - ts = calculate_significance(stat.Is, stat.rlisas, method="two-sided") |
151 |
| - di = calculate_significance(stat.Is, stat.rlisas, method="directed") |
152 |
| - lt = calculate_significance(stat.Is, stat.rlisas, method="lesser") |
153 |
| - gt = calculate_significance(stat.Is, stat.rlisas, method="greater") |
154 |
| - fo = calculate_significance(stat.Is, stat.rlisas, method="folded") |
155 |
| - corrs = ( |
156 |
| - pandas.DataFrame( |
157 |
| - numpy.column_stack((ts, di, fo, lt, gt)), |
158 |
| - columns=["two-sided", "directed", "folded", "lt", "gt"], |
159 |
| - ) |
160 |
| - .corr() |
161 |
| - .assign(repno=i) |
162 |
| - ) |
163 |
| - all_correlations.append(corrs) |
164 |
| - all_correlations = pandas.concat(all_correlations) |
0 commit comments