Дисперсионный Анализ со случайными эффектами

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

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

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

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

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
    {'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
    {'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
    {'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=4×4 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]}