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.
- {searchlibrium-0.0.86 → searchlibrium-0.0.87}/PKG-INFO +1 -1
- {searchlibrium-0.0.86 → searchlibrium-0.0.87}/pyproject.toml +1 -1
- {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium/__init__.py +2 -0
- {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium/multinomial_logit.py +1 -1
- {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium/multinomial_nested.py +1 -1
- {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium/ordered_logit.py +2 -2
- {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium/rrm.py +9 -1
- searchlibrium-0.0.87/src/SearchLibrium/version.txt +1 -0
- {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium.egg-info/PKG-INFO +1 -1
- searchlibrium-0.0.86/src/SearchLibrium/version.txt +0 -1
- {searchlibrium-0.0.86 → searchlibrium-0.0.87}/README.md +0 -0
- {searchlibrium-0.0.86 → searchlibrium-0.0.87}/setup.cfg +0 -0
- {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium/Halton.py +0 -0
- {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium/MixedLogit.py +0 -0
- {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium/Mode_Activity_Nested.py +0 -0
- {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium/RandomP.py +0 -0
- {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium/SEARCH_SM_MARIO.py +0 -0
- {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium/Two_Level_Nest.py +0 -0
- {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium/__main__.py +0 -0
- {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium/_choice_model.py +0 -0
- {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium/_device.py +0 -0
- {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium/bhhh/minimize.py +0 -0
- {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium/boxcox_functions.py +0 -0
- {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium/call_meta.py +0 -0
- {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium/constraints_builder.py +0 -0
- {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium/harmony.py +0 -0
- {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium/latent_class.py +0 -0
- {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium/main.py +0 -0
- {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium/main_debug.py +0 -0
- {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium/mdcev.py +0 -0
- {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium/misc.py +0 -0
- {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium/mixed_logit.py +0 -0
- {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium/mixed_nested.py +0 -0
- {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium/mixedrrm.py +0 -0
- {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium/multinomial_probit.py +0 -0
- {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium/ordered_logit_mixed.py +0 -0
- {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium/search.py +0 -0
- {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium/selection_models.py +0 -0
- {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium/setup.py +0 -0
- {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium/siman.py +0 -0
- {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium/threshold.py +0 -0
- {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium.egg-info/SOURCES.txt +0 -0
- {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium.egg-info/dependency_links.txt +0 -0
- {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium.egg-info/entry_points.txt +0 -0
- {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium.egg-info/requires.txt +0 -0
- {searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium.egg-info/top_level.txt +0 -0
|
@@ -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.
|
|
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
|
|
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.
|
|
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 =
|
|
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 +0,0 @@
|
|
|
1
|
-
0.0.86
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{searchlibrium-0.0.86 → searchlibrium-0.0.87}/src/SearchLibrium.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|