⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 construct_lin_pred.m

📁 The BNL toolbox is a set of Matlab functions for defining and estimating the parameters of a Bayesi
💻 M
字号:
function linear_predictor=construct_lin_pred(parms,design,parents,node_sizes,equiv_class,equiv_class_time,terminal_merged_nodes,N)
%linear_predictor constructs linear predictor conditional probability tables 
%design mat can be case specific or constant across cases
    %this is automatically determined from the size of the last dimensions
    %of the design mat
   


linear_predictor=cell(length(design),1);%one linear predictor for each equivalent class of nodes
for i=1:length(design)
    nd=ndims(design{i});
    if size(design{i},nd)~=N 
        n=1;
        grouped=1;
    else
        n=N;
        grouped=0;
    end
    node_nr=find(equiv_class==i,1);
    par_set=parms{equiv_class_time(node_nr)};%select appropriate parameter set
    par=parents{node_nr};
    set=[ par node_nr ];
    terminal=mysubset(node_nr, terminal_merged_nodes.nodenrs);
            
        
    if terminal
        term_node_nr=find(terminal_merged_nodes.nodenrs==node_nr);
        S_item=terminal_merged_nodes.respcat{term_node_nr}(1);
        f=find(terminal_merged_nodes.respcat{term_node_nr}(:)~=S_item);
        if ~isempty(f) error('all variables merged into same node should have same nr of response categories'), end
        M=terminal_merged_nodes.nrvars(term_node_nr);
        siz=[ node_sizes(set(1:end-1))  M S_item-1   ];%first category of each item has zero on lin_pred
    else
        siz=node_sizes(set);
        siz(end)=siz(end)-1; %first category has zero on lin_pred
        %siz=[siz(end) siz(1:end-1)];
    end
    for nn=1:n
        if grouped
            des=design{i};
        else  des=design{i}(:,:,nn);
        end
        if isscalar(siz) siz=[1 siz  ]; else; end
        lin_pred=des*par_set;
        lin_pred=reshape(lin_pred,[ siz(end:-1:1)]);%first elements are put in first dimension,etc
        lin_pred=permute( lin_pred,[length(siz):-1:1]);
        addedzeroes=zeros([siz(1:end-1) 1 ]);%add zeroes for baseline category
        lin_pred=cat(length(siz),addedzeroes,lin_pred);  
        if grouped linear_predictor{i}=lin_pred;
        else linear_predictor{i}=cat(length(siz)+1,linear_predictor{i},lin_pred);
        end
    end
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -