Опубликован: 30.11.2010 | Уровень: специалист | Доступ: платный | ВУЗ: Мордовский государственный университет имени Н.П. Огарева
Лекция 8:

Введение в дисперсионный анализ

< Лекция 7 || Лекция 8: 12345 || Лекция 9 >

2. Однофакторный дисперсионный анализ с неодинаковым числом испытаний на различных уровнях

Пример 2. В соответствии с данными эксперимента, приведенными в табл. 8.5, требуется при уровне значимости 0.05 проверить нулевую гипотезу о равенстве групповых средних (числовые данные для примера 2 взяты из [6]).

Таблица 8.5.
Данные эксперимента
Номер испытания Уровни фактора F_{j}
i F_{1} F_{2} F_{3}
1

2

3

4

5

6

37

47

40

60

60

86

67

92

95

98

69

100

98

Среднее уровней 46 83 89

Программный код решения примера:

clear, clc
 
p = 3; % ЧИСЛО УРОВНЕЙ ФАКТОРА
% ЗНАЧЕНИЯ 1-ГО УРОВНЯ
F11 = [37 47 40 60];
% ЗНАЧЕНИЯ 2-ГО УРОВНЯ
F22 = [60 86 67 92 95 98];
% ЗНАЧЕНИЯ 3-ГО УРОВНЯ
F33 = [69 100 98];
% МАКСИМАЛЬНОЕ ЗНАЧЕНИЕ ЧИСЛА ИСПЫТАНИЙ ДАННЫХ УРОВНЕЙ
maxLen = max([length(F11),length(F22),length(F33)]);

if maxLen - length(F11) > 0
    F1 = [F11,zeros(1,maxLen - length(F11))];
else
    F1 = F11;
end
if maxLen - length(F22) > 0
    F2 = [F22,zeros(1,maxLen - length(F22))];
else
    F2 = F22;
end
if maxLen - length(F33) > 0
    F3 = [F33,zeros(1,maxLen - length(F33))];
else
    F3 = F33;
end

fprintf('\n ДИСПЕРСИОННЫЙ АНАЛИЗ С НЕОДИНАКОВЫМ ЧИСЛОМ ИСПЫТАНИЙ\n')
disp('======================================================')
fprintf('\t\t Таблица данных эксперимента\n')
disp('----------------------------------------------')
fprintf('\t Номер испытания |\t Уровни фактора Fj\t|\n')
disp('----------------------------------------------')
fprintf('%*si%*s|\tF1\t|\tF2\t|\tF3\t|\n', 8, '', 12, '')
disp('----------------------------------------------')
for J = 1:6
    if ~F1(J) & ~F2(J) & ~F3(J)
fprintf('\t\t%d\t\t\t |\t%s\t|\t%s\t|\t%s\t|\n',J,'-','-','-')

elseif ~F1(J) & ~F2(J)
fprintf('\t\t%d\t\t\t |\t%s\t|\t%s\t|\t%g\t|\n',J,'-','-',F3(J))

elseif ~F1(J) & ~F3(J)
 fprintf('\t\t%d\t\t\t |\t%s\t|\t%g\t|\t%s\t|\n',J,'-',F2(J),'-')

elseif ~F3(J) & F1(J) & F2(J)
fprintf('\t\t%d\t\t\t |\t%g\t|\t%g\t|\t%s\t|\n',J,F1(J),F2(J),'-')
    
else
fprintf('\t\t%d%*s|\t%g\t|\t%g\t|\t%g\t|\n',J,12,'',F1(J),F2(J),F3(J))
   end
end
disp('----------------------------------------------')
fprintf('Среднее уровней Xгрj |\t%g\t|\t%g\t|\t%g\t|\n',mean(F11),mean(F22),mean(F33))
disp('----------------------------------------------')
fprintf('\t\t Число испытаний:\n\t\t на уровне F1: %d\n\t\t на уровне F2: %d\n\t\t на уровне F3: %d\n ', 
 length(F11),length(F22),length(F33))
fprintf('\t Общее число испытаний: %d\n',length(F11)+length(F22)+length(F33))
disp('=====================================================================')
fprintf('\t\t\t Таблица расчетных данных эксперимента\n')
disp('   ------------------------------------------------------------------')
fprintf('\t Номер испытания |%*sУровни фактора Fj\t\t\t\t|\n', 16, '')
disp('   ------------------------------------------------------------------')
fprintf('%*si%*s|\t\t F1\t\t|\t\t F2\t\t|\t\t F3\t\t|\n', 8,'', 12,'')
fprintf('%*s ------------------------------------------------\n', 20, '')
fprintf('%*s | xi1 | xi1_2\t| xi2\t| xi2_2 | xi3 | xi3_2\t|\n', 20, '')
disp('   ------------------------------------------------------------------')
for J = 1 : maxLen
    if ~F1(J) & ~F2(J) & ~F3(J)
    fprintf('\t\t%d\t|\t\t |\t%s\t|\t%s\t|\t%s\t|\t%s\t|\t%s\t|\t%s\t|\n',J,'-','-','-','-','-','-')
