better abstraction and error handling/logging
This commit is contained in:
@ -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]
|
||||
|
Reference in New Issue
Block a user