Организация, проведение и обработка результатов активного эксперимента, страница 4

y=[  22.875  22.884  22.875

40.928  40.923  40.946

11.411  11.412  11.403

23.055  23.038  23.057

22.891  22.885  22.882

40.935   40.93  40.925

11.411  11.424  11.408

23.043  23.054  23.052

9.914   9.908   9.919

14.931  14.934  14.933

5.204     5.2   5.202

9.094    9.11   9.109

9.921   9.918   9.913

14.94  14.939  14.937

5.203   5.198     5.2

9.109   9.109    9.11

];   %3 выборки значений выхода

ys = mean(y')   %Нахождение среднего значения У

length(y)

for i=1:length(y)

yd(i)=sum((y(i,:)-ys(i)).^2)/2; %Вычисление дисперсии

end

yd

disp('Средняя дисперсия');

sd = mean(yd)   %Нахождение среднего значения дисперсии

disp('Проверка на однородность ряда дисперсий критерием Кохрена');

dmax = max(yd)

Gmax = dmax/sum(yd) %Расчетная величина коэффициента Кохрена

disp ('Коэффициент Кохрена = 0.33');

if (Gmax<0.33)     

disp('Выборки однородны');

else

disp('Выборки НЕОДНОРОДНЫ');

end

disp('Линейная регрессия');

b0=sum(ys)/length(ys);  %Нахождение свободного члена b0

b=[];

for i=1:4

bn=sum(ys.*xmat(:,i)')/length(ys);  %Вычисление коэффициентов линейной регрессии

b=[b bn];

end

disp ('Коэффициенты линейного уравнения регрессии, начиная с нулевого:');

[b0

b']

bn=[b0 b];

Dbj=sd/(length(ys)*3);   %Нахождение дисперсии ошибки определения bj

disp ('Коэффициенты Стьюдента:');   %Нахождение коэффициентов Стьюдента

tk=abs(bn)/sqrt(Dbj)                 %для проверки на статистическую значимость

disp ('Критерий = 2.036');          %коэффициентов регрессии.

disp ('Следующие коэффициенты незначимы:');

for i=1:length(tk)

if tk(i)<2.036  %Проверка на соответствие критерию Стьюдента

disp (strcat(num2str(i)));

bn(i)=0;    %Обнуление незначимых коэффициентов

end

end

disp ('Предсказанные результаты:');

yp=b0+xmat*(b')   %Результат, полученный по линейному уравнению

disp ('Проверка адекватности');

sd = mean(yd)   %Средняя дисперсия

Dad=0;

for i=1:length(ys)

Dad=Dad+((ys(i) - yp(i))^2)/(length(ys)-5);   %Вычисление дисперсии неадекватности

end

Dad

%Dad=sum((ys(i) - yp(i))^2)/(length(ys)-5)

if (Dad<sd)

disp('Адекватно...');

else

Ff=Dad/sd;

disp('Не адекватно...');

end

disp('Неполноквадратичная регрессия-----------------------------------');

b5 =sum (prod ([ xmat(:,1)'; xmat(:,2)'; ys ]))/length(ys);

b6 =sum (prod ([ xmat(:,1)'; xmat(:,3)'; ys ]))/length(ys);

b7 =sum (prod ([ xmat(:,1)'; xmat(:,4)'; ys ]))/length(ys);

b8 =sum (prod ([ xmat(:,2)'; xmat(:,3)'; ys ]))/length(ys);

b9 =sum (prod ([ xmat(:,2)'; xmat(:,4)'; ys ]))/length(ys);

b10=sum (prod ([ xmat(:,3)'; xmat(:,4)'; ys ]))/length(ys);

b11=sum (prod ([ xmat(:,1)'; xmat(:,2)'; xmat(:,3)'; ys ]))/length(ys);

b12=sum (prod ([ xmat(:,1)'; xmat(:,2)'; xmat(:,4)'; ys ]))/length(ys);

b13=sum (prod ([ xmat(:,1)'; xmat(:,3)'; xmat(:,4)'; ys ]))/length(ys);

b14=sum (prod ([ xmat(:,2)'; xmat(:,3)'; xmat(:,4)'; ys ]))/length(ys);

b15=sum (prod ([ xmat(:,1)'; xmat(:,2)'; xmat(:,3)'; xmat(:,4)';ys ]))/length(ys);

disp('Коэффициенты неполноквадратичного уравнения:');

b0

bq=[b b5 b6 b7 b8 b9 b10 b11 b12 b13 b14 b15]

disp ('Дисперсия ошибки коэффициентов bj:');

Dbj=sd/(length(ys)*3)   %Нахождение дисперсии ошибки определения bj

disp ('Коэффициенты Стьюдента:');   %Нахождение коэффициентов Стьюдента

tk=abs(bq)/sqrt(Dbj)                %для проверки на статистическую значимость

disp ('Критерий = 2.036');          %коэффициентов регрессии.

disp ('Следующие коэффициенты незначимы:');

for i=1:length(tk)

if tk(i)<2.036  %Проверка на соответствие критерию Стьюдента

disp (strcat(num2str(i),','));

bq(i)=0;    %Обнуление незначимых коэффициентов

end

end

disp ('Предсказанные результаты:');

ypq=b0+xmat*b';

for i=1:length(xmat)

ypq(i)=ypq(i)+bq(5)*xmat(i,1)*xmat(i,2)+bq(6)*xmat(i,1)*xmat(i,3)+bq(7)*xmat(i,1)*xmat(i,4)+bq(8)*xmat(i,2)*xmat(i,3)+bq(9)*xmat(i,2)*xmat(i,4)+bq(10)*xmat(i,3)*xmat(i,4)+bq(11)*xmat(i,1)*xmat(i,2)*xmat(i,3)+bq(12)*xmat(i,1)*xmat(i,2)*xmat(i,4)+bq(13)*xmat(i,1)*xmat(i,3)*xmat(i,4)+bq(14)*xmat(i,2)*xmat(i,3)*xmat(i,4)+bq(15)*xmat(i,1)*xmat(i,2)*xmat(i,3)*xmat(i,4);

end

ypq     %%Результат, полученный по неполноквадратичному уравнению

disp ('Проверка адекватности');

Dad=sum ((ys-ypq').^2)*1/(length(ys)-8) %Вычисление дисперсии неадекватности

sd

if (Dad<sd)

disp('Адекватно...');

else

disp('Не адекватно...');

end