Wilcoxon符號秩檢驗
它適用於T檢驗中的成對比較,但並不要求成對數據之差服從正態分布,只要求對稱分布即可。檢驗成對觀測數據之差是否來自均值為0的總體(產生數據的總體是否具有相同的均值)。
在Matlab中,秩和檢驗由函數ranksum實現。命令為: [p,h]=ranksum(x,y,alpha)
其中x,y可為不等長向量,alpha為給定的顯著水平,它必須為0和1之間的數量。p返回 產生兩獨立樣本的總體是否相同的顯著性概率,h返回假設檢驗的結果。如果x和y的總 體差別不顯著,則h為零;如果x和y的總體差別顯著,則h為1。如果p接近於零,則可對 原假設質疑。
clear;clc;path1 = 'C:\Users\Administrator\Desktop\重新整理血管網絡\真實數據.xls';path2 = 'C:\Users\Administrator\Desktop\重新整理血管網絡\真實數據1.xls';path3 = 'C:\Users\Administrator\Desktop\重新整理血管網絡\生成數據9.xls';path4 = 'C:\Users\Administrator\Desktop\重新整理血管網絡\生成數據1.xls';path5 = 'C:\Users\Administrator\Desktop\重新整理血管網絡\wgan-gp1.xls';path6 = 'C:\Users\Administrator\Desktop\重新整理血管網絡\wgan-gp200.xls';mypath1 = path1;%對比兩個結果mypath2 = path2;A = 'A2:A500';B = 'B2:B500';C = 'C2:C500';D = 'D2:D500';E = 'E2:E500';F = 'F2:F500';G = 'G2:G500';H = 'H2:H500';I = 'I2:I500';J = 'J2:J500';K = 'K2:K500';L = 'L2:L500';M = 'M2:M500';N = 'N2:N500';O = 'O2:O500';disp('主分支長度')[num1] = xlsread(mypath1,A);[num2] = xlsread(mypath2,A);mean1 = mean(num1); %平均值mean2 = mean(num2); std1 = std(num1); %標準差std2 = std(num2); var1 = var(num1); %方差var2 = var(num2);[p,h] = ranksum(num1,num2);fprintf('原始數據1--平均值:%f,標準差:%f,方差:%f\n',mean1,std1,var1);fprintf('原始數據2--平均值:%f,標準差:%f,方差:%f\n',mean2,std2,var2);fprintf('h值:%d,p值:%f\n\n',h,p);disp('左分支長度')[num1] = xlsread(mypath1,B);[num2] = xlsread(mypath2,B);mean1 = mean(num1); %平均值mean2 = mean(num2); std1 = std(num1); %標準差std2 = std(num2); var1 = var(num1); %方差var2 = var(num2);[p,h] = ranksum(num1,num2);fprintf('原始數據1--平均值:%f,標準差:%f,方差:%f\n',mean1,std1,var1);fprintf('原始數據2--平均值:%f,標準差:%f,方差:%f\n',mean2,std2,var2);fprintf('h值:%d,p值:%f\n\n',h,p);disp('右分支長度')[num1] = xlsread(mypath1,C);[num2] = xlsread(mypath2,C);mean1 = mean(num1); %平均值mean2 = mean(num2); std1 = std(num1); %標準差std2 = std(num2); var1 = var(num1); %方差var2 = var(num2);[p,h] = ranksum(num1,num2);fprintf('原始數據1--平均值:%f,標準差:%f,方差:%f\n',mean1,std1,var1);fprintf('原始數據2--平均值:%f,標準差:%f,方差:%f\n',mean2,std2,var2);fprintf('h值:%d,p值:%f\n\n',h,p);disp('主左長度比')[num1] = xlsread(mypath1,D);[num2] = xlsread(mypath2,D);mean1 = mean(num1); %平均值mean2 = mean(num2); std1 = std(num1); %標準差std2 = std(num2); var1 = var(num1); %方差var2 = var(num2);[p,h] = ranksum(num1,num2);fprintf('原始數據1--平均值:%f,標準差:%f,方差:%f\n',mean1,std1,var1);fprintf('原始數據2--平均值:%f,標準差:%f,方差:%f\n',mean2,std2,var2);fprintf('h值:%d,p值:%f\n\n',h,p);disp('主右長度比')[num1] = xlsread(mypath1,E);[num2] = xlsread(mypath2,E);mean1 = mean(num1); %平均值mean2 = mean(num2); std1 = std(num1); %標準差std2 = std(num2); var1 = var(num1); %方差var2 = var(num2);[p,h] = ranksum(num1,num2);fprintf('原始數據1--平均值:%f,標準差:%f,方差:%f\n',mean1,std1,var1);fprintf('原始數據2--平均值:%f,標準差:%f,方差:%f\n',mean2,std2,var2);fprintf('h值:%d,p值:%f\n\n',h,p);disp('主分叉捲曲度')[num1] = xlsread(mypath1,F);[num2] = xlsread(mypath2,F);mean1 = mean(num1); %平均值mean2 = mean(num2); std1 = std(num1); %標準差std2 = std(num2); var1 = var(num1); %方差var2 = var(num2);[p,h] = ranksum(num1,num2);fprintf('原始數據1--平均值:%f,標準差:%f,方差:%f\n',mean1,std1,var1);fprintf('原始數據2--平均值:%f,標準差:%f,方差:%f\n',mean2,std2,var2);fprintf('h值:%d,p值:%f\n\n',h,p);disp('左分叉捲曲度')[num1] = xlsread(mypath1,G);[num2] = xlsread(mypath2,G);mean1 = mean(num1); %平均值mean2 = mean(num2); std1 = std(num1); %標準差std2 = std(num2); var1 = var(num1); %方差var2 = var(num2);[p,h] = ranksum(num1,num2);fprintf('原始數據1--平均值:%f,標準差:%f,方差:%f\n',mean1,std1,var1);fprintf('原始數據2--平均值:%f,標準差:%f,方差:%f\n',mean2,std2,var2);fprintf('h值:%d,p值:%f\n\n',h,p);disp('右分叉捲曲度')[num1] = xlsread(mypath1,H);[num2] = xlsread(mypath2,H);mean1 = mean(num1); %平均值mean2 = mean(num2); std1 = std(num1); %標準差std2 = std(num2); var1 = var(num1); %方差var2 = var(num2);[p,h] = ranksum(num1,num2);fprintf('原始數據1--平均值:%f,標準差:%f,方差:%f\n',mean1,std1,var1);fprintf('原始數據2--平均值:%f,標準差:%f,方差:%f\n',mean2,std2,var2);fprintf('h值:%d,p值:%f\n\n',h,p);disp('主左角度')[num1] = xlsread(mypath1,I);[num2] = xlsread(mypath2,I);mean1 = mean(num1); %平均值mean2 = mean(num2); std1 = std(num1); %標準差std2 = std(num2); var1 = var(num1); %方差var2 = var(num2);[p,h] = ranksum(num1,num2);fprintf('原始數據1--平均值:%f,標準差:%f,方差:%f\n',mean1,std1,var1);fprintf('原始數據2--平均值:%f,標準差:%f,方差:%f\n',mean2,std2,var2);fprintf('h值:%d,p值:%f\n\n',h,p);disp('主右角度')[num1] = xlsread(mypath1,J);[num2] = xlsread(mypath2,J);mean1 = mean(num1); %平均值mean2 = mean(num2); std1 = std(num1); %標準差std2 = std(num2); var1 = var(num1); %方差var2 = var(num2);[p,h] = ranksum(num1,num2);fprintf('原始數據1--平均值:%f,標準差:%f,方差:%f\n',mean1,std1,var1);fprintf('原始數據2--平均值:%f,標準差:%f,方差:%f\n',mean2,std2,var2);fprintf('h值:%d,p值:%f\n\n',h,p);disp('左右角度')[num1] = xlsread(mypath1,K);[num2] = xlsread(mypath2,K);mean1 = mean(num1); %平均值mean2 = mean(num2); std1 = std(num1); %標準差std2 = std(num2); var1 = var(num1); %方差var2 = var(num2);[p,h] = ranksum(num1,num2);fprintf('原始數據1--平均值:%f,標準差:%f,方差:%f\n',mean1,std1,var1);fprintf('原始數據2--平均值:%f,標準差:%f,方差:%f\n',mean2,std2,var2);fprintf('h值:%d,p值:%f\n\n',h,p);disp('主端點長度')[num1] = xlsread(mypath1,L);[num2] = xlsread(mypath2,L);mean1 = mean(num1); %平均值mean2 = mean(num2); std1 = std(num1); %標準差std2 = std(num2); var1 = var(num1); %方差var2 = var(num2);[p,h] = ranksum(num1,num2);fprintf('原始數據1--平均值:%f,標準差:%f,方差:%f\n',mean1,std1,var1);fprintf('原始數據2--平均值:%f,標準差:%f,方差:%f\n',mean2,std2,var2);fprintf('h值:%d,p值:%f\n\n',h,p);disp('左端點長度')[num1] = xlsread(mypath1,M);[num2] = xlsread(mypath2,M);mean1 = mean(num1); %平均值mean2 = mean(num2); std1 = std(num1); %標準差std2 = std(num2); var1 = var(num1); %方差var2 = var(num2);[p,h] = ranksum(num1,num2);fprintf('原始數據1--平均值:%f,標準差:%f,方差:%f\n',mean1,std1,var1);fprintf('原始數據2--平均值:%f,標準差:%f,方差:%f\n',mean2,std2,var2);fprintf('h值:%d,p值:%f\n\n',h,p)disp('右端點長度')[num1] = xlsread(mypath1,N);[num2] = xlsread(mypath2,N);mean1 = mean(num1); %平均值mean2 = mean(num2); std1 = std(num1); %標準差std2 = std(num2); var1 = var(num1); %方差var2 = var(num2);[p,h] = ranksum(num1,num2);fprintf('原始數據1--平均值:%f,標準差:%f,方差:%f\n',mean1,std1,var1);fprintf('原始數據2--平均值:%f,標準差:%f,方差:%f\n',mean2,std2,var2);fprintf('h值:%d,p值:%f\n\n',h,p)