swh:1:snp:a568cc5cff39965992895669038ed8c43a59eedd
Tip revision: 2878a3d9f5a3b9b89a0084a897bef3414e9de4a2 authored by nwbarendregt on 03 May 2022, 15:08:29 UTC
Add files via upload
Add files via upload
Tip revision: 2878a3d
Figure_6S1_Generate.m
% Figure_6S1_Generate.m
% Script used to generate Figure 6 -- Supplemental Figure 1
% from Barendregt et al., 2022.
clear
% Load subject and MCMC data:
load('trials.mat'); subs = 20; speeds = 2;
load('model_fit_NB.mat');
load('model_fit_Const.mat');
load('model_fit_UGM.mat');
% Define parameters to simulate models:
Nt = 15;
% Format data from NB model:
NB = model_fit_NB(:);
model_AICc = NaN(1,length(NB));
% Find best-fit and worst-fit NB model:
for i = 1:length(NB)
model_AICc(i) = NB(i).AICc;
end
[~,m] = min(model_AICc); [~,M] = max(model_AICc);
% Plot best-fit model and associated subject data:
Sub_ID = NB(m).idSubject;
speed = NB(m).speed; t_d = speed/1000;
Sub_T = trials.nDecisionToken((trials.nSpeedFast == speed) & (trials.idSubject == Sub_ID));
Sub_Data = histcounts(Sub_T,-0.5:1:(Nt+0.5),'normalization','probability');
figure
stairs(-0.5:Nt+0.5,[Sub_Data 0],'k','linewidth',15)
hold on; xlim([0 Nt])
stairs(-0.5:Nt+0.5,[NB(m).Fit 0],'linewidth',15,'color','#1b9e77');
% Display KL divergence between subject data and fitted model:
disp(KL(Sub_Data,NB(m).Fit))
% Plot worst-fit model and associated subject data:
Sub_ID = NB(M).idSubject;
speed = NB(M).speed; t_d = speed/1000;
Sub_T = trials.nDecisionToken((trials.nSpeedFast == speed) & (trials.idSubject == Sub_ID));
Sub_Data = histcounts(Sub_T,-0.5:1:(Nt+0.5),'normalization','probability');
figure
stairs(-0.5:Nt+0.5,[Sub_Data 0],'k','linewidth',15)
hold on; xlim([0 Nt])
stairs(-0.5:Nt+0.5,[NB(M).Fit 0],'linewidth',15,'color','#1b9e77');
% Display KL divergence between subject data and fitted model:
disp(KL(Sub_Data,NB(M).Fit))
% Format data from Const model:
Const = model_fit_Const(:);
model_AICc = NaN(1,length(Const));
% Find best-fit and worst-fit Const model:
for i = 1:length(Const)
model_AICc(i) = Const(i).AICc;
end
[~,m] = min(model_AICc); [~,M] = max(model_AICc);
% Plot best-fit model and associated subject data:
Sub_ID = Const(m).idSubject;
speed = Const(m).speed; t_d = speed/1000;
Sub_T = trials.nDecisionToken((trials.nSpeedFast == speed) & (trials.idSubject == Sub_ID));
Sub_Data = histcounts(Sub_T,-0.5:1:(Nt+0.5),'normalization','probability');
figure
stairs(-0.5:Nt+0.5,[Sub_Data 0],'k','linewidth',15)
hold on; xlim([0 Nt])
stairs(-0.5:Nt+0.5,[Const(m).Fit 0],'linewidth',15,'color','#d95f02');
% Display KL divergence between subject data and fitted model:
disp(KL(Sub_Data,Const(m).Fit))
% Plot worst-fit model and associated subject data:
Sub_ID = Const(M).idSubject;
speed = Const(M).speed; t_d = speed/1000;
Sub_T = trials.nDecisionToken((trials.nSpeedFast == speed) & (trials.idSubject == Sub_ID));
Sub_Data = histcounts(Sub_T,-0.5:1:(Nt+0.5),'normalization','probability');
figure
stairs(-0.5:Nt+0.5,[Sub_Data 0],'k','linewidth',15)
hold on; xlim([0 Nt])
stairs(-0.5:Nt+0.5,[Const(M).Fit 0],'linewidth',15,'color','#d95f02');
% Display KL divergence between subject data and fitted model:
disp(KL(Sub_Data,Const(M).Fit))
% Format data from UGM:
UGM = model_fit_UGM(:);
model_AICc = NaN(1,length(UGM));
% Find best-fit and worst-fit UGM:
for i = 1:length(UGM)
model_AICc(i) = UGM(i).AICc;
end
[~,m] = min(model_AICc); [~,M] = max(model_AICc);
% Plot best-fit model and associated subject data:
Sub_ID = UGM(m).idSubject;
speed = UGM(m).speed; t_d = speed/1000;
Sub_T = trials.nDecisionToken((trials.nSpeedFast == speed) & (trials.idSubject == Sub_ID));
Sub_Data = histcounts(Sub_T,-0.5:1:(Nt+0.5),'normalization','probability');
figure
stairs(-0.5:Nt+0.5,[Sub_Data 0],'k','linewidth',15)
hold on; xlim([0 Nt])
stairs(-0.5:Nt+0.5,[UGM(m).Fit 0],'linewidth',15,'color','#7570b3');
% Display KL divergence between subject data and fitted model:
disp(KL(Sub_Data,UGM(m).Fit))
% Plot worst-fit model and associated subject data:
Sub_ID = UGM(M).idSubject;
speed = UGM(M).speed; t_d = speed/1000;
Sub_T = trials.nDecisionToken((trials.nSpeedFast == speed) & (trials.idSubject == Sub_ID));
Sub_Data = histcounts(Sub_T,-0.5:1:(Nt+0.5),'normalization','probability');
figure
stairs(-0.5:Nt+0.5,[Sub_Data 0],'k','linewidth',15)
hold on; xlim([0 Nt])
stairs(-0.5:Nt+0.5,[UGM(M).Fit 0],'linewidth',15,'color','#7570b3');
% Display KL divergence between subject data and fitted model:
disp(KL(Sub_Data,UGM(M).Fit))