JuliaPsychometrics / ItemResponseFunctions.jl

A lightweight julia package providing basic implementations of item response models
MIT License
1 stars 0 forks source link

`iif` properties fail #46

Open p-gw opened 1 month ago

p-gw commented 1 month ago

There are property failures (probably) due to floating point errors.

Found counterexample
  Context: iif_is_nonnegative

  Arguments:
      arg_1::DataType = OneParameterLogisticModel
      arg_2::Float64 = 0.0
      arg_3::@NamedTuple{a::Float64, b::Float64, c::Float64, d::Float64, e::Float64, t::Tuple{Float64}} = (a = 0.0, b = 61.907687060349154, c = 0.0, d = 0.0, e = 0.0, t = (0.0,))

  Events:
    iif
        [1.29967008369982e-27, -1.793662034335766e-43]
Found counterexample
  Context: iif_maximum_at_b

  Arguments:
      arg_1::DataType = OneParameterLogisticModel
      arg_2::Float64 = 0.0
      arg_3::@NamedTuple{a::Float64, b::Float64, c::Float64, d::Float64, e::Float64, t::Tuple{Float64}} = (a = 0.0, b = -1.109138822452681e-16, c = 0.0, d = 0.0, e = 0.0, t = (0.0,))

  Events:
    info
        0.12500000000000003
    max_info
        0.125
p-gw commented 1 month ago

For 2-PL (and up) large values for a cause NaNs

Found counterexample
  Context: iif_is_nonnegative

  Arguments:
      arg_1::DataType = TwoParameterLogisticModel
      arg_2::Float64 = 0.0
      arg_3::@NamedTuple{a::Float64, b::Float64, c::Float64, d::Float64, e::Float64, t::Tuple{Float64}} = (a = 1.3407807929942597e154, b = 0.0, c = 0.0, d = 0.0, e = 0.0, t = (0.0,))

  Events:
    iif
        [NaN, NaN]
Found counterexample
  Context: iif_sums_to_total_information

  Arguments:
      arg_1::DataType = TwoParameterLogisticModel
      arg_2::Float64 = 0.0
      arg_3::@NamedTuple{a::Float64, b::Float64, c::Float64, d::Float64, e::Float64, t::Tuple{Float64}} = (a = 1.3407807929942597e154, b = 0.0, c = 0.0, d = 0.0, e = 0.0, t = (0.0,))
Found counterexample
  Context: iif_maximum_at_b

  Arguments:
      arg_1::DataType = TwoParameterLogisticModel
      arg_2::Float64 = 0.0
      arg_3::@NamedTuple{a::Float64, b::Float64, c::Float64, d::Float64, e::Float64, t::Tuple{Float64}} = (a = 1.3407807929942597e154, b = 0.0, c = 0.0, d = 0.0, e = 0.0, t = (0.0,))

  Events:
    info
        NaN
    max_info
        NaN
Found counterexample
  Context: information_is_additive

  Arguments:
      arg_1::DataType = TwoParameterLogisticModel
      arg_2::Float64 = 0.0
      arg_3::Vector{NamedTuple{(:a, :b, :c, :d, :e, :t), <:Tuple{Any, Any, Any, Any, Any, Tuple}}} = NamedTuple{(:a, :b, :c, :d, :e, :t), <:Tuple{Any, Any, Any, Any, Any, Tuple}}[(a = 1.3407807929942597e154, b = 0.0, c = 0.0, d = 0.0, e = 0.0, t = (0.0,))]

  Events:
    info
        NaN
    summed iifs
        NaN
Found counterexample
  Context: information_is_nonnegative

  Arguments:
      arg_1::DataType = TwoParameterLogisticModel
      arg_2::Float64 = 0.0
      arg_3::Vector{NamedTuple{(:a, :b, :c, :d, :e, :t), <:Tuple{Any, Any, Any, Any, Any, Tuple}}} = NamedTuple{(:a, :b, :c, :d, :e, :t), <:Tuple{Any, Any, Any, Any, Any, Tuple}}[(a = 1.3407807929942597e154, b = 0.0, c = 0.0, d = 0.0, e = 0.0, t = (0.0,))]