Skip to content

Treatment of missing values

In PersonParameters.jl missing values are ignored in estimation of the person ability. Hence, missing is treated as if the test-taker was never exposed to the item. In classical testing this can arise, for example, due to structural missing values by means of the test design.

By definition missing data should have no influence on the estimation of the person abilitiy. We can easily verify this property,

julia
using PersonParameters

betas = randn(10)
y = rand([0, 1, missing], 10)
10-element Vector{Union{Missing, Int64}}:
 1
  missing
 1
 1
  missing
  missing
  missing
 1
 0
 0
julia
theta_missing = person_parameter(OnePL, y, betas, MLE())
PersonParameter{Float64}(1.5868227027860777, 0.8926715074086364)
julia
nonmissing = @. !ismissing(y)
theta_complete = person_parameter(OnePL, y[nonmissing], betas[nonmissing], MLE())
PersonParameter{Float64}(1.5868227027860777, 0.8926715074086364)

Omitting items with missing responses leads to the same ability estimate.

julia
theta_missing == theta_complete
true