working TCC (Test response funciton)

This commit is contained in:
Josh Burman
2021-10-29 18:43:56 +00:00
parent 6b1bbda169
commit 258915b08f
7 changed files with 25 additions and 19 deletions

View File

@ -1,4 +1,4 @@
from models.three_parameter_logitistc import ThreeParameterLogistic
from lib.irt.models.three_parameter_logistic import ThreeParameterLogistic
class ItemResponseFunction():
def __init__(self, irt_model):
@ -6,7 +6,7 @@ class ItemResponseFunction():
def calculate(self, **kwargs):
if self.model_data.model == '3PL':
return ThreeParameterLogistic.new(self.model_data, kwargs).result
return ThreeParameterLogistic(self.model_data, kwargs).result()
else:
# potentially error out
return None

View File

@ -7,7 +7,6 @@ class ThreeParameterLogistic:
self.theta = kwargs['theta']
def result(self):
a = self.model_params.a
c = self.model_params.c
return c + (1 - c) * (1 / (1 + e**(-a * (self.theta - self.b_param))))
a = self.model_params.a_param
c = self.model_params.c_param
return c + (1 - c) * (1 / (1 + self.e**(-a * (self.theta - self.b_param))))

View File

@ -1,12 +1,17 @@
from lib.irt.item_response_function import ItemResponseFunction
# otherwise known as the Test Characteristic Curve (TCC)
class TestResponseFunction():
def __init__(self, irf):
self.irf = irf
def __init__(self, irt_model):
self.irt_model = irt_model
self.irf = ItemResponseFunction(irt_model)
def calculate(self, items, **kwargs):
result = 0
sum = 0
for item in items:
result += irf.calculate(b_param=item.b_param, theta=kwargs['theta'])
result = self.irf.calculate(b_param=item.b_param, theta=kwargs['theta'])
item.irf = result
sum += item.irf
return result
return sum