module Math.IRT.MLE.Fenced
( DF (..)
, MLEResult (..)
, mleEst
) where
import Data.Default.Class
import Statistics.Distribution
import Math.IRT.Internal.Distribution
import Math.IRT.Internal.LogLikelihood
import Math.IRT.MLE.Internal.Generic
import Math.IRT.Model.Generic
data DF = DF { steps :: !Int
, thetaEstimate :: !Double
, lower_fence :: !Double
, upper_fence :: !Double
, fence_discrimination :: !Double }
instance Default DF where
def = DF 10 0.0 (3.5) 3.5 3.0
mleEst :: (ContDistr d, DensityDeriv d, LogLikelihood d, GenericModel d) => DF -> [Bool] -> [d] -> MLEResult
mleEst (DF n vTheta lf uf fd) rs params =
let resp = True : False : rs
pars = fromThreePLM fd lf 0 : fromThreePLM fd uf 0 : params
in generic_mleEst resp pars n vTheta