elseif ~F1(J) & ~F2(J)
    fprintf('\t\t%d\t\t\t |\t%s\t|\t%s\t|\t%s\t|\t%s\t|\t%g\t|%g\t|\n',J,'-','-',F3(J),F3(J)^2)
elseif ~F1(J) & ~F3(J)
    fprintf('\t\t%d\t\t\t |\t%s\t|\t%s\t|\t%g\t| %g\t|\t%s\t|\t%s\t|\n',J,'-','-',F2(J),F2(J)^2,'-','-')
elseif ~F3(J) & F1(J) & F2(J)
    fprintf('\t\t%d%*s|\t%g\t| %g\t|\t%g\t| %g\t|\t%s\t|\t%s\t|\n',J,12,'',F1(J),F1(J)^2,F2(J),F2(J)^2,'-','-')
    else
    fprintf('\t\t%d%*s|\t%g\t| %g\t|\t%g\t| %g\t|\t%g\t| %g\t|\n',J,12,'',F1(J),F1(J)^2,F2(J),F2(J)^2,F3(J),F3(J)^2)
end
end
disp('   ------------------------------------------------------------------')
fprintf('\tСумма квадратов  |\t\t| %g\t| %s\t\t| %g\t| %s\t\t| %g\t|\n ',sum(F11.^2),'',sum(F22.^2),'',sum(F33.^2))
disp('   -----------------------------------------------------------------')
fprintf('\tСумма уровней\t |%g\t| %s\t\t| %g\t| %s\t\t| %g\t| %s\t\t|\n ',sum(F11),'',sum(F22),'',sum(F33),'')
disp('   -----------------------------------------------------------------')
fprintf('\tКвадрат суммы \t |%g\t| %s\t\t|%g\t| %s\t\t|%g\t| %s\t\t|\n',(sum(F11))^2,'',(sum(F22))^2,'',(sum(F33))^2,'')
fprintf('\t уровней\t\t |\t\t|\t\t|\t\t|\t\t|\t\t|\t\t|\n')
disp('=====================================================================')
disp('   ------------------------------------------------------------------')
Q = sum(F11.^2) + sum(F22.^2) + sum(F33.^2);
T = sum(F11) + sum(F22) + sum(F33);
n = length(F11) + length(F22) + length(F33);
Sob = Q - T^2/n;
fprintf('\t Общая сумма квадратов отклонений: Sобщ = %g\n',Sob)
disp('   ------------------------------------------------------------------')
Sf = (sum(F11))^2/length(F11) + (sum(F22))^2/length(F22) + (sum(F33))^2/length(F33) - T^2/n;
fprintf('\t Факторная сумма квадратов отклонений: Sфакт = %g\n',Sf)
disp('   ------------------------------------------------------------------')
Sost = Sob - Sf;
fprintf('\t Остаточная сумма квадратов отклонений: Sост = %g\n',Sost)
disp('   ------------------------------------------------------------------')
s2f = Sf/(p - 1);
fprintf('\t Факторная дисперсия: Dфакт = %g\n',s2f)
disp('   ------------------------------------------------------------------')
s2oc = Sost/(n - p);
fprintf('\t Остаточная дисперсия: Dост = %g\n',s2oc)
disp('   --------------------------------------------------------------------------------------')
Fpac = s2f/s2oc;
fprintf('\t Расчетное значение критерия Фишера: Fpac = %g\n',Fpac)
fprintf('\t Число степеней свободы: v1 = %d\t v2 = %d\n',p -1,n - p)
a = 0.05;
fprintf('\t Уровень значимости a = %g\n',a)
v1 = p - 1;
v2 = n - p;

fprintf('\t Используется функция finv для расчета критического значения критерия Фишера\n');
Fkp = finv(1 - a,v1,v2);

fprintf('\t Критическое значение критерия Фишера на уровне значимости a = %g: Fkp = %g\n', a,Fkp)
disp('   --------------------------------------------------------------------------------------')
if Fpac > Fkp
fprintf('\t Fpac > Fkp (%g > %g)\n', Fpac, Fkp)
else
fprintf('\t Fpac < Fkp (%g < %g)\n', Fpac, Fkp)
end
disp('  -----------------------------------------------------------------------------------------')
fprintf('\n\t РЕЗУЛЬТАТЫ ДИСПЕРСИОННОГО АНАЛИЗА:\n')
if Fpac > Fkp
fprintf('\t Нулевая гипотеза о равенстве групповых средних отвергается\n');
 
    else
fprintf('\t Нулевая гипотеза о равенстве групповых средних принимается\n');
 
end

Часть результатов выполнения программы

