### Configure Working Memory Model Estimation (MATLAB) Source: https://context7.com/nian-jingqing/bayesian_modeling_of_working_memory/llms.txt The Configuration_BMW function sets up parameters for model estimation and assessment. It requires a structure defining the model, data source, fitting options (method, algorithm, display, RFXBMS), criteria for assessment, and optional parameter constraints (start values, bounds). It returns a structured configuration object for model fitting. ```matlab % Define model and data MA.Model.Model = 'Variable Precision'; MA.Model.Variants = {'ContinuousK', 'ResponseNoise'}; MA.Data = 'path/to/data.mat'; % Or pass cell array directly % Set fit options MA.FitOptions.Method = 'MAP'; % 'MAP' or 'MLE' MA.FitOptions.Algorithm = 'DE-MCMC'; % Default algorithm MA.FitOptions.Display = 'iter'; % 'iter', 'detail', 'off' MA.FitOptions.RFXBMS = 1; % Enable random effects BMS % Define criteria for model assessment MA.Criteria = {'LLH', 'AIC', 'BIC', 'DIC2', 'WAIC2', 'LME_GHM'}; % Define parameter constraints (optional - auto-configured if omitted) MA.Constraints.start = [50, 20, 2, 100]; % Initial values MA.Constraints.lb = [0, 0, 0, 0]; % Lower bounds MA.Constraints.ub = [700, 200, 10, 700]; % Upper bounds % Run configuration MA_Config = Configuration_BMW(MA); ``` -------------------------------- ### MATLAB: Complete Working Memory Model Fitting and Comparison Workflow Source: https://context7.com/nian-jingqing/bayesian_modeling_of_working_memory/llms.txt This MATLAB script demonstrates a full workflow for fitting and comparing Bayesian working memory models. It requires the BMW Toolbox and experimental data in a specific format. The script defines a model space, fits each model using DE-MCMC, and performs model comparison using criteria like BIC and RFX-BMS. ```matlab %% Setup close all; clear variables; addpath('path/to/BMW_Toolbox'); BMW('AddPath'); %% Prepare Data % Data structure requirements: % - Data.sample: Target stimulus values (e.g., orientations in degrees) % - Data.response: Subject responses % - Data.SS: Set size for each trial % - Data.error_range: Range of possible errors % Load experimental data (cell array, one per subject) load('experiment_data.mat'); % Contains Data_All cell array %% Define Model Space ModelSpace = { 'Item Limit', 'Standard Mixture', 'Slots-plus-Averaging', 'Variable Precision', 'Variable Precision with Capacity' }; %% Fit All Models MA_All = cell(1, length(ModelSpace)); for i = 1:length(ModelSpace) fprintf('\n=== Fitting Model: %s ===\n', ModelSpace{i}); % Configure MA.Model.Model = ModelSpace{i}; MA.Model.Variants = {'ContinuousK'}; % Optional variants MA.Data = Data_All; % Fit options MA.FitOptions.Method = 'MAP'; MA.FitOptions.Algorithm = 'DE-MCMC'; MA.FitOptions.Display = 'iter'; MA.FitOptions.RFXBMS = 1; % Criteria MA.Criteria = {'LLH', 'AIC', 'BIC', 'DIC2', 'WAIC2', 'LME_GHM'}; % Run MA = Configuration_BMW(MA); MA_All{i} = ModelFit_BMW(MA); end %% Compare Models MC = ModelComparison_BMW(MA_All); %% Display Results fprintf('\n=== Model Comparison Results ===\n'); fprintf('\nBIC-based Group Posterior Probabilities:\n'); for i = 1:length(ModelSpace) fprintf('%s: %.3f\n', ModelSpace{i}, MC{1}.BIC.Group_PP(i)); end fprintf('\nRFX-BMS Exceedance Probabilities:\n'); for i = 1:length(ModelSpace) fprintf('%s: %.3f\n', ModelSpace{i}, MC{1}.BIC.EP(i)); end %% Save Results save('ModelComparison_Results.mat', 'MA_All', 'MC'); %% Cleanup BMW('ClearPath'); ``` -------------------------------- ### Launch and Manage BMW Toolbox Paths (MATLAB) Source: https://context7.com/nian-jingqing/bayesian_modeling_of_working_memory/llms.txt The main BMW function serves as an entry point for launching the graphical user interface (GUI), managing MATLAB paths for the toolbox, checking available optimization methods, and opening the user manual. It takes string arguments to specify the desired action. ```matlab % Launch the BMW GUI BMW(); % Add BMW paths to MATLAB path BMW('AddPath'); % Remove BMW paths BMW('ClearPath'); % Check available optimization algorithms BMW('CheckMethods'); % Open the manual BMW('Manual'); ``` -------------------------------- ### Core Model Fitting Engine for Working Memory Models (MATLAB) Source: https://context7.com/nian-jingqing/bayesian_modeling_of_working_memory/llms.txt BMW_Fit is the low-level engine for fitting working memory models using various optimization algorithms. It requires data, configuration settings, the model name, parameter constraints, and fit options. It returns the fitted parameters and quality metrics, including posterior samples if requested. Supported algorithms include DE-MCMC, MH-MCMC, fmincon, BADS, GA, and SA. ```matlab % Prepare data structure Data.sample = [45, 90, 135, 180]; % Sample orientations (degrees) Data.response = [47, 88, 140, 175]; % Response orientations Data.SS = [2, 2, 4, 4]; % Set sizes Data.error_range = -90:1:90; % Error range % Configure model Config.Output = 'LP'; % Log posterior Config.Variants = {'ResponseNoise'}; % Set constraints Constraints.start = [50, 20, 2, 100]; % [kappa1_bar, tau, power, kappa_r] Constraints.lb = [0, 0, 0, 0]; Constraints.ub = [700, 200, 10, 700]; % Set fit options FitOptions.Algorithm = 'DE-MCMC'; % Options: 'DE-MCMC', 'MH-MCMC', 'fmincon: sqp', 'BADS', 'GA', 'SA' FitOptions.Display = 'iter'; % Fit model [Param, Quality] = BMW_Fit(Data, Config, 'Variable_Precision', Constraints, FitOptions); % Results disp(['Fitted parameters: ', num2str(Param)]); disp(['Log posterior: ', num2str(Quality.Output)]); mcmc_result = Quality.MCMCResult; % Contains posterior samples ``` -------------------------------- ### Fit and Assess Working Memory Models (MATLAB) Source: https://context7.com/nian-jingqing/bayesian_modeling_of_working_memory/llms.txt ModelFit_BMW fits a specified working memory model to data for multiple subjects and calculates information criteria for assessment. It takes a pre-configured structure from Configuration_BMW and returns results including fitted parameters, subject-wise criteria values, and MCMC posterior samples. Dependencies include the configuration structure and the underlying BMW fitting functions. ```matlab % Setup model configuration MA.Model.Model = 'Standard Mixture'; MA.Data = {SubjectData1, SubjectData2, SubjectData3}; % Cell array of subject data MA.FitOptions.Method = 'MAP'; MA.FitOptions.Algorithm = 'DE-MCMC'; MA.Criteria = {'AIC', 'BIC', 'DIC2', 'WAIC2'}; % Configure and fit MA_Config = Configuration_BMW(MA); MA_Results = ModelFit_BMW(MA_Config); % Access results fitted_params = MA_Results.Param; % Nsubj x Nparam matrix aic_values = MA_Results.AIC; % AIC for each subject bic_values = MA_Results.BIC; % BIC for each subject mcmc_samples = MA_Results.MCMC; % MCMC posterior samples ``` -------------------------------- ### Calculate Information Criteria with BMW_GetIC_MCMC in MATLAB Source: https://context7.com/nian-jingqing/bayesian_modeling_of_working_memory/llms.txt Calculates various information criteria (DIC, WAIC, Log Model Evidence) from MCMC posterior samples. It supports multiple estimation methods and requires the MCMC raw sampling output, model, data, and a configuration structure specifying the IC method. ```matlab % After MCMC sampling [RawSampling, ~] = BMW_MCMC(model, Data, config); % Configure IC method Method.IC = 'LME_BridgeSampling'; % Options: 'DIC1', 'DIC2', 'DIC*', 'WAIC1', 'WAIC2', 'LME_HarmonicMean', 'LME_BridgeSampling' Method.Verbosity = 1; % 0=off, 1=progress, 2=detailed Method.Transform = 'Probit'; % Calculate DIC1 Method.IC = 'DIC1'; DIC1 = BMW_GetIC_MCMC(RawSampling, model, Data, Method); % Calculate DIC2 (variance-based penalty) Method.IC = 'DIC2'; DIC2 = BMW_GetIC_MCMC(RawSampling, model, Data, Method); % Calculate WAIC1 (pointwise deviance penalty) Method.IC = 'WAIC1'; WAIC1 = BMW_GetIC_MCMC(RawSampling, model, Data, Method); % Calculate WAIC2 (variance-based penalty) Method.IC = 'WAIC2'; WAIC2 = BMW_GetIC_MCMC(RawSampling, model, Data, Method); % Calculate Log Model Evidence using Harmonic Mean Method.IC = 'LME_HarmonicMean'; LME_GHM = BMW_GetIC_MCMC(RawSampling, model, Data, Method); % Calculate Log Model Evidence using Bridge Sampling (recommended) Method.IC = 'LME_BridgeSampling'; LME_BS = BMW_GetIC_MCMC(RawSampling, model, Data, Method); ``` -------------------------------- ### Perform MCMC Sampling with BMW_MCMC in MATLAB Source: https://context7.com/nian-jingqing/bayesian_modeling_of_working_memory/llms.txt Configures and runs Monte Carlo Markov Chain (MCMC) sampling for Bayesian inference using either Differential Evolution (DE) or Metropolis-Hastings (MH) algorithms. It requires model configuration, data, and sampling parameters, outputting raw samples and summary statistics. ```matlab % Configure model model.Model = 'Variable_Precision'; model.Constraints.start = repmat([50, 20, 2], 4, 1); % 4 chains model.Constraints.lb = [0, 0, 0]; model.Constraints.ub = [700, 200, 10]; model.Output = 'LP'; % Configure MCMC config.Algorithm = 'DE'; % 'DE' or 'MH' config.Nsample = 10000; % Number of samples after burn-in config.Verbosity = 'iter'; % 'off', 'iter', 'notify', 'final' config.Transform = 'Probit'; % Parameter transformation config.Convergence.Diagnostic = 'GR'; % Gelman-Rubin diagnostic config.Convergence.Nbatchburnin = 200; % Burn-in samples per batch config.Convergence.Nmaxbatchburnin = 50; % Max burn-in batches config.Convergence.Tol = 0.2; % Convergence tolerance % Run MCMC [RawSampling, Summary] = BMW_MCMC(model, Data, config); % Access results posterior_samples = RawSampling.Samples; % N x Nparam matrix log_posterior = RawSampling.logPosterior; % Log posterior values log_likelihood = RawSampling.logLikelihood; % Log likelihood values best_params = Summary.FitParam; % Best fitting parameters max_posterior = Summary.MAXposterior; % Maximum posterior value ``` -------------------------------- ### Variable Precision Model Implementation in MATLAB Source: https://context7.com/nian-jingqing/bayesian_modeling_of_working_memory/llms.txt Implements the Variable Precision model where memory precision varies trial-by-trial following a gamma distribution. Precision declines as a power function of set size. Supports various model variants like 'ResponseNoise'. ```matlab % Model parameters: [kappa1_bar, tau, power, kappa_r] % kappa1_bar: Mean precision at set size 1 % tau: Resource allocation variability % power: Set size effect exponent % kappa_r: Response noise (if ResponseNoise variant) param = [100, 20, 2, 50]; % Prepare data Data.sample = [45, 90, 135, 180, 225, 270]; % Sample orientations Data.response = [43, 92, 130, 182, 220, 275]; % Responses Data.SS = [2, 2, 4, 4, 6, 6]; % Set sizes Data.error_range = [-90, 90]; % Continuous mode % Configure model Input.Output = 'LLH'; % 'LLH', 'LP', 'Prior', 'LPPD', 'All' Input.Variants = {'ResponseNoise'}; % Calculate log likelihood LLH = Variable_Precision(param, Data, Input); % Get probability density function Data.error_range = -90:1:90; % Discrete mode for PDF Input.Output = 'LPPD'; Input.PDF = 1; PDF_result = Variable_Precision(param, Data, Input); % Available variants: % 'ResponseNoise' - Add response noise parameter % 'Bias' - Add systematic response bias % 'BiasF' - Add stimulus-dependent bias fluctuation % 'PrecF' - Add stimulus-dependent precision fluctuation % 'Swap' - Add swap errors (misbinding) % 'ContinuousK' - Continuous capacity parameter % 'Category (Within-Item)' - Categorical encoding within items % 'Category (Between-Item)' - Categorical encoding between items ``` -------------------------------- ### Compare Models with ModelComparison_BMW in MATLAB Source: https://context7.com/nian-jingqing/bayesian_modeling_of_working_memory/llms.txt Compares multiple fitted Bayesian models using criteria like BIC, DIC, WAIC, and Log Model Evidence. It computes Bayes factors, model weights, and supports random-effects Bayesian model selection. The function takes a cell array of fitted models and optionally a family grouping. ```matlab % Fit multiple models (see SampleScript1 pattern) ModelSpace = {'Item Limit', 'Standard Mixture', 'Slots-plus-Averaging', ... 'Variable Precision', 'Variable Precision with Capacity'}; MA_All = cell(1, length(ModelSpace)); for i = 1:length(ModelSpace) MA.Model.Model = ModelSpace{i}; MA.Data = ExperimentalData; % Cell array of subject data MA.FitOptions.Method = 'MAP'; MA.Criteria = {'BIC', 'DIC2', 'WAIC2', 'LME_GHM'}; MA = Configuration_BMW(MA); MA_All{i} = ModelFit_BMW(MA); end % Compare models MC = ModelComparison_BMW(MA_All); % Access comparison results (for each criterion) best_model_bic = MC{1}.BIC.BestModel; % Best model per subject bic_weights = MC{1}.BIC.BIC_weight; % Model weights per subject group_posterior = MC{1}.BIC.Group_PP; % Group-level posterior probability bayes_factors = MC{1}.BIC.BIC_GBF; % Group Bayes factors % Random-effects BMS results (if enabled) model_frequency = MC{1}.BIC.ModelFreq; % Expected model frequency exceedance_prob = MC{1}.BIC.EP; % Exceedance probability % Compare model families family = [1, 1, 1, 2, 2]; % Group models into families MC_Family = ModelComparison_BMW(MA_All, family); family_freq = MC_Family{1}.BIC.FamilyFreq; family_ep = MC_Family{1}.BIC.EP_Family; ``` -------------------------------- ### Bayesian Model Selection with BMW_BMS in MATLAB Source: https://context7.com/nian-jingqing/bayesian_modeling_of_working_memory/llms.txt Performs hierarchical random-effects Bayesian model selection across subjects using variational Bayes approximation. It estimates expected model frequencies and exceedance probabilities from a Log Model Evidence matrix. ```matlab % Prepare Log Model Evidence matrix (Nmodel x Nsubject) LME = zeros(5, 20); % 5 models, 20 subjects for model = 1:5 LME(model, :) = MA_All{model}.LME_GHM'; % Or use BIC: -MA_All{model}.BIC'/2 end % Configure BMS Config.Start = 1e-6 * ones(5, 1); % Dirichlet prior parameters Config.MaxIter = 1e6; % Maximum iterations Config.Stop = 1e-6; % Convergence criterion Config.Verbosity = 1; % Display progress Config.Rec = 1; % Record iteration history % Run BMS BMS_Results = BMW_BMS(LME, Config); % Access results dirichlet_params = BMS_Results.a; % Posterior Dirichlet parameters model_frequency = BMS_Results.r; % Expected model frequency exceedance_prob = BMS_Results.EP; % Exceedance probability iteration_history = BMS_Results.RecIter; % Parameter history (if Rec=1) % Display results disp('Model Frequencies:'); disp(model_frequency); disp('Exceedance Probabilities:'); disp(exceedance_prob); ``` -------------------------------- ### Circular Statistics Calculation with CircSummary_BMW in MATLAB Source: https://context7.com/nian-jingqing/bayesian_modeling_of_working_memory/llms.txt Computes essential circular statistics for angular data, commonly used in working memory experiments. Functions include calculating circular standard deviation, mean, and variance, handling data periodicity. ```matlab % Calculate circular standard deviation error_data = [-10, 5, -3, 8, -15, 20, 2, -7]; % Response errors in degrees period = 180; % Data period (180 for orientations, 360 for colors) circular_sd = CircSummary_BMW('CircSD', error_data, period); % Calculate other circular statistics circular_mean = CircSummary_BMW('CircMean', error_data, period); circular_var = CircSummary_BMW('CircVar', error_data, period); disp(['Circular SD: ', num2str(circular_sd), ' degrees']); ``` -------------------------------- ### Circular Distance Calculation with CircDist_BMW in MATLAB Source: https://context7.com/nian-jingqing/bayesian_modeling_of_working_memory/llms.txt Computes circular distances between angles, correctly handling the wrap-around nature of periodic data. It can calculate both direct circular differences and absolute circular distances. ```matlab % Calculate circular difference (errors) samples = [45, 90, 135, 180]; responses = [50, 85, 140, 175]; period = 180; % For orientation data errors = CircDist_BMW('Diff', responses, samples, period); % Returns: [5, -5, 5, -5] % Calculate absolute circular distance abs_errors = CircDist_BMW('Abs', responses, samples, period); ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.