FINAL_ARL2_FITS.m

Figure 6 in .../papers/ProtoPaper/protopaper.tex
Based on .../fdbk1/data/fit_ANCHOR_ARL2_part2.m and fit_INST_ARL2_part2.m
Compare with .../fdbk1/data/model_ARL2_predictions.m
File: work/CMUExper/fdbk1/data/final_ARL2_fits.m
Date: 2007-08-20
Alexander Petrov, http://alexpetrov.com

Contents

Load empirical ARL2 profiles

clear all
cd(fullfile(work_pathstr,'CMUExper','fdbk1','data')) ;
load('S2.mat') ;
ARL2 = [S2(:).ARL2] ;    % 9x55
gr=[S2(:).group]' ;
ugr = unique(gr) ;
N_groups = length(ugr) ;
ugr_descr = {'U1' 'L1' 'H1', 'L2' 'H2' } ;   % [1 2 3, 5 6]
fdbk_first_p = [1 1 1 , 0 0] ;    % exp schedule by group

%- Collapse across groups
grARL2 = zeros(size(ARL2,1),N_groups) ;   % 9x5
gr_idx = cell(1,N_groups) ;
for k = 1:N_groups
    gr_idx{k} = find(gr==ugr(k))' ;
    grARL2(:,k) = mean(ARL2(:,gr_idx{k}),2) ;
end
empir_Assim = grARL2(:,[3 find(ugr==6)]) - grARL2(:,[2 find(ugr==5)]) ;

N_runs_per_group = 250 ;

ANCHOR -- Explore 4 alternative sets

See ./fit_ANCHOR_ARL2_part2.m and ./html/fit_ANCHOR_ARL2_part2.html

H_set      = [.030 .040 .050 .060] ;
mem_k_set  = [.099 .083 .080 .065] ;
temper_set = [.022 .032 .046 .050] ;
aP = anchor_params ;       % anchor model
N_cat = 7 ; aP.N_cat = N_cat ;
aP.anchors = default_anchors([.420 .660],N_cat) ;
aP.avail = [1:N_cat]' ;
aP.cutoffs = .60 .* [-3 -1 .75 3*.75] ;
aP.history = .040 ;
aP.mem_k = .083 ;
aP.temper = .032
aP = 
       scale: 'LINEAR'
       N_cat: 7
     SM_conv: 1.0000e-03
      cat_sz: 0.0500
      perc_k: 0.0400
       mem_k: 0.0830
       avail: [7x1 double]
     anchors: [7x6 double]
     cutoffs: [-1.8000 -0.6000 0.4500 1.3500]
      temper: 0.0320
     history: 0.0400
       alpha: 0.3000
       decay: 0.5000
         ITI: 4
    M_raster: 7
    A_raster: [5 5 3 3]
    mnfieldp: 1

INST

See ./fit_INST_ARL2_part2.m and ./html/fit_INST_ARL2_part2.html

iP = protoanchor_params([1:N_cat]) ;  % INST model (aka "protoanchor")
iP.cutoffs = .60 .* [-3 -1 .70 3*.70] ;
iP.history = .050 ;
iP.mem_k = .050 ;
iP.temper = .030
iP = 
        scale: 'LINEAR'
        N_cat: 7
      SM_conv: 1.0000e-03
       cat_sz: 0.0400
       perc_k: 0.0400
        mem_k: 0.0500
        avail: [7x1 double]
    instances: [7x3 double]
      cutoffs: [-1.8000 -0.6000 0.4200 1.2600]
       temper: 0.0300
      history: 0.0500
        alpha: 0.3000
        decay: 0.5000
          ITI: 4

Figure layouts

The figures below will have 6 subplots: 4 ANCHOR + 1 INST 3x2 layout: [a1 a3 i1 ; a2 a4 i2]

N_A_sets = length(H_set) ;   % # of ANCHOR parameter sets
N_I_sets = 1 ;

Run 4 ANCHOR batches and 1 INST batches

fname = 'final_ARL2_fits.mat' ;
if (file_exists(fname))
    load(fname) ;
