📄 matlab f统计量.txt
字号:
F统计量matlab源程序2008年07月15日 星期二 02:48 最近在研究模糊综合评判,物元可拓模型,灰色关联度,这些模型中其中共同的的一点是权重问题,在判别中师兄的小论文中提出用F统计量定权的方法,既组间差异与组内差异的比值(相同自由度下,因此要除以自由度),比值越大,表明该因子的区别群组的能力越强,因此权重越大,使用Spss可以方便的得到F值,但是在系统的集成中必须使用我们自己的程序,因此需要自己编写。
为了方便,把自己的注意力集中于算法的实现中,采用matlab先计算,然后转换为C#,Vb语言。
刚出炉的F统计量,现在公布:
clear;clc;
a=[
1 38.28 20.43 795.45 367.93 973.89 225.15 2322.5
1 55.51 22.37 798.67 340.47 1040.9 211.97 2280.5
1 51.1 18.84 861.44 332.54 1088.76 257.25 2359
1 36.27 14.59 836.15 420.41 1011.83 189.54 2332.5
1 40.08 13.25 809.6 280.07 1073.16 164.64 2195.5
1 39.28 8.51 880.06 338.64 1081.36 214.44 2285
1 52.5 27.36 817.52 346.59 1026.63 278.63 2404.5
1 64.73 35.63 755.45 331.32 978.5 257.87 2328.5
1 41.68 27.6 825.57 339.64 1024.5 278.24 2422.5
1 48.85 25.46 828.69 331.82 1018.3 300.4 2458
1 44.01 28.25 826.3 307.23 1020.2 305.33 2409
1 66.31 49 769.35 340.18 1015.4 315.62 2385.77
1 42.44 23.07 846 348.05 1025.4 296.69 2427
1 59.34 39.7 794.31 334.63 1016.4 317.27 2414
1 45.03 21.85 837.43 325.11 1026.3 279.93 2373.095
1 43.87 22.73 843.5 338.53 1027.2 299.16 2405.725
1 64.37 51.85 762.31 289.17 1026.1 318.91 2368.125
1 39.52 14.88 864.64 308.52 1115.17 204.24 2567
1 52.91 17.14 821.79 306.92 1141.94 122.04 2444.5
1 48.7 27.46 853.62 334.37 1081.32 264.66 2361.5
1 47.7 22.85 864.42 360.61 1083.44 263.42 2363
2 2.81 2.31 1601.02 2533.55 486.73 2.47 3800.5
2 3.41 3.65 1512.51 2652.54 471.13 2.06 3762.5
2 4.21 4.86 1815.52 2584.68 963.61 0 4399
2 6.01 2.43 1791.61 2338.17 1278.08 30.87 4362
2 6.41 3.53 1308.01 1297.22 1283.4 1.03 3299
2 2 1.95 1161.68 1003.73 1077.06 110.1 3003.5
2 35.27 18.48 785.11 331.32 979.57 4.04 2245
2 1.2 2.67 1160.54 821.29 1100.82 85.41 2942
2 3.81 1.09 820.51 396.61 1004.74 37.04 2019
2 5.21 2.92 814.08 419.8 1005.8 31.49 2017.5
2 2.61 1.82 920.75 636.41 1005.45 74.09 2330
2 3.01 1.95 897.53 614.44 889.87 123.27 2200
2 25.25 4.74 808.33 486.31 881.01 191.6 2216.5
2 17.64 6.44 884.2 473.49 930.29 218.95 2417.45
2 25.45 6.93 852.01 478.37 966.45 182.54 2339
2 4.41 2.67 992.71 724.88 1025.66 134.97 2578
2 26.65 7.9 839.5 474.71 941.99 184.18 2362.5
2 3.01 1.58 1220.54 956.14 1244.75 3.91 3071
2 25.65 7.42 790.17 328.88 1026.01 92.82 2163
2 6.61 7.3 865.57 389.31 1065.27 46.51 2243.5
2 9.82 3.77 1240.77 939.71 1165.24 177.19 3248
2 25.85 5.72 759.59 302.03 1001.96 76.15 1971.5
2 28.66 8.51 774.99 322.78 1013.96 93.84 2000.5
2 43.49 28.05 737.98 391.12 1025.66 7.41 2134
2 36.27 12.76 713.38 237.36 1020.34 58.45 1959
2 29.86 10.09 714.07 234.92 1028.49 24.9 1938
2 43.09 12.1 703.72 333.76 995.17 10.7 1986.5
2 15.23 5.35 813.85 787.16 688.79 205.18 2093
2 4.41 2.8 824.65 449.06 998.36 38.28 2046.5
3 12.63 8.75 1055.50 1379.00 875.10 1.65 2645.00
3 67.01 36.65 864.23 357.76 1035.80 426.31 2608.88
3 115.8 27 926.5 350.93 1079.49 544.38 3075
3 84.65 34.24 892.72 381.19 1060.00 466.64 2731.00
3 15.43 21.52 898.68 88.47 1061.46 414.48 2483
];
g=3;
[m,n]=size(a);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for i=1:g
groupNum(i)=0;
group(i)=0;
for j=1:m
if a(j,1)==i
group(i)=group(i)+1;
end
end
if i==1
groupNum(i)=group(i);
else
groupNum(i)=groupNum(i-1)+group(i);
end
end
group
groupNum %计算分类个数数组
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%计算总平均值
for j=1:n-1
TotalMean(j)=0;
for i=1:m
TotalMean(j)=TotalMean(j)+a(i,j+1);
end
TotalMean(j)=TotalMean(j)/m;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
GroupMean=[];
for i=1:g
if i==1
low=1;
up=groupNum(i);
else
low=groupNum(i-1)+1;
up=groupNum(i);
end
matrix=a(low:up,:);
MatrixMean=mean(matrix); %各分类组平均值
GroupMean=[GroupMean;MatrixMean];
GroupInnerSquareDiff=[];
for u=1:group(i)
for v=1:n-1
GroupInnerSquareDiff(u,v)=(matrix(u,v+1)-MatrixMean(v+1)).^2;
%Σ(Xij-Xmean)^2
end
end
GroupInnerSquareDiff;
for v=1:n-1
GroupInnerSumSquareDiff(i,v)=0;
for u=1:group(i)
GroupInnerSumSquareDiff(i,v)= GroupInnerSumSquareDiff(i,v)+GroupInnerSquareDiff(u,v);
end
end
end
GroupMean=GroupMean(:,2:n);
GroupInnerSumSquareDiff; %各个分组内平方和
Q0=sum(GroupInnerSumSquareDiff) %组内平方差,即对各个分组内的平方和再求和
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%下面计算组间平方差
TotalMean;
for i=1:n-1
Q1(i)=0;
for j=1:g
Q1(i)=Q1(i)+group(j)*(GroupMean(j,i)-TotalMean(i))^2;
end
end
Q1
sumF=0;
for i=1:n-1
F(i)=(Q1(i)/(g-1))/(Q0(i)/(m-g));
sumF=sumF+F(i);
end
F
for i=1:n-1
F_Normalization(i)=F(i)/sumF;
end
F_Normalization
其中a是样本,第一列表示分类号
F是F统计量的值
F_Normalization是对多因子F统计量归一化后的结果,作为权重使用
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -