% 生成两组多维示例数据,每组数据量不同
% Group1 和 Group2 分别代表两组独立样本,每组数据有不同的维度
Group1 = randn(50, 3) + 1; % 第一组数据,50个样本,3个维度,均值为1
Group2 = randn(70, 3) + 2; % 第二组数据,70个样本,3个维度,均值为2
% 初始化p值数组
p_values = zeros(1, size(Group1, 2)); % 存储每个维度的p值
h_values = zeros(1, size(Group1, 2)); % 存储每个维度的检验结果
% 对每个维度进行Mann-Whitney U检验
for i = 1:size(Group1, 2)
[p_values(i), h_values(i)] = ranksum(Group1(:,i), Group2(:,i), 'tail', 'both');
end
% 打印各维度的检验结果
fprintf('各维度的Mann-Whitney U检验结果:\n');
for i = 1:size(Group1, 2)
fprintf('维度 %d 的p值: %.4f\n', i, p_values(i));
if h_values(i) == 1
fprintf('拒绝零假设:维度 %d 上的两组数据的中位数有显著差异。\n', i);
else
fprintf('未拒绝零假设:维度 %d 上的两组数据的中位数无显著差异。\n', i);
end
end
% 可视化每个维度的分布
figure;
for i = 1:size(Group1, 2)
% 绘制第一组数据的箱线图
subplot(3,2,2*i-1);
boxplot(Group1(:,i), 'Labels', {'组1'});
title(['维度 ', num2str(i), ' 的组1箱线图']);
ylabel('值');
% 绘制第二组数据的箱线图
hold on;
boxplot(Group2(:,i), 'Labels', {'组2'});
title(['维度 ', num2str(i), ' 的组2箱线图']);
ylabel('值');
hold off;
% 绘制直方图(概率密度)
subplot(3,2,2*i);
hold on;
histogram(Group1(:,i), 'Normalization', 'pdf', 'FaceAlpha', 0.5);
histogram(Group2(:,i), 'Normalization', 'pdf', 'FaceAlpha', 0.5);
legend({'组1', '组2'}, 'Location', 'Best');
title(['维度 ', num2str(i), ' 的分布图']);
xlabel('值');
ylabel('概率密度');
hold off;
end
% 显示图表标题
sgtitle('多维数据的Mann-Whitney U检验及分布可视化');