else
  %- ANCHOR
  aSSE = zeros(1,N_A_sets) ;
  aRMSE = zeros(1,N_A_sets) ;
  for k = 1:N_A_sets
      H = H_set(k) ;
      mem_k = mem_k_set(k) ;
      temper = temper_set(k) ;
      aP.history = H ;
      aP.mem_k = mem_k ;
      aP.temper = temper ;
      [gr_aARL{k},aARL{k}] = run_ANCHOR_fdbk1(...
          'model_params',aP,'groups',ugr','N_runs',N_runs_per_group) ;
      g = gr_aARL{k}(:,ugr) - grARL2 ;
      aSSE(k) = sum(g(:).^2) ;
      aRMSE(k) = sqrt(mean(g(:).^2)) ;
  end
  aSSE
  aRMSE
  %- INST
  iSSE = zeros(1,N_I_sets) ;
  iRMSE = zeros(1,N_A_sets) ;
  for k = 1:N_I_sets
      H = .050 ;
      mem_k = .050 ;
      temper = .030 ;
      iP.history = H ;
      iP.mem_k = mem_k ;
      iP.temper = temper ;
      [gr_iARL{k},iARL{k},Kargs] = run_INST_fdbk1(...
          'model_params',iP,'groups',ugr','N_runs',N_runs_per_group) ;
      g = gr_iARL{k}(:,ugr) - grARL2 ;
      iSSE(k) = sum(g(:).^2) ;
      iRMSE(k) = sqrt(mean(g(:).^2)) ;
  end
  iSSE
  iRMSE
  ARL_params = Kargs.ARL_params ;
end

Summed Squared Error (SSE) and Root Mean SE (RMSE)

aSSE = zeros(1,N_A_sets) ;
aRMSE = zeros(1,N_A_sets) ;
for k = 1:N_A_sets
    g = gr_aARL{k}(:,ugr) - grARL2 ;
    aSSE(k) = sum(g(:).^2) ;
    aRMSE(k) = sqrt(mean(g(:).^2)) ;
end
aSSE
aRMSE

iSSE = zeros(1,N_I_sets) ;
iRMSE = zeros(1,N_I_sets) ;
for k = 1:N_I_sets
    g = gr_iARL{k}(:,ugr) - grARL2 ;
    iSSE(k) = sum(g(:).^2) ;
    iRMSE(k) = sqrt(mean(g(:).^2)) ;
end
iSSE
iRMSE
aSSE =
    1.1265    1.0728    1.0693    1.1402
aRMSE =
    0.1582    0.1544    0.1542    0.1592
iSSE =
    1.3409
iRMSE =
    0.1726

Plot the group ARLs

See .../fdbk1/data/model_ARL2_predictions.m
ls = {'r-' 'b-' 'k<-' 'r--' 'b--' 'k<--'} ;   % group line styles
lw = [.5 1.5 1.5  .5 1.5 1.5] ;                     % group line widths
ANCHOR_subplot_idx = [1 4 2 5] ;
INST_subplot_idx = [3 6] ;
ANCHOR_panel = {'a)' 'b)' 'c)' 'd)'} ;
INST_panel = {'e)' 'f)'} ;

endpts = ARL_params.endpoints ;    % [28 84 140 196 252 308 364 420 476]
step = endpts(3) - endpts(2) ;
x1 = endpts(1) ;
x = [x1/2 , [(endpts(2)+x1)/2:step:endpts(end)]]' ;
xtick = endpts(1:2:9) ;
%xtick = [0 endpts(1:2:9)] ;
ytick = [3.6:.2:4.8] ;
ax = [0 476 3.6 4.8] ;

clf ;
for k = 1:N_A_sets   % ANCHOR
    subpl = ANCHOR_subplot_idx(k) ;
    subplot(2,3,subpl) ;
    cla ; hold on ;
    for g = ugr'
        hh = plot(x,gr_aARL{k}(:,g),ls{g}) ;
        set(hh,'LineWidth',lw(g),'MarkerSize',4) ;
    end
    hold off ; box on ;
    hh = title(sprintf('%s A: H=.%03d k=.%03d T=.%03d ',...
           ANCHOR_panel{k},round(H_set(k)*1000),...
           round(mem_k_set(k)*1000),round(temper_set(k)*1000))) ;
    set(hh,'FontSize',14) ;
    axis(ax) ; set(gca,'xtick',xtick,'ytick',ytick,'xgrid','on') ;
    if 1  % (subpl>=4)
        hh = xlabel('Trial') ;
        set(hh,'FontSize',14) ;
    %else
    %    set(gca,'xticklabel',[]) ;
    end
    if (mod(subpl,3)==1)
        hh = ylabel('Average response level') ;
        set(hh,'FontSize',14) ;
    %else
    %    set(gca,'yticklabel',[]) ;
    end
end

for k = 1:N_I_sets   % INST
    subpl = INST_subplot_idx(k) ;
    subplot(2,3,subpl) ;
    cla ; hold on ;
    for g = ugr'
        hh = plot(x,gr_iARL{k}(:,g),ls{g}) ;
        set(hh,'LineWidth',lw(g),'MarkerSize',4) ;
    end
    hold off ; box on ;
    hh = title(sprintf('%s I: H=.%03d k=.%03d T=.%03d ',...
           INST_panel{k},round(.050*1000),round(.050*1000),round(.030*1000))) ;
    set(hh,'FontSize',14) ;
    axis(ax) ; set(gca,'xtick',xtick,'ytick',ytick,'xgrid','on') ;
    %set(gca,'yticklabel',[]) ;
    if 1  % (subpl>=4)
        hh = xlabel('Trial') ;
        set(hh,'FontSize',14) ;
    %else
    %    set(gca,'xticklabel',[]) ;
    end
end

Define Assimilation := ARL(N)-ARL(P) and plot Assim profile

See .../fdbk1/data/model_ARL2_predictions.m
ax = [0 476 -0.85 1.15] ;
ytick1 = [-.8:.2:1] ;

idx1 = [1 2 3 6 7] ;    % feedback blocks for the feedback-first groups
idx2 = [1 4 5 8 9] ;    % feedback blocks for the no-feedback-first grps

clf ;
for k = 1:N_A_sets   % ANCHOR
    Assim = gr_aARL{k}(:,[3 6]) - gr_aARL{k}(:,[2 5]) ;
    subpl = ANCHOR_subplot_idx(k) ;
    subplot(2,3,subpl) ;
    cla ; hold on ;
    hh = plot(x,Assim(:,1),'r-',x,Assim(:,2),'b--',...
              x(idx1),Assim(idx1,1),'ro',x(idx2),Assim(idx2,2),'bs',...
              x,empir_Assim(:,1),'r:',x,empir_Assim(:,2),'b:') ;
    set(hh(1:4),'LineWidth',1.5) ;
    axis(ax) ;
    hh=refline(0,0) ;
    set(hh,'Color','k','LineStyle','-','LineWidth',1) ;
    hold off ; box on ;
    hh = title(sprintf('%s A: H=.%03d k=.%03d T=.%03d ',...
           ANCHOR_panel{k},round(H_set(k)*1000),...
           round(mem_k_set(k)*1000),round(temper_set(k)*1000))) ;
    set(hh,'FontSize',14) ;
    axis(ax) ; set(gca,'xtick',xtick,'ytick',ytick1,'xgrid','on') ;
    if 1  % (subpl>=4)
        hh = xlabel('Trial') ;
        set(hh,'FontSize',14) ;
    %else
    %    set(gca,'xticklabel',[]) ;
    end
    if (mod(subpl,3)==1)
        hh = ylabel('ARL(H) - ARL(L)') ;
        set(hh,'FontSize',14) ;
    %else
    %    set(gca,'yticklabel',[]) ;
    end
    %hh = legend('Feedback first','No-feedback first',4) ;
    %set(hh,'FontSize',14) ;
end

for k = 1:N_I_sets   % INST
    Assim = gr_iARL{k}(:,[3 6]) - gr_iARL{k}(:,[2 5]) ;
    subpl = INST_subplot_idx(k) ;
    subplot(2,3,subpl) ;
    cla ; hold on ;
    hh = plot(x,Assim(:,1),'r-',x,Assim(:,2),'b--',...
              x(idx1),Assim(idx1,1),'ro',x(idx2),Assim(idx2,2),'bs',...
              x,empir_Assim(:,1),'r:',x,empir_Assim(:,2),'b:') ;
    set(hh(1:4),'LineWidth',1.5) ;
    axis(ax) ;
    hh=refline(0,0) ;
    set(hh,'Color','k','LineStyle','-','LineWidth',1) ;
    hold off ; box on ;
    hh = title(sprintf('%s I: H=.%03d k=.%03d T=.%03d ',...
           INST_panel{k},round(.050*1000),round(.050*1000),round(.030*1000))) ;
    set(hh,'FontSize',14) ;
    axis(ax) ; set(gca,'xtick',xtick,'ytick',ytick1,'xgrid','on') ;
    if 1  % (subpl>=4)
        hh = xlabel('Trial') ;
        set(hh,'FontSize',14) ;
    %else
    %    set(gca,'xticklabel',[]) ;
    end
    if (mod(subpl,3)==1)
        hh = ylabel('ARL(H) - ARL(L)') ;
        set(hh,'FontSize',14) ;
    %else
    %    set(gca,'yticklabel',[]) ;
    end
    %hh = legend('Feedback first','No-feedback first',4) ;
    %set(hh,'FontSize',14) ;
end

Final Figure

Single out ANCHOR parameter set #2 -- H=.040, mem_k=.083, T=.32

k = 2 ;
aP.history = H_set(k) ;
aP.mem_k = mem_k_set(k) ;
aP.temper = temper_set(k)

aAssim = gr_aARL{k}(:,[3 6]) - gr_aARL{k}(:,[2 5]) ;
iAssim = gr_iARL{1}(:,[3 6]) - gr_iARL{1}(:,[2 5]) ;

clf ;

ax = [0 476 3.6 4.8] ;
subplot(2,2,1) ;        % ANCHOR ARL2
cla ; hold on ;
for g = ugr'
    hh = plot(x,gr_aARL{k}(:,g),ls{g}) ;
    set(hh,'LineWidth',lw(g),'MarkerSize',4) ;
end
hold off ; box on ;
hh = title(sprintf('a)      ANCHOR, RMSE=%.3f     ',aRMSE(k))) ;
set(hh,'FontSize',14) ;
axis(ax) ; set(gca,'xtick',xtick,'ytick',ytick,'xgrid','on') ;
hh = xlabel('Trial') ; set(hh,'FontSize',14) ;
hh = ylabel('Average response level') ; set(hh,'FontSize',14) ;
%hh = legend('U1','L1','H1','L2','H2',3) ; set(hh,'FontSize',14) ;

subplot(2,2,2) ;        % INST ARL2
cla ; hold on ;
for g = ugr'
    hh = plot(x,gr_iARL{1}(:,g),ls{g}) ;
    set(hh,'LineWidth',lw(g),'MarkerSize',4) ;
end
hold off ; box on ;
hh = title(sprintf('c)      INST, RMSE=%.3f     ',iRMSE)) ;
set(hh,'FontSize',14) ;
axis(ax) ; set(gca,'xtick',xtick,'ytick',ytick,'xgrid','on') ;
hh = xlabel('Trial') ; set(hh,'FontSize',14) ;
hh = ylabel('Average response level') ; set(hh,'FontSize',14) ;
%hh = legend('U1','L1','H1','L2','H2',3) ; set(hh,'FontSize',14) ;

ax = [0 476 -0.85 1.15] ;
subplot(2,2,3) ;        % ANCHOR Assim
cla ; hold on ;
hh = plot(x,aAssim(:,1),'r-',x,aAssim(:,2),'b--',...
          x,empir_Assim(:,1),'r:',x,empir_Assim(:,2),'b:',...
          x(idx1),aAssim(idx1,1),'ro',x(idx2),aAssim(idx2,2),'bs') ;
set(hh,'LineWidth',1.5) ;
axis(ax) ;
hh=refline(0,0) ; set(hh,'Color','k','LineStyle','-','LineWidth',1) ;
hold off ; box on ;
hh = title('b)      ANCHOR                         ') ;
set(hh,'FontSize',14) ;
axis(ax) ; set(gca,'xtick',xtick,'ytick',ytick1,'xgrid','on') ;
hh = xlabel('Trial') ; set(hh,'FontSize',14) ;
hh = ylabel('ARL(H) - ARL(L)') ; set(hh,'FontSize',14) ;
hh = legend('Feedback first','No-feedback first','Human data',4) ;
%set(hh,'FontSize',14) ;

subplot(2,2,4) ;        % INST Assim
cla ; hold on ;
hh = plot(x,iAssim(:,1),'r-',x,iAssim(:,2),'b--',...
          x,empir_Assim(:,1),'r:',x,empir_Assim(:,2),'b:',...
          x(idx1),iAssim(idx1,1),'ro',x(idx2),iAssim(idx2,2),'bs') ;
set(hh,'LineWidth',1.5) ;
axis(ax) ;
hh=refline(0,0) ; set(hh,'Color','k','LineStyle','-','LineWidth',1) ;
hold off ; box on ;
hh = title('d)      INST                          ') ;
set(hh,'FontSize',14) ;
axis(ax) ; set(gca,'xtick',xtick,'ytick',ytick1,'xgrid','on') ;
hh = xlabel('Trial') ; set(hh,'FontSize',14) ;
hh = ylabel('ARL(H) - ARL(L)') ; set(hh,'FontSize',14) ;
hh = legend('Feedback first','No-feedback first','Human data',4) ;
%set(hh,'FontSize',14) ;
% Saved as work/papers/ProtoPaper/fig/final-fits.pdf
aP = 
       scale: 'LINEAR'
       N_cat: 7
     SM_conv: 1.0000e-03
      cat_sz: 0.0500
      perc_k: 0.0400
       mem_k: 0.0830
       avail: [7x1 double]
     anchors: [7x6 double]
     cutoffs: [-1.8000 -0.6000 0.4500 1.3500]
      temper: 0.0320
     history: 0.0400
       alpha: 0.3000
       decay: 0.5000
         ITI: 4
    M_raster: 7
    A_raster: [5 5 3 3]
    mnfieldp: 1

Clean up and archive workspace

clear hh k g Assim Kargs x1 ;
clear aARL iARL ;  % not used anyway
save(fname) ;