Catsim

Latest version: v0.17.3

Safety actively analyzes 623936 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 2

0.17.3

This release

- updates the documentation
- fixes unit tests
- updates deprecated APIs of other packages
- adds Python 3.11 to the test matrix

**Full Changelog**: https://github.com/douglasrizzo/catsim/compare/0.17.2...0.17.3

0.17.2

This version provides a tentative fix for 29.

**Full Changelog**: https://github.com/douglasrizzo/catsim/compare/0.17.1...0.17.2

0.17.1

In this release, I have removed the hill climbing estimation method in favor of the newly implemented ones. Some edge cases were found in my implementation of the method which make the other ones not only faster, but more precise.

There is also a [wallclock time comparison](https://douglasrizzo.com.br/catsim/estimation.html#comparison-between-estimators) among estimators in the documentation.

0.17.0

Estimation overhaul

This version presents a major overhaul in the ability estimation module. I decided to revisit the theory behind finding extrema of unimodal functions without the use of derivatives (which is the case of the log-likelihood used to estimate the most likely abilities for examinees during a CAT, given their response patterns) and bumped into [this amazing playlist](https://www.youtube.com/playlist?list=PLb0Tx2oJWuYIXLHAjQgko2fZtJ_NxnV-x) by osveliz.

New estimator implementations

From that playlist, I have implemented the following methods for finding the maxima of the log-likelihood function:

- [ternary search](https://github.com/douglasrizzo/catsim/blob/f12b10f7add54741f7e1ee5c512bd984638c8a4c/catsim/estimation.py#L236-L271)
- [dichotomous search](https://github.com/douglasrizzo/catsim/blob/f12b10f7add54741f7e1ee5c512bd984638c8a4c/catsim/estimation.py#L236-L271)
- [fibonacci search](https://github.com/douglasrizzo/catsim/blob/f12b10f7add54741f7e1ee5c512bd984638c8a4c/catsim/estimation.py#L273-L315)
- [golden-section search](https://github.com/douglasrizzo/catsim/blob/f12b10f7add54741f7e1ee5c512bd984638c8a4c/catsim/estimation.py#L317-L348)

New estimators from SciPy

I also found out that all minimization methods implemented in [`scipy.optimize.minimize_scalar`](https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.minimize_scalar.html) work really well in catsim, so [I have also made those available in the estimation module](https://github.com/douglasrizzo/catsim/blob/f12b10f7add54741f7e1ee5c512bd984638c8a4c/catsim/estimation.py#L157-L167).

Better results

These changes have introduced a small but noticeable speedup in simulation times, since many of the new methods tend to evaluate the log-likelihood function fewer times than the older estimators present in catsim. In particular, all of the new methods are more theoretically sound than the `HillClimbingEstimator` as well as 5 to 10 times faster than the `DifferentialEvolutionEstimator`.

Breaking changes

Due to that, I have decided to retire the `DifferentialEvolutionEstimator` and joined all estimators [(including the `HillClimbingEstimator`)](https://github.com/douglasrizzo/catsim/blob/f12b10f7add54741f7e1ee5c512bd984638c8a4c/catsim/estimation.py#L174-L234) into a new [`NumericalSearchEstimator` class](https://github.com/douglasrizzo/catsim/blob/f12b10f7add54741f7e1ee5c512bd984638c8a4c/catsim/estimation.py#L11).

Instantiating the new estimators

For the old hill-clibing estimation method:

py
estimator = NumericalSearchEstimator("hillclimbing")


For the four new estimators implemented into catsim::

py
estimator = NumericalSearchEstimator("ternary")
estimator = NumericalSearchEstimator("dichotomous")
estimator = NumericalSearchEstimator("fibonacci")
estimator = NumericalSearchEstimator("golden2")


For the three estimators from `scipy.optimize.minimize_scalar()`:

py
estimator = NumericalSearchEstimator("brent")
estimator = NumericalSearchEstimator("bounded")
estimator = NumericalSearchEstimator("golden")


Closing remarks

If everything goes right with the new GitHub Actions I've implemented, the documentation will be updated shortly. The examples in the README as well as the documentation website will have all information regarding the new estimators. After the documentation update, you find a comparison among the new estimation methods [here](https://douglasrizzo.com.br/catsim/estimation.html#comparison-between-estimators).

0.16.0

This version mainly deals with instabilities in the `HillClimbingEstimator` when users feed it random response patterns. To deal with that, a small error margin was added to the location in which the estimator looks for the most probable new ability value during estimation.

Also, since it appears that most users do not want to deal with ability estimations equal to +infinity or -infinity, I have activated Dodd's estimation method by default in the `HillClimbingEstimator`.

Lastly, a bug was fixed related to how the `HillClimbingEstimator` chooses new bounds in its iterative algorithm.

0.15.7

This much needed release exists thanks to frankier, who recently contributed with PRs 22 25 26 and issues 23 24.

In other news:
- Tests have been migrated from Travis CI to GitHub Actions.
- The documentation at https://douglasrizzo.com.br/catsim/ has been minimally revised and updated.

Page 1 of 2

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.