@@ -98,6 +98,32 @@ def test_find_MAP():
98
98
close_to (map_est2 ["sigma" ], 1 , tol )
99
99
100
100
101
+ def test_find_MAP_issue_5923 ():
102
+ # Test that gradient-based minimization works well regardless of the order
103
+ # of variables in `vars`, and even when starting a reasonable distance from
104
+ # the MAP.
105
+ tol = 2.0 ** - 11 # 16 bit machine epsilon, a low bar
106
+ data = np .random .randn (100 )
107
+ # data should be roughly mean 0, std 1, but let's
108
+ # normalize anyway to get it really close
109
+ data = (data - np .mean (data )) / np .std (data )
110
+
111
+ with Model ():
112
+ mu = Uniform ("mu" , - 1 , 1 )
113
+ sigma = Uniform ("sigma" , 0.5 , 1.5 )
114
+ Normal ("y" , mu = mu , tau = sigma ** - 2 , observed = data )
115
+
116
+ start = {"mu" : - 0.5 , "sigma" : 1.25 }
117
+ map_est1 = starting .find_MAP (progressbar = False , vars = [mu , sigma ], start = start )
118
+ map_est2 = starting .find_MAP (progressbar = False , vars = [sigma , mu ], start = start )
119
+
120
+ close_to (map_est1 ["mu" ], 0 , tol )
121
+ close_to (map_est1 ["sigma" ], 1 , tol )
122
+
123
+ close_to (map_est2 ["mu" ], 0 , tol )
124
+ close_to (map_est2 ["sigma" ], 1 , tol )
125
+
126
+
101
127
def test_find_MAP_issue_4488 ():
102
128
# Test for https://github.com/pymc-devs/pymc/issues/4488
103
129
with Model () as m :
0 commit comments