Code Monkey home page Code Monkey logo

computeradaptivetesting.jl's Introduction

ComputerAdaptiveTesting

Stable Dev Build Status

What is it?

In Computer Adaptive Testing (CAT), examinees are given tailored tests which at each stage present questions chosen to estimate their ability accurately, based on a provisional estimate. For a brief introduction, see the Wikipedia page.

This package gives implementations of well-known approaches to CAT in Julia, which are fast enough to support interactive use when scaling to large item banks. It also provides flexible scaffolding to support new approaches to CAT as well as non-standard item banks and difficulty-ability scales.

For a more in-depth introduction to CATs, I recommend the following article (which outlines the basic definitions before introducing and R package mirtCAT) and book (which contains various topical chapters detailing different aspects of CATs).

Chalmers, R. P. (2016). Generating adaptive and non-adaptive test interfaces for multidimensional item response theory applications. Journal of Statistical Software, 71, 1-38.

van der Linden, W. J. & Glas C. A. W. (Eds.) (2010). Elements of adaptive testing. Statistics for Social and Behavioral Sciences.

Installation

The package is available through Pkg. Install like so:

julia> using Pkg
julia> Pkg.add("ComputerAdaptiveTesting")

For the current development version (e.g. before filing an issue), install like so:

julia> using Pkg
julia> Pkg.add(PackageSpec(url = "https://github.com/frankier/ComputerAdaptiveTesting.jl.git"))

How does this package differ from the alternatives?

The main (open source software library) alternatives are catR and mirtCAT in R and catsim in Python.

Of these, mirtCAT is the most complete. At the moment, mirtCAT is more complete than ComputerAdaptiveTesting.jl. However, this package is already beginning to have some advantages in terms of flexibility:

  • Flexibility in allowing the lowest level "building blocks" of the algorithm, namely optimization and integration algorithms to be freely configured and replaced, allowing various levels of speed/accuracy trade off to be reached.
  • Flexibility in allowing a wide variety of item banks to be used. The architecture supports (TODO: implement) for example, item banks with parameter estimation uncertainties (e.g. from MCMC estimation) and item banks with item banks based on hierarchical modelling.

There are two long term goals for the project. The first is to allow and provide fast implementations of otherwise computationally heavy scenarios and techniques such as those with large item banks, high dimensionality or many-ply lookaheads. The second is composability with complimentary Julia packages to allow for item banks based a wide variety of ways of mixing and matching model-based and machine learning -based techniques to utilised for CATs and evaluated in a CAT setting.

What next?

You can read the documentation which also contains a number of examples.

Repo organisation

  • /docs/examples, Example code
  • /docs, Documentation source code, build with Documenter.jl
  • /src, Source code for the main ComputerAdaptiveTesting.jl package
  • /experiments, Some experiments, benchmarks and example code. All of these are more computationally heavy than /docs/examples and may need HPC and/or patience.

computeradaptivetesting.jl's People

Contributors

frankier avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

computeradaptivetesting.jl's Issues

TagBot trigger issue

This issue is used to trigger TagBot; feel free to unsubscribe.

If you haven't already, you should update your TagBot.yml to include issue comment triggers.
Please see this post on Discourse for instructions and more details.

If you'd like for me to do this for you, comment TagBot fix on this issue.
I'll open a PR within a few hours, please be patient!

Woes with Pkg.test()

Ideally we would be able to have the tests run when we run Pkg.test(). However, this tries to merge the root project with the test project, which sometimes fails. I'm not quite clear on why this is, but I guess it is probably exacerbated by the monorepo structure. See: JuliaLang/Pkg.jl#1585

For the time being, runtests.jl can be run directly in the test project.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.