------------------------------------------------------------------
	 Общая сумма квадратов отклонений: Sобщ = 6444
 -----------------------------------------------------------------
	 Факторная сумма квадратов отклонений: Sфакт = 4284
 -----------------------------------------------------------------
	 Остаточная сумма квадратов отклонений: Sост = 2160
 -----------------------------------------------------------------
	 Факторная дисперсия: Dфакт = 2142
 -----------------------------------------------------------------
	 Остаточная дисперсия: Dост = 216
 ----------------------------------------------------------------
	 Расчетное значение критерия Фишера: Fpac = 9.91667
	 Число степеней свободы: v1 = 2	 v2 = 10
	 Уровень значимости a = 0.05
	 Используется функция finv для расчета критического значения критерия Фишера
	 Критическое значение критерия Фишера на уровне значимости
      a = 0.05: Fkp = 4.10282
 ---------------------------------------------------------------
	 Fpac > Fkp (9.91667 > 4.10282)
 ----------------------------------------------------------------
	 РЕЗУЛЬТАТЫ ДИСПЕРСИОННОГО АНАЛИЗА
	 Нулевая гипотеза о равенстве групповых средних отвергается

Задание 2

В соответствии с номером компьютера (1, 2, 3, ...) напишите программу по дисперсионному анализу с неодинаковым числом испытаний на различных уровнях одного фактора.

Компьютер № 1: считая, что имеются 3 уровня одного фактора, проверьте нулевую гипотезу о равенстве групповых средних при испытаниях, получаемых при обращении к встроенным функциям MATLAB:

n1=11*abs([[randn(4,1);zeros(2,1)],[randn(3,1);zeros(3,1)],randn(6,1)])

Компьютер № 2: считая, что имеются 3 уровня одного фактора, проверьте нулевую гипотезу о равенстве групповых средних при испытаниях, получаемых при обращении к встроенным функциям MATLAB:

n2=12*abs([[randn(4,1);zeros(2,1)],[randn(5,1);zeros(1,1)],randn(6,1)])

Компьютер № 3: считая, что имеются 3 уровня одного фактора, проверьте нулевую гипотезу о равенстве групповых средних при испытаниях, получаемых при обращении к встроенным функциям MATLAB:

n3=13*abs([[randn(2,1);zeros(4,1)],[randn(5,1);zeros(1,1)],randn(6,1)])

Компьютер № 4: считая, что имеются 4 уровня одного фактора, проверьте нулевую гипотезу о равенстве групповых средних при испытаниях, получаемых при обращении к встроенным функциям MATLAB:

n4=14*abs([[randn(3,1);zeros(3,1)],[randn(5,1);zeros(1,1)],randn(6,1),[randn(2,1);zeros(4,1)]])

Компьютер № 5: считая, что имеются 4 уровня одного фактора, проверьте нулевую гипотезу о равенстве групповых средних при испытаниях, получаемых при обращении к встроенным функциям MATLAB:

n5=15*abs([[randn(2,1);zeros(3,1)],[randn(4,1);zeros(1,1)],randn(5,1),[randn(3,1);zeros(2,1)]])

Компьютер № 6: считая, что имеются 4 уровня одного фактора, проверьте нулевую гипотезу о равенстве групповых средних при испытаниях, получаемых при обращении к встроенным функциям MATLAB:

n6=16*abs([[randn(2,1);zeros(4,1)],[randn(4,1);zeros(2,1)],randn(6,1),[randn(3,1);zeros(3,1)]])

Компьютер № 7: считая, что имеются 4 уровня одного фактора, проверьте нулевую гипотезу о равенстве групповых средних при испытаниях, получаемых при обращении к встроенным функциям MATLAB:

n7=17*abs([[randn(2,1);zeros(5,1)],[randn(4,1);zeros(3,1)],randn(7,1),[randn(3,1);zeros(4,1)]])

Компьютер № 8: считая, что имеются 4 уровня одного фактора, проверьте нулевую гипотезу о равенстве групповых средних при испытаниях, получаемых при обращении к встроенным функциям MATLAB:

n8=18*abs([[randn(3,1);zeros(5,1)],[randn(4,1);zeros(4,1)],randn(8,1),[randn(3,1);zeros(5,1)]])

Компьютер № 9: считая, что имеются 4 уровня одного фактора, проверьте нулевую гипотезу о равенстве групповых средних при испытаниях, получаемых при обращении к встроенным функциям MATLAB:

n9=9*abs([[randn(2,1);zeros(7,1)],[randn(5,1);zeros(4,1)],randn(9,1),[randn(3,1);zeros(6,1)]])

Компьютер № 10: считая, что имеются 4 уровня одного фактора, проверьте нулевую гипотезу о равенстве групповых средних при испытаниях, получаемых при обращении к встроенным функциям MATLAB:

n10=8*abs([[randn(3,1);zeros(7,1)],[randn(4,1);zeros(6,1)],randn(10,1),[randn(3,1);zeros(7,1)]])

< Лекция 7 || Лекция 8: 12345 || Лекция 9 >
Мария Ястребинская
Мария Ястребинская

Добрый день. Я приступила сегодня к самостоятельному изучению курса "Моделирование систем". Хочу понять - необходимо ли отсылать мои решения практических заданий на сайт, (и если да - то где найти волшебную кнопку "Загрузить...") или практические задания остаются полностью на моей совести? (никто не проверяет, и отчётности по ним я предоставлять не обязана?)

P.S.: тьютора я не брала

алена зянтерекова
алена зянтерекова
Дмитрий Степаненко
Дмитрий Степаненко
Россия
Маржан Мукынова
Маржан Мукынова
Россия, Новосибирск