stanbkt.fits.MLEFit#

class stanbkt.fits.MLEFit(verbose=VerbosityLevel.INFO, fits=None, fit_metadata=None, cache_summary=True, summary_percentiles=(2.5, 97.5), _summary_cache=None)#

Bases: FitBase

Fit class using Maximum Likelihood Estimation (MLE) / Optimization.

This class wraps CmdStanPy’s optimization algorithm to fit BKT models by finding point estimates that maximize the likelihood function.

Inherits all state management from BaseFit.

Parameters:
add_fit(kc, fit, overwrite_kcs=False, group2index=None, groups=None)#

Add a fit for a knowledge component to the model’s fit state.

Parameters:
  • kc (str) – Knowledge component identifier.

  • fit (Union[CmdStanMCMC, CmdStanMLE, CmdStanVB, CmdStanPathfinder]) – CmdStan fit object to add for the KC.

  • overwrite_kcs (bool) – Whether to overwrite existing fits for KCs that are being added again.

  • group2index (dict[str, int] | None) – Optional mapping from group ID to 1-based index used for this KC’s fit.

  • groups (set[str] | None) – Optional set of group IDs used for this KC’s fit.

Raises:

ValueError – If the fit’s method is incompatible with the model’s fit method, or if a fit for the KC already exists and overwrite_kcs=False.

Return type:

None

get_fit(kc)#

Get the fit for a knowledge component.

Parameters:

kc (str) – Knowledge component identifier.

Returns:

CmdStan fit object for the specified KC.

Return type:

Union[CmdStanMCMC, CmdStanMLE, CmdStanVB, CmdStanPathfinder]

Raises:

KeyError – If no fit exists for the specified KC.

get_fit_save_entry(kc)#

Return persisted fit metadata entry for a KC, if available.

Return type:

FitSaveEntry | None

Parameters:

kc (str)

get_fitted_kcs()#

Return all known fitted KCs.

Return type:

set[str]

has_kc(kc)#

Check if a fit exists for a knowledge component.

Parameters:

kc (str) – Knowledge component identifier.

Returns:

True if a fit exists for the specified KC, False otherwise.

Return type:

bool

log(msg, level=VerbosityLevel.INFO)#

Log a message if verbosity level permits.

Parameters:
  • msg (str) – Message to log.

  • level (VerbosityLevel) – Verbosity level of this message. Message is printed if self.verbose >= level. Lower enum values = higher verbosity.

set_verbosity(level)#

Set the verbosity level for logging.

Parameters:

level (VerbosityLevel) – New verbosity level.

Raises:

ValueError – If level is not a valid VerbosityLevel.

summary(kcs=None, kc_col_name='kc_id', percentiles=(2.5, 97.5))#

Public wrapper that delegates to the subclass _summary() implementation.

Return type:

DataFrame

Parameters: