fcbm_maps = {fname_8states, fname_4states}; % 8states와 4states 모델의 결과를 저장할 파일 이름
models = {@model_VFA_8states_v3, @model_VFA_4states_v3}; % 8states와 4states 모델만 사용
for tr = 1:maxB
ctr = 1;
Data = cell(numSub, 1);
for j = 1:numSub
subj = Mydata_Orderblk{j, tr};
if ~isempty(subj)
Data{ctr} = subj;
ctr = ctr + 1;
end
end
Data = Data(1:ctr-1);
% 8states와 4states 모델에 대해 VFA 수행
CBM8states = cbm_lap(Data, @model_VFA_8states_v3, prior_RL(1), fname_8states);
CBM4states = cbm_lap(Data, @model_VFA_4states_v3, 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) = cbm.output.responsibility(:, 1);
MF(tr, subidx, 2) = cbm.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('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 = 'vfa_8states.mat'; fname_4states = 'vfa_4states.mat';
fcbm_maps = {fname_8states, fname_4states}; % 8states와 4states 모델의 결과를 저장할 파일 이름
models = {@model_VFA_8states_v3, @model_VFA_4states_v3}; % 8states와 4states 모델만 사용
for tr = 1:maxB ctr = 1; Data = cell(numSub, 1); for j = 1:numSub subj = Mydata_Orderblk{j, tr}; if ~isempty(subj) Data{ctr} = subj; ctr = ctr + 1; end end Data = Data(1:ctr-1);
end
save('MF.mat', 'MF') save('NLL.mat', 'NLL') save('Theta.mat', 'Theta') delete hbi lap