SearchLibrium 0.0.86__tar.gz → 0.0.87__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. {searchlibrium-0.0.86 → searchlibrium-0.0.87}/PKG-INFO +1 -1
  2. {searchlibrium-0.0.86 → searchlibrium-0.0.87}/pyproject.toml +1 -1
  3. {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium/__init__.py +2 -0
  4. {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium/multinomial_logit.py +1 -1
  5. {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium/multinomial_nested.py +1 -1
  6. {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium/ordered_logit.py +2 -2
  7. {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium/rrm.py +9 -1
  8. searchlibrium-0.0.87/src/SearchLibrium/version.txt +1 -0
  9. {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium.egg-info/PKG-INFO +1 -1
  10. searchlibrium-0.0.86/src/SearchLibrium/version.txt +0 -1
  11. {searchlibrium-0.0.86 → searchlibrium-0.0.87}/README.md +0 -0
  12. {searchlibrium-0.0.86 → searchlibrium-0.0.87}/setup.cfg +0 -0
  13. {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium/Halton.py +0 -0
  14. {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium/MixedLogit.py +0 -0
  15. {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium/Mode_Activity_Nested.py +0 -0
  16. {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium/RandomP.py +0 -0
  17. {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium/SEARCH_SM_MARIO.py +0 -0
  18. {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium/Two_Level_Nest.py +0 -0
  19. {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium/__main__.py +0 -0
  20. {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium/_choice_model.py +0 -0
  21. {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium/_device.py +0 -0
  22. {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium/bhhh/minimize.py +0 -0
  23. {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium/boxcox_functions.py +0 -0
  24. {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium/call_meta.py +0 -0
  25. {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium/constraints_builder.py +0 -0
  26. {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium/harmony.py +0 -0
  27. {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium/latent_class.py +0 -0
  28. {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium/main.py +0 -0
  29. {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium/main_debug.py +0 -0
  30. {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium/mdcev.py +0 -0
  31. {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium/misc.py +0 -0
  32. {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium/mixed_logit.py +0 -0
  33. {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium/mixed_nested.py +0 -0
  34. {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium/mixedrrm.py +0 -0
  35. {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium/multinomial_probit.py +0 -0
  36. {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium/ordered_logit_mixed.py +0 -0
  37. {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium/search.py +0 -0
  38. {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium/selection_models.py +0 -0
  39. {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium/setup.py +0 -0
  40. {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium/siman.py +0 -0
  41. {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium/threshold.py +0 -0
  42. {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium.egg-info/SOURCES.txt +0 -0
  43. {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium.egg-info/dependency_links.txt +0 -0
  44. {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium.egg-info/entry_points.txt +0 -0
  45. {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium.egg-info/requires.txt +0 -0
  46. {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: SearchLibrium
3
- Version: 0.0.86
3
+ Version: 0.0.87
4
4
  Summary: A Python package for econometric models driven by search
5
5
  Author: Alexander Paz Prithvi Beeramole, Robert Burdett
6
6
  Author-email: Zeke Ahern <z.ahern@qut.edu.au>
@@ -59,7 +59,7 @@ Homepage = "https://github.com/zahern/HypothesisX"
59
59
  realpython = "SearchLibrium.__main__:main"
60
60
 
61
61
  [tool.bumpver]
62
- current_version = "0.0.86"
62
+ current_version = "0.0.87"
63
63
  version_pattern = "MAJOR.MINOR.PATCH"
64
64
  commit_message = "[skip ci] Bump version {old_version} -> {new_version}"
65
65
  commit = true
@@ -88,6 +88,7 @@ except ImportError:
88
88
  try:
89
89
  from ._choice_model import DiscreteChoiceModel
90
90
  from .multinomial_logit import MultinomialLogit
91
+ from .MixedLogit import MixedLogit
91
92
  from .multinomial_nested import NestedLogit, MultiLayerNestedLogit
92
93
  from .Halton import Halton
93
94
  from .rrm import RandomRegret
@@ -107,6 +108,7 @@ try:
107
108
  except ImportError as e:
108
109
  from _choice_model import DiscreteChoiceModel
109
110
  from multinomial_logit import MultinomialLogit
111
+ from MixedLogit import MixedLogit
110
112
  from multinomial_nested import NestedLogit, MultiLayerNestedLogit
111
113
  from Halton import Halton
112
114
  from rrm import RandomRegret
@@ -626,7 +626,7 @@ class MultinomialLogit(DiscreteChoiceModel):
626
626
  ''' ---------------------------------------------------------- '''
627
627
  ''' Function '''
628
628
  ''' ---------------------------------------------------------- '''
629
- def scipy_bfgs_optimization(self, betas, X, y, weights, avail, maxiter, ftol, gtol, jac, return_opg, sklearn=None):
629
+ def scipy_bfgs_optimization(self, betas, X, y, weights, avail, maxiter, ftol, gtol, jac, return_opg=False, sklearn=None):
630
630
  # {
631
631
 
632
632
 
@@ -906,7 +906,7 @@ class NestedLogit(MultinomialLogit):
906
906
  V_j = float(V[i, chosen_alt]) # V_{A1}
907
907
  sumPV_g = float(sumPV_per_nest[chosen_nest_name][i]) # Σ_k P(k|A) V_k
908
908
  logS_g = float(logS_per_nest[chosen_nest_name][i]) # ln S_A
909
- T_i = float(T[i])
909
+ T_i = float(T[i, 0]) # T has shape (N,1) due to keepdims=True
910
910
 
911
911
  # TERM 1: ( sumPV_g - V_j ) / lambda_g^2
912
912
  term1 = (sumPV_g - V_j) / (lambda_g ** 2)
@@ -296,7 +296,7 @@ class OrderedLogit():
296
296
  def find_category(self, values: np.ndarray, thresholds: np.ndarray)->np.ndarray:
297
297
  # {
298
298
  category = np.digitize(values, thresholds)
299
- return category - 1
299
+ return category
300
300
  # Note: Subtract - 1 to convert indexing starting from 1 to indexing starting from 0
301
301
  # }
302
302
 
@@ -699,7 +699,7 @@ class OrderedLogit():
699
699
  self.method = method
700
700
 
701
701
  if start is None:
702
- start = [0] * self.params
702
+ start = [0] * self.nparams
703
703
  value = [1] * (self.J - 2) # These are the deltas
704
704
  set_last_elements(start, self.J - 2, value)
705
705
 
@@ -206,7 +206,7 @@ class RandomRegret(DiscreteChoiceModel):
206
206
 
207
207
  X, y, varnames, alts, isvars, transvars, ids, weights, panels, avail = \
208
208
  self.set_asarray(X, y, varnames, alts, isvars, transvars, ids, weights, None, avail)
209
- self.nb_samples, self.nb_attr = self.X.shape
209
+ self.nb_samples, self.nb_attr = X.shape
210
210
  self.nb_alt = len(set(alts))
211
211
  # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
212
212
  # CHECK FOR MISTAKES IN DATA
@@ -247,6 +247,13 @@ class RandomRegret(DiscreteChoiceModel):
247
247
  self.fixedtransvars = self.transvars
248
248
  self.X, self.Xnames = self.setup_design_matrix(self.X)
249
249
 
250
+ # Update nb_samples to reflect per-observation count (after 3D reshape)
251
+ self.nb_samples = self.N
252
+ self.nb_attr = self.X.shape[2] if self.X.ndim == 3 else self.X.shape[1]
253
+ # Convert binary choice indicators (N*J,) to per-obs chosen alt index (N,)
254
+ y_matrix = self.y.reshape(self.N, self.J)
255
+ self.y = np.argmax(y_matrix, axis=1).astype(int)
256
+
250
257
 
251
258
 
252
259
  if self.weights is not None:
@@ -283,6 +290,7 @@ class RandomRegret(DiscreteChoiceModel):
283
290
  '''
284
291
  self.y = np.zeros((self.nb_samples), dtype=int)
285
292
  self.attrs = kwargs.get("varnames", varnames)
293
+ self.normalize = kwargs.get('normalize', False)
286
294
  self.initialise()
287
295
 
288
296
 
@@ -0,0 +1 @@
1
+ 0.0.87
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: SearchLibrium
3
- Version: 0.0.86
3
+ Version: 0.0.87
4
4
  Summary: A Python package for econometric models driven by search
5
5
  Author: Alexander Paz Prithvi Beeramole, Robert Burdett
6
6
  Author-email: Zeke Ahern <z.ahern@qut.edu.au>
@@ -1 +0,0 @@
1
- 0.0.86
File without changes
File without changes