АНОВА со случайными эффектами

Этот пример показывает, как использовать anovan, чтобы соответствовать моделям, где уровни фактора представляют случайный выбор от большего (бесконечного) набора возможных уровней.

В обычной модели АНОВОЙ каждая группирующая переменная представляет фиксированный фактор. Уровни того фактора являются фиксированным множеством значений. Цель состоит в том, чтобы определить, приводят ли различные факторные уровни к различным значениям ответа.

Настройка модели

Загрузите выборочные данные.

load mileage

Функция anova2 работает только со сбалансированными данными, и это выводит значения группирующих переменных от количеств строки и столбца входной матрицы. Функция anovan, с другой стороны, требует, чтобы вы явным образом создали векторы значений группирующей переменной. Создайте эти векторы следующим образом.

Создайте массив, указывающий на фабрику для каждого значения в пробеге. Этот массив 1 для первого столбца, 2 для второго, и 3 для третьего.

factory  = repmat(1:3,6,1);

Создайте массив, указывающий на модель автомобиля для каждого значения пробега. Этот массив 1 для первых трех строк пробега, и 2 для остающихся трех строк.

carmod = [ones(3,3); 2*ones(3,3)];

Превратите эти матрицы в векторы и отобразите их.

mileage = mileage(:);
factory = factory(:);
carmod = carmod(:);
[mileage factory carmod]
ans = 18×3

   33.3000    1.0000    1.0000
   33.4000    1.0000    1.0000
   32.9000    1.0000    1.0000
   32.6000    1.0000    2.0000
   32.5000    1.0000    2.0000
   33.0000    1.0000    2.0000
   34.5000    2.0000    1.0000
   34.8000    2.0000    1.0000
   33.8000    2.0000    1.0000
   33.4000    2.0000    2.0000
      ⋮

Соответствуйте случайной модели эффектов

Предположим, что вы изучаете несколько фабрик, но вы хотите информацию о том, что произошло бы, если вы создаете эти те же автомобильные модели на различной фабрике, или та, которую вы уже имеете или другой, что вы можете создать. Чтобы получить эту информацию, соответствуйте модели дисперсионного анализа, задавая модель, которая включает период взаимодействия и что фактор фабрики случаен.

[pvals,tbl,stats] = anovan(mileage, {factory carmod}, ... 
'model',2, 'random',1,'varnames',{'Factory' 'Car Model'});

В фиксированной версии эффектов этой подгонки, которую вы получаете путем исключения входных параметров 'random',1 в предыдущем коде, эффект модели автомобиля является значительным с p-значением 0,0039. Но в этом примере, который учитывает случайное изменение эффекта переменной 'Car Model' от одной фабрики до другого, эффект является все еще значительным, но с более высоким p-значением 0,0136.

F-статистика для моделей со случайными эффектами

F-статистическая-величина в модели, имеющей случайные эффекты, задана по-другому, чем в модели, имеющей все фиксированные эффекты. В фиксированной модели эффектов вы вычисляете F-статистическую-величину для любого термина путем взятия отношения среднего квадратичного для того термина со средним квадратичным для ошибки. В случайной модели эффектов, однако, некоторые F-статистические-данные используют различное среднее квадратичное в знаменателе.

В примере, описанном в Настроенном Модель, эффект переменной 'Factory' мог отличаться через модели автомобилей. В этом случае среднее квадратичное взаимодействия занимает место ошибочного среднего квадратичного в F-статистической-величине.

Найдите F-статистическую-величину.

F = 26.6756 / 0.02
F = 1.3338e+03

Степени свободы для статистической величины являются степенями свободы для числителя (2) и знаменатель (2) средние квадратичные.

Найдите p-значение.

pval = 1 - fcdf(F,2,2)
pval = 7.4919e-04

Со случайными эффектами ожидаемое значение каждого среднего квадратичного зависит не только от отклонения остаточного члена, но также и на отклонениях, внесенных случайными эффектами. Вы видите эти зависимости путем записи ожидаемых значений как линейных комбинаций вкладов из различных образцовых условий.

Найдите коэффициенты этих линейных комбинаций.

stats.ems
ans = 4×4

    6.0000    0.0000    3.0000    1.0000
    0.0000    9.0000    3.0000    1.0000
    0.0000    0.0000    3.0000    1.0000
         0         0         0    1.0000

Это возвращает поле ems структуры stats.

Отобразите текстовые представления линейных комбинаций.

