Chuck-Chae / RL_Abstraction_MC

0 stars 0 forks source link

SARSA_main.m #6

Closed Chuck-Chae closed 4 months ago

Chuck-Chae commented 5 months ago

clear;

rng(44501)

load('C:\Users\cocjr\Cortese_et_al_2021\RL-modelling\Mydata_Orderblk.mat') numSub = size(Mydata_Orderblk,1); f = fieldnames(Mydata_Orderblk{1,1}); maxB = 20; Nmod = 2; % 4states와 8states 두 개 모델만 사용

nparm = [2 2]; % 4states와 8states 모델의 파라미터 개수

MF = nan(maxB, numSub, Nmod); NLL = nan(maxB, numSub, Nmod);

for i = 1:Nmod m = zeros(nparm(i),1); v = 6.25; prior_RL(i) = struct('mean',m,'variance',v); Theta{i} = nan(maxB, numSub, nparm(i)); end

fname_8states = 'lap_8states.mat'; fname_4states = 'lap_4states.mat';

fcbm_maps = {fname_8states, fname_4states}; % 8states와 4states 모델의 결과를 저장할 파일 이름

models = {@model_RL_8states_v2, @model_RL_4states_v2}; % 8states와 4states 모델만 사용

for tr=1:maxB ctr = 1; Data= []; for j=1:numSub subj = Mydata_Orderblk{j,tr}; if ~isempty(subj) Data{ctr, 1}=subj; ctr = ctr+1; end end

% 8states와 4states 모델에 대해 laplace approximation 수행
CBM8states = cbm_lap(Data, @model_RL_8states_v2, prior_RL(1), fname_8states);
CBM4states = cbm_lap(Data, @model_RL_4states_v2, prior_RL(2), fname_4states);

% hbi 결과 저장
fname_hbi_blk = ['hbi_RL_blk_',num2str(tr),'.mat'];
cbm_hbi(Data, models, fcbm_maps, fname_hbi_blk);
load(fname_hbi_blk);

% 해당 블록에 대한 데이터가 있는 subjects의 인덱스 가져오기
subidx = find(~cellfun(@isempty, Mydata_Orderblk(:,tr)));

% MF, NLL, Theta에 결과 저장
MF(tr, subidx, 1)       = cb[m.output.responsibility](http://m.output.responsibility/)(:,1);
MF(tr, subidx, 2)       = cb[m.output.responsibility](http://m.output.responsibility/)(:,2);

NLL(tr, subidx, 1)      = -CBM8states.math.loglik;
Theta{1}(tr, subidx, :) = [CBM8states.math.theta{:}]';

NLL(tr, subidx, 2)      = -CBM4states.math.loglik;
Theta{2}(tr, subidx, :) = [CBM4states.math.theta{:}]';

end

save('MF.mat','MF') save('NLL.mat','NLL') save('Theta.mat','Theta') delete hbi lap