## ----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 )