24小时热门版块排行榜    

CyRhmU.jpeg
查看: 849  |  回复: 0
【悬赏金币】回答本帖问题,作者jaceywu将赠送您 10 个金币

jaceywu

新虫 (初入文坛)

[求助] 请教脑网络特征属性计算相关问题

最近在使用MATLAB的 Brain Connectivity Toolbox (BCT) 进行加权无向脑网络分析时,我遇到了一个关于聚类系数 (Clustering Coefficient) 和 局部效率 (Local Efficiency) 计算的问题,希望和大家探讨、请教一下可能的原因及解决方法。

在计算过程中,我发现以下现象:对角线置零后,每个节点的聚类系数和局部效率的数值完全相同;如果不置零对角线,聚类系数的值明显高于局部效率,但两者不再相等。

因此我有以下疑问:这样的结果是否合理?可能的原因是什么?是否与对角线置零有关?是否有合适的方法来验证或修正这一计算?
希望有相关经验的朋友可以交流一下,非常感谢!

代码如下:

%% 初始化结构体来存储结果
network_metrics = struct();

% 遍历每个矩阵,计算网络属性
for i = 1:length(matrix_names)
    matrix_name = matrix_names{i};
   
    % 检查矩阵是否存在
    if isfield(data, matrix_name)
        W = data.(matrix_name); % 获取矩阵
        
        % 把主对角线置零
        W = W - diag(diag(W)); % 删除对角线上的值
        
        % 计算节点强度
        S = strengths_und(W);
        
        % 计算全局聚类系数(每个节点的聚类系数)
        C1 = clustering_coef_wu(W_nrm);
        
        % 计算全局聚类系数(取平均值)
        C = mean(C1);
        
        % 计算特征路径长度
        L_matrix =  1 ./W; % 连接长度矩阵
        D = distance_wei(L_matrix); % 计算最短路径长度矩阵
        [lambda,efficiency,ecc,radius,diameter] = charpath(D,0,1);
        L = lambda;  % 计算特征路径长度
        
        % 计算全局效率
        Ge = efficiency_wei(W);
        
        % 计算局部效率
        Le = mean(efficiency_wei(W_nrm, 2));  % 使用 local = 2 计算局部效率
        
        threshold = 0.4; % 设定阈值
        W(W < threshold) = 0;
        W(W >= threshold) = 1;

        % 设定重连参数
        ITER = 100;
       [W_rand, eff] = randmio_und(W, ITER);

       % 计算聚类系数(使用二值方法)
       C_rand = mean(clustering_coef_bu(W_rand));
       C_1 = mean(clustering_coef_bu(W));

       % 计算特征路径长度(使用二值方法)
       D_rand = distance_bin(W_rand);
       L_rand = charpath(D_rand, 0, 0);

       D_1 = distance_bin(W);
       L_1 = charpath(D_1, 0, 0);
        
        % 计算小世界属性 sigma
        SmallWorldSigma = (C_1 / C_rand) / (L_1 / L_rand);
        
        % 存储结果
        network_metrics.(matrix_name).GlobalClusteringCoefficient = C;
        network_metrics.(matrix_name).CharacteristicPathLength = L;
        network_metrics.(matrix_name).GlobalEfficiency = Ge;
        network_metrics.(matrix_name).LocalEfficiency = Le;
        network_metrics.(matrix_name).NodeStrength = S;
        network_metrics.(matrix_name).SmallWorldSigma = SmallWorldSigma;
        
    else
        error('矩阵 %s 在文件中不存在!', matrix_name);
    end
end

% 将结果保存到新的.mat文件中
save(output_file, '-struct', 'network_metrics');
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 jaceywu 的主题更新
不应助 确定回帖应助 (注意:应助才可能被奖励,但不允许灌水,必须填写15个字符以上)
信息提示
请填处理意见