inst/doc/XSLmodels.R

## ----setup, include = FALSE---------------------------------------------------
library(XSLmodels)

knitr::opts_chunk$set(
  echo = TRUE,
  collapse = TRUE,
  comment = "#>"
)

## -----------------------------------------------------------------------------
xslData(train = list(words = list(c(1, 2), c(2, 3)),
                     objects = list(c(1, 2), c(2, 3))),
        test = list(words = list(1, 2, 3),
                    objects = list(1:3, 1:3, 1:3)),
        label = "example dataset",
        condition = "example condition")

## -----------------------------------------------------------------------------
ag <- get_example_ambiguous_condition()
ag

## -----------------------------------------------------------------------------
create_cooc_matrix(ag$train)

## ----example-xsl-dataset------------------------------------------------------
xsl_datasets[[1]]

## -----------------------------------------------------------------------------
# properties of an experimental condition:
names(xsl_datasets[[1]])
# e.g., mean accuracy for each tested word (i.e., P(choosing correct referent | word)):
xsl_datasets[[1]]$accuracy

## -----------------------------------------------------------------------------
str(xsl_holdout_datasets$benitez2020)
names(xsl_holdout_datasets)[sapply(xsl_holdout_datasets, `[[`, "scorable")]

## ----run-models---------------------------------------------------------------
run1 <- xsl_run(uncfam(X = .1, C = 1, B = .98), data = xsl_datasets[[1]])
run1$sse

## -----------------------------------------------------------------------------
run3 <- xsl_run(uncfam(X = .1, C = 1, B = .98), data = xsl_datasets[1:3])
run3$sse

## -----------------------------------------------------------------------------
# Test different models on a subset of datasets
gt <- xsl_run(guess_and_test(f = .1, sa = .5), data = xsl_datasets[1:3])
gt$sse

pt <- xsl_run(pursuit(gamma = .2, threshold = .3, lambda = .05), data = xsl_datasets[1:3])
pt$sse

# Compare with baseline
bl <- xsl_run(baseline(), data = xsl_datasets[1:3])
bl$sse

## -----------------------------------------------------------------------------
# See what models are available
models <- show_models()
models

# See what datasets are available
datasets <- show_datasets()
head(datasets)

## -----------------------------------------------------------------------------
# Fit a simple decay model to a single dataset
fit_result <- xsl_fit(decay(C = .98), data = xsl_datasets[[1]], 
                      lower = .8, upper = 1.0)
fit_result[[1]]$optim$bestmem
fit_result[[1]]$optim$bestval

## -----------------------------------------------------------------------------
d <- get_example_ambiguous_condition()
prior <- matrix(0, 4, 4, dimnames = list(1:4, 1:4))
prior["1", "1"] <- .5   # word 1 already partly learned
mod <- uncfam(X = .1, B = .98, C = 1)
xsl_run(mod, d)$fits[[1]]$perf
xsl_run(mod, d, control = xslControl(start_matrix = prior))$fits[[1]]$perf

## ----generalization-----------------------------------------------------------
fit <- xsl_fit(decay(C = .98), data = xsl_datasets[1:5], lower = .8, upper = 1,
               deoptim_control = DEoptim::DEoptim.control(NP = 10, itermax = 10, trace = FALSE))
fitted_decay <- update_params(decay(C = .98), fit[[1]]$optim$bestmem)

holdout <- c(benitez2020, kachergis_initial_accuracy)
data.frame(
  condition = names(holdout),
  decay_sse = sapply(holdout, \(d) xsl_run(fitted_decay, d)$sse),
  baseline_sse = sapply(holdout, \(d) xsl_run(baseline(), d)$sse),
  row.names = NULL
)

Try the XSLmodels package in your browser

Any scripts or data that you put into this service are public.

XSLmodels documentation built on Oct. 18, 2026, 5:08 p.m.