Source code for psy.irt.base
# coding=utf-8
from scipy.stats import norm
import numpy as np
[docs]class ZMixin(object):
[docs] def z(self, slop, threshold, theta):
"""
:param slop:
:param threshold:
:param theta:
:return:
"""
return slop * theta + threshold
[docs]class RaschZMixin(object):
[docs] def z(self, threshold, theta):
# z函数
return theta + threshold
[docs]class ProbitMixin(object):
[docs] def p(self, z):
# 回答正确的概率函数
return norm.cdf(z)
[docs]class LogitMixin(object):
[docs] def p(self, z):
# 回答正确的概率函数
e = np.exp(z)
p_val = e / (1.0 + e)
return p_val
[docs]class GuessLogitMixin(LogitMixin):
[docs] def p(self, guess, *args, **kwargs):
p_val = super(GuessLogitMixin, self).p(*args, **kwargs)
return guess + (1 - guess) * p_val
[docs]class GuessProbitMixin(ProbitMixin):
[docs] def p(self, guess, *args, **kwargs):
p_val = super(GuessProbitMixin, self).p(*args, **kwargs)
return guess + (1 - guess) * p_val