add rasch functionality to form generation
This commit is contained in:
parent
8ba6b95f21
commit
73f25edfa6
@ -1,6 +1,7 @@
|
|||||||
import logging
|
import logging
|
||||||
|
|
||||||
from lib.irt.models.three_parameter_logistic import ThreeParameterLogistic
|
from lib.irt.models.three_parameter_logistic import ThreeParameterLogistic
|
||||||
|
from lib.irt.models.rasch import Rasch
|
||||||
from lib.errors.item_generation_error import ItemGenerationError
|
from lib.errors.item_generation_error import ItemGenerationError
|
||||||
|
|
||||||
|
|
||||||
@ -20,6 +21,10 @@ class ItemInformationFunction():
|
|||||||
return (self.model_data.a_param * q *
|
return (self.model_data.a_param * q *
|
||||||
(p - self.model_data.c_param)**2) / (p * (
|
(p - self.model_data.c_param)**2) / (p * (
|
||||||
(1 - self.model_data.c_param)**2))
|
(1 - self.model_data.c_param)**2))
|
||||||
|
elif self.model_data.model == 'RASCH':
|
||||||
|
p = Rasch(self.model_data, kwargs).result()
|
||||||
|
q = 1 - p
|
||||||
|
return p * q
|
||||||
else:
|
else:
|
||||||
# potentially error out
|
# potentially error out
|
||||||
raise ItemGenerationError(
|
raise ItemGenerationError(
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
from lib.irt.models.three_parameter_logistic import ThreeParameterLogistic
|
from lib.irt.models.three_parameter_logistic import ThreeParameterLogistic
|
||||||
|
from lib.irt.models.rasch import Rasch
|
||||||
from lib.errors.item_generation_error import ItemGenerationError
|
from lib.errors.item_generation_error import ItemGenerationError
|
||||||
|
|
||||||
|
|
||||||
@ -10,5 +11,7 @@ class ItemResponseFunction():
|
|||||||
def calculate(self, **kwargs):
|
def calculate(self, **kwargs):
|
||||||
if self.model_data.model == '3PL':
|
if self.model_data.model == '3PL':
|
||||||
return ThreeParameterLogistic(self.model_data, kwargs).result()
|
return ThreeParameterLogistic(self.model_data, kwargs).result()
|
||||||
|
elif self.model_data.model == 'RASCH':
|
||||||
|
return Rasch(self.model_data, kwargs).result()
|
||||||
else:
|
else:
|
||||||
raise ItemGenerationError("irt model not supported or provided")
|
raise ItemGenerationError("irt model not supported or provided")
|
||||||
|
@ -5,7 +5,7 @@ from lib.irt.models.base import *
|
|||||||
class Rasch(Base):
|
class Rasch(Base):
|
||||||
|
|
||||||
def result(self):
|
def result(self):
|
||||||
return 0.0
|
return (1 / (1 + self.e(-1 * (self.theta - self.b_param))))
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def ability_estimate(self, items) -> float:
|
def ability_estimate(self, items) -> float:
|
||||||
|
@ -72,6 +72,7 @@ class FormGenerationService(Base):
|
|||||||
current_drift = 0 # FF Tokyo Drift
|
current_drift = 0 # FF Tokyo Drift
|
||||||
|
|
||||||
# adding an element of randomness to the items and bundles used
|
# adding an element of randomness to the items and bundles used
|
||||||
|
# may need to change impl based on limit of items available
|
||||||
selected_items = self.solver_run.select_items_by_percent(30)
|
selected_items = self.solver_run.select_items_by_percent(30)
|
||||||
selected_bundles = self.solver_run.select_bundles_by_percent(
|
selected_bundles = self.solver_run.select_bundles_by_percent(
|
||||||
30)
|
30)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user