Closed Chuck-Chae closed 4 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
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
end
save('MF.mat','MF') save('NLL.mat','NLL') save('Theta.mat','Theta') delete hbi lap