stats.txtems
ans = 4x1 cell array
    {'6*V(Factory)+3*V(Factory*Car Model)+V(Error)'  }
    {'9*Q(Car Model)+3*V(Factory*Car Model)+V(Error)'}
    {'3*V(Factory*Car Model)+V(Error)'               }
    {'V(Error)'                                      }

Ожидаемое значение для среднего квадратичного из-за модели автомобиля (второй срок) включает вклады от квадратичной функции эффектов модели автомобиля, плюс три раза отклонение эффекта периода взаимодействия, плюс отклонение остаточного члена. Заметьте, что, если бы эффекты модели автомобиля были всем нулем, выражение уменьшало бы до ожидаемого среднего квадратичного для третьего срока (период взаимодействия). Именно поэтому F-статистическая-величина для эффекта модели автомобиля использует среднее квадратичное взаимодействия в знаменателе.

В некоторых случаях нет никакого одного термина, ожидаемое значение которого совпадает с тем, требуемым для знаменателя F-статистической-величины. В этом случае знаменатель является линейной комбинацией средних квадратичных. Структура статистики содержит поля, дающие определения знаменателей для каждой F-статистической-величины. Поле txtdenom, stats.txtdenom, содержит текстовое представление, и поле denom содержит матрицу, которая задает линейную комбинацию отклонений членов в модели. Для сбалансированных моделей как этот матрица denom, stats.denom, содержит нули и единицы, потому что знаменатель является только средним квадратичным одного термина.

Отобразите поле txtdenom.

stats.txtdenom
ans = 3x1 cell array
    {'MS(Factory*Car Model)'}
    {'MS(Factory*Car Model)'}
    {'MS(Error)'            }

Отобразите поле denom.

stats.denom
ans = 3×3

    0.0000    1.0000         0
    0.0000    1.0000   -0.0000
   -0.0000    0.0000    1.0000

Компоненты отклонения

Для модели, описанной в Настроенном Модель, считайте пробег для конкретного автомобиля конкретной модели сделанным на случайной фабрике. Отклонение того автомобиля является суммой компонентов или вкладами, один из каждого из случайных условий.

Отобразите имена случайных условий.

stats.rtnames
ans = 3x1 cell array
    {'Factory'          }
    {'Factory*Car Model'}
    {'Error'            }

Вы не знаете отклонений, но можно оценить их от данных. Вспомните, что поле ems структуры stats выражает ожидаемое значение среднего квадратичного каждого термина как линейная комбинация неизвестных отклонений для случайных условий и неизвестных квадратичных форм для фиксированных условий. Если вы берете ожидаемые среднеквадратические выражения для случайных условий и приравниваете те ожидаемые значения к вычисленным средним квадратичным, вы получаете систему уравнений, которую можно решить для неизвестных отклонений. Эти решения являются оценками компонента отклонения.

Отобразите оценку компонента отклонения для каждого термина.

stats.varest
ans = 3×1

    4.4426
   -0.0313
    0.1139

При некоторых условиях изменчивость, приписанная термину, является необычно низкой, и что оценка компонента отклонения термина отрицательна. В тех случаях распространено обнулить оценку, которую вы можете сделать, например, чтобы создать гистограмму компонентов.

Создайте гистограмму компонентов.

bar(max(0,stats.varest))

gca.xtick = 1:3;
gca.xticklabel = stats.rtnames;

Можно также вычислить доверительные границы для оценки отклонения. Функция anovan делает это вычислительными доверительными границами для отклонения ожидало средних квадратичных и нахождение нижних и верхних пределов каждого компонента отклонения, содержащего все эти границы. Эта процедура приводит к набору границ, который консервативен для сбалансированных данных. (Таким образом, 95% доверительных границ будут иметь вероятность по крайней мере 95% содержания истинных отклонений, если количество наблюдений для каждой комбинации группирующих переменных будет тем же самым.) Для несбалансированных данных, это приближения, которые, как гарантируют, не будут консервативны.

Отобразите оценки отклонения и пределы достоверности для оценок отклонения каждого компонента.

[{'Term' 'Estimate' 'Lower' 'Upper'};
 stats.rtnames, num2cell([stats.varest stats.varci])]
ans = 4x4 cell array
    {'Term'             }    {'Estimate'}    {'Lower' }    {'Upper'   }
    {'Factory'          }    {[  4.4426]}    {[1.0736]}    {[175.6038]}
    {'Factory*Car Model'}    {[ -0.0313]}    {[   NaN]}    {[     NaN]}
    {'Error'            }    {[  0.1139]}    {[0.0586]}    {[  0.3103]}