2012建模的題目是要求對葡萄酒品質進行評價,第一問是兩組葡萄酒的評價有沒有顯著性差異,用的是統計學中的假設T檢驗。matlab代碼如下:
% 清空環境變量
clear all
clc
%導入數據
X1=xlsread('2012A_T1_processed.xls', 'T1_red_grape', 'D3:M272');
X2=xlsread('2012A_T1_processed.xls', 'T2_red_grape', 'D3:M272');
X3=xlsread('2012A_T1_processed.xls', 'T1_white_grape', 'D3:M282');
X4=xlsread('2012A_T1_processed.xls', 'T2_white_grape', 'D3:M282');
%% 紅葡萄酒T檢驗計算過程
[m1,n1]=size(X1);
K1=27;
% 計算每個樣品的總得分
for i=1:K1
for j=1:n1
SX1(i,j)=sum(X1(10*i-9:10*i,j));
SX2(i,j)=sum(X2(10*i-9:10*i,j));
end
end
% 計算每組樣品得分的均值
for i=1:K1
Mean1(i)=mean(SX1(i,:));
Mean2(i)=mean(SX2(i,:));
end
% 計算檢驗值
for i=1:K1
S1(1,i)=(sum((SX1(i,:)-Mean1(i)).^2)+sum((SX2(i,:)-Mean2(i)).^2))/(n1*(n1-1));
T1(1,i)=(Mean1(i)-Mean2(i))/(sqrt(S1(1,i)));
end
AT_R=abs(T1);
M_AT_R=mean(AT_R);
%% 白葡萄酒T檢驗計算過程
[m2,n2]=size(X3);
K2=28;
% 計算每個樣品的總得分
for i=1:K2
for j=1:n2
SX3(i,j)=sum(X3(10*i-9:10*i,j));
SX4(i,j)=sum(X4(10*i-9:10*i,j));
end
end
% 計算每組樣品得分的均值
for i=1:K2
Mean3(i)=mean(SX3(i,:));
Mean4(i)=mean(SX4(i,:));
end
% 計算檢驗值
for i=1:K2
S2(1,i)=(sum((SX3(i,:)-Mean3(i)).^2)+sum((SX4(i,:)-Mean4(i)).^2))/(n2*(n2-1));
T2(1,i)=(Mean3(i)-Mean4(i))/(sqrt(S2(1,i)));
end
AT_W=abs(T2);
M_AT_W=mean(AT_W);
%% 結果顯示與比較
a=2.102; % T(0.05,2,18)=2.101
b=2.878; % T(0.01,2,18)=2.878
set(gca,'linewidth',2)
% 紅酒結果
for i=1:K1
Ta1(i)=a;
Tb1(i)=b;
end
t1=1:K1;
subplot(2,1,1);
plot(t1,AT_R,'*k-',t1,Ta1,'r-',t1,Tb1,'-.b', 'LineWidth', 2)
title('紅酒顯著性檢驗結果','fontsize',14)
legend('T檢驗值', 'T(0.05)值', 'T(0.01)值')
xlabel('樣品號'), ylabel('T檢驗值')
% 白酒結果
for i=1:K2
Ta2(i)=a;
Tb2(i)=b;
end
t2=1:K2;
subplot(2,1,2);
plot(t2,AT_W,'*k-',t2,Ta2,'r-',t2,Tb2,'-.b', 'LineWidth', 2)
title('白酒顯著性檢驗結果','fontsize',14)
legend('T檢驗值', 'T(0.05)值', 'T(0.01)值')
xlabel('樣品號'), ylabel('T檢驗值')
% 顯示平均檢驗結果
disp(['兩組品酒師對紅酒的平均顯著性T檢驗值:' num2str(M_AT_R)]);
disp(['兩組品酒師對白酒的平均顯著性T檢驗值:' num2str(M_AT_W)]);
輸出:
兩組品酒師對紅酒的平均顯著性T檢驗值:1.7539
兩組品酒師對白酒的平均顯著性T檢驗值:1.1641
查表可知,t(0.05,2.18)=2.101,t(0.01,2.18)=2.878。按照t檢驗的步驟,可得到下面的結論:
①兩組品酒師對紅葡萄酒和白葡萄酒的評價效果差異都不顯著
②對白葡萄酒效果的評價差異小於紅葡萄酒。