--- title: "kstMatrix" author: "Cord Hockemeyer" date: "`r Sys.Date()`" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{kstMatrix} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r setup, include = FALSE} knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) library(kstMatrix) library(grDevices) library(sets) library(pks) ``` # Content - [Introduction](#introduction) - [S3 classes in `kstMatrix`](#s3-classes-in-kstmatrix) - [Different representations for knowledge spaces](#different-representations-for-knowledge-spaces) - [Propertiesd of knowledge spaces](#propertiesd-of-knowledge-spaces) - [Creating trivial knowledge spaces](#creating-trivial-knowledge-spaces) - [Simulating response patterns](#simulating-response-patterns) - [Validating knowledge structures](#validating-knowledge-structures) - [Assessment](#assessment) - [Fringes and learning paths](#fringes-and-learning-paths) - [Plotting](#plotting) - [Utilities](#utilities) - [Datasets provided by `kstMatrix`](#datasets-provided-by-kstmatrix) - [References](#references) # Introduction Knowledge space theory applies prerequisite relationships between items of knowledge within a given domain for efficient adaptive assessment and training (Doignon & Falmagne, 1999). The `kstMatrix` package implements some basic functions for working with knowledge space. Furthermore, it provides several empirically obtained knowledge spaces in form of their bases. There is a certain overlap in functionality between the `kst`and `kstMatrix` packages, however the former uses a set representation and the latter a matrix representation. The packages are to be seen as complementary, not as a replacement for each other. This document gives a short overview on the `kstMatrix` package. For more details on the specific functions, please have a look at the manual. Subsequently, we start with a introduction into the S3 classes used in `kstMatrix`. Afterwards, the various functions are presented groupd by topic. # S3 classes in `kstMatrix` With version 2, S3 classes were introduced in `kstMatrix`. The following classes are used: * `kmfamset` * `kmbasis` * `kmstructure` * `kmspace` * `kmneighbourhood` * `kmsurmiserelation` * `kmsurmisefunction` The following figure shows the dependencies between these classes, e.g., `kmspace` being a sub-class of `kmstructure`. ```{r kstMatrixClasses, echo=FALSE, fig.cap="Structure of kstMatrix classes", out.width="700"} knitr::include_graphics("kstMatrixClasses.png") ``` ## Constructors There exist four constructors - `kmfamset()` - `kmstructure()` - `kmbasis()` - `kmspace()` which create the respective objects from a given matrix. # Different representations for knowledge spaces There exist various ways to represent knowledge spaces: the whole space itself, its basis, and the corresponding surmise function; in case of quasi-ordinal spaces also the surmise relation. The subsequent functions allow to map between these representations. ## `kmbasis()` The `kmbasis()` S3 method allows to ap different representations to bases. There are implementations for the classes `kmsurmiserelation`, `kmsurmisefunction`, and `matrix`, the latter aiming at `kmfamset`s including `kmstructure`s and `kmspace`s. ## `kmsf2basis()` This function determines a basis from a surmise function. ## `kmSR2basis()` This function creates a basis from a surmise relation. ## `kmsurmisefunction()` This function takes an arbitrary `kmfamset` (family of sets) and determines the surmise function of the smallest knowledge space containing this family of sets, i.e. its closure under union. ## `kmsurmiserelation()` This function determines the surmise relation for a quasi-ordinal knowledge space. If the parameter is an arbitrary `kmfamset`, the result is the surmise relation for the smalest quasi-ordinal knowledge space containing the family of sets, i.e. its closure under union *and* intersection. ## `kmunionclosure()` This function returns the closure under union (i.e. a knowledge space) of a family of sets. # Properties of knowledge spaces There are `kmeqreduction()` and `kmnotions()` for dealing with equivalent items. The former reduces a famset to the structure on its notions, and the latter gives the notions itself. Another point is the weelgradedness - `kmiswellgraded()`tests if a structure fulfils this condition. # Creating trivial knowledge spaces For a given item number, there are two trivial knowledge spaces, the maximal knowledge space representing absolutely no prerequisite relationships (the knowledge space is the power set of the item set and the basis matrix is the diagonal matrix), and the minimal knowledge space representing equivalence of all items (the knowledge space contains just the empty set and the full item set, and the basis matrix contains one line full of '1's). # Simulating response patterns Response patterns are simulated by `kmsimulate()` applying the BLIM (Basic Local Independence Model). It assumes identical $\beta$ and $\eta$ values for all items. More elaborated functions may follow. # Validating knowledge structures There exist two core functions for validation. `kmvalidate()` determines validity indices based on the states in the knowledge structure, and `kmSRvalidate()`determines indices based on the surmise relation of a quasi-ordinal knowledge space. Furthermore, there is a helpüer function `kmdist()` ehich returns a distance distribution. # Assessment There exist several functions in the assessment context. They are all based on a paper by Falmagne & Doignon (1988, see also Doignon & Falmagne, 1999, Chapter 10). The core functiuon is `kmassess()`. It does a complete assessmednt for a given response vector and a given knowledge structure. A simplified version is `kmsassess()` where the originally item-specific parameters are identical for all items. Both these functions rely on alternative question and update rules realised by `kmassesshalfsplit()` and `kmassessinfomrative()` and by `kmassessbayesian()` and `kmassessmultipöicatiuve()`, respectively. The separation of these functions allows also for a use in an interactive system, e.g., a Shiny app. Finally, there is `kmassessmentsimulation()` which does assessments for a whole dataset of response patterns and produces a table which could be further evaluated statistically. # Fringes and Learning Paths Well-graded learning paths are an important concept in knowledge space theory. With `kmlearningpaths()`, we obtain a collection of all learning paths in a knowledge structure, with `kmgradations()` a collection of all gradations between two states in a structure. In this context also `kmiswellgraded()` should be mentioned which tests if a structure is well-graded. In this context, we may also need fringes and neighbourhoods. The former can be determined with `kmfringe()`, `kminnerfringe()`, and `kmouterfringe()`. For the latter, there are the functions `kmneighbourhood()` (determining the 1-neighbourhood of a state) and `kmnneighbourhood()` (determining an arbitrary n-neighbourhood). There exists also an alternative implementation with the functions `kmbasisfringe()`, `kmbasisinnerfringe()`, and `kmbasisouterfringe()`, as well as `kmbasisneighbourhood()`. These functions work on the basis of a knowledge space and may, thus, be faster, especially for large knowledge spaces (see Hockemeyer, 1997). Please note that, as a consequence of using the basis, these functions do not apply for general knowledge structures but only for knowledge spaces. Furthermore, due to complexity, there is no `kmbasisnneighbourhood()`(yet). # Plotting With version 2.0 of `kstMatrix`, plotting functionality is provided through the S3 `plot` method. The method is available for the `kmfamset`, `kmsurmiserelation`, and `kmneidghbourhood` classes. ```{r} plot(xpl$space) plot(xpl$sr) ``` `plot` uses the `DiagrammeR` package which in turn uses the `Graphviz` software. The default parameters are slightly different for `kmfamset`s and `kmsurmiserelation`s. ```{r} plot(xpl$sr, colors="#aaffaa", vertexshape="box") ``` For plotting neighbourhoods, by default three different colors are used. ```{r} plot(kmneighbourhood(c(1,1,0,0), xpl$space, include=TRUE), state=c(1,1,0,0), edgelabel=TRUE) ``` By default, Hasse diagrams are drawn vertically with just lines as edges. However, on finds also horizontal diagrams in which case the arrows are set as arrows from left to right. ```{r} plot(xpl$space, horizontal=TRUE, arrowtail="open") plot(xpl$space, arrowhead="empty") ``` # Utilities This group contains several smaller helper functions. - `kmsymmsetdiff()` - `kmsetdistance()` - `kmsetiselement()` - `kmdoubleequal()` - `kmcolors()` # Datasets provided by `kstMatrix` ## Empirical structures The provided empirical datasets were obtained by the research group around Cornelia Dowling through querying experts in the respective fields. ### cad Six experts were queried about prerequisite relationships between 28 AutoCAD knowledge items (Dowling, 1991; 1993a). A seventh basis represents those prerequisite relationships on which the majority (4 out of 6) of the experts agree (Dowling & Hockemeyer, 1998). ### fractions Three experts were queried about prerequisite relationships between 77 items on fractions (Baumunk & Dowling, 1997). A fourth basis represents those prerequisite relationships on which the majority of the experts agree (Dowling & Hockemeyer, 1998). ### readwrite Three experts were queried about prerequisite relationships between 48 items on reading and writing abilities (Dowling, 1991; 1993a). A fourth basis represents those prerequisite relationships on which the majority of the experts agree (Dowling & Hockemeyer, 1998). ## Example structures ### phsg A small knowledge space on a set of seven items on linear functions. This example is used in a manuscript by Steiner et al. ### xpl This is just a small fictitious 4-item-example used for the examples in the documentation. Please note that this knowledge space is not quasi-ordinal. # References - Baumunk, K. & Dowling, C. E. (1997). Validity of spaces for assessing knowledge about fractions. _Journal of Mathematical Psychology, 41,_ 99–105. - Doignon, J.-P. & Falmagne, J.-C. (1999). _Knowledge Spaces._ Springer–Verlag, Berlin. - Dowling, C. E. (1991). _Constructing Knowledge Structures from the Judgements of Experts._ Habilitationsschrift, Technische Universität Carolo-Wilhelmina, Braunschweig, Germany. - Dowling, C. E. (1993a). Applying the basis of a knowledge space for controlling the questioning of an expert. _Journal of Mathematical Psychology, 37,_ 21–48. - Dowling, C. E. (1993b). On the irredundant construction of knowledge spaces. Journal of Mathematical Psychology, 37, 49–62. - Dowling, C. E. & Hockemeyer, C. (1998). Computing the intersection of knowledge spaces using only their basis. In Cornelia E. Dowling, Fred S. Roberts, & Peter Theuns, editors, _Recent Progress in Mathematical Psychology,_ pp. 133–141. Lawrence Erlbaum Associates Ltd., Mahwah, NJ. - Falmagne J.-C. & Doignon J.-P. (1988). A class of stochastic procedures for the assessment of knowledge. _British Journal of Mathematical and Statistical Psychology, 41,_ 1–23. - Hockemeyer C (1997). Using the Basis of a Knowledge Space for Determining the Fringe of a Knowledge State. _Journal of Mathematical Psychology, 41,_ 275–279.