better abstraction and error handling/logging

This commit is contained in:
brmnjsh
2023-09-15 19:34:31 +00:00
parent 00ba6f4fc3
commit 64a1011604
4 changed files with 31 additions and 9 deletions

View File

@ -15,9 +15,18 @@ class Rasch:
@classmethod
def ability_estimate(self, items) -> float:
# responses are mapped into a matrix, where each row and item
# and each column is an exam form result
# we'll likely have to change this to something more robust
# when we get into more complex response types
responses = np.array([[int(item.response)] for item in items])
# the difficulty (b param) for each item is in an ordered list
difficulty = np.array([item.b_param for item in items])
# the package currently utilizes a fixed a param (discrimination)
discrimination = np.linspace(1, 1, len(difficulty))
return ability_mle(responses, difficulty, discrimination)
# there are many methodologies to calculate ability from a data set of responses
# this is what our client currently uses but we should expand this to allow for
# switching between methodologies when needed
# it also currrently only does a single ability estimation
# at some point we can also accommodate batch ability estimates if need be
return ability_mle(responses, difficulty, discrimination).tolist()[0]