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