coefTest

Класс: LinearMixedModel

Тест гипотезы на фиксированных и случайных эффектах линейной модели смешанных эффектов

Описание

пример

pVal = coefTest(lme) возвращает p -value для F -test, что все коэффициенты с фиксированными эффектами, кроме точки пересечения, равны 0.

пример

pVal = coefTest(lme,H) возвращает p -value для F -test на коэффициентах с фиксированными эффектами линейной модели смешанных эффектов lme, используя контрастную матрицу H. Он проверяет нулевую гипотезу, которая H0: H β = 0, где β является вектором с фиксированными эффектами.

пример

pVal = coefTest(lme,H,C) возвращает p -value для F -test на коэффициентах с фиксированными эффектами модели линейных смешанных эффектов lme, используя контрастную матрицу H. Он проверяет нулевую гипотезу, которая H0: H β = C, где β является вектором с фиксированными эффектами.

пример

pVal = coefTest(lme,H,C,Name,Value) возвращает p -value для F -test на коэффициентах фиксированных - и/или случайных эффектов модели линейных смешанных эффектов lme, с дополнительными опциями, заданными одним или несколькими аргументами пары "имя-значение". Для примера, 'REContrast',K говорит coefTest чтобы проверить нулевую гипотезу, которая H0: H β + KB = C, где β является вектором с фиксированными эффектами, а B является вектором со случайными эффектами.

пример

[pVal,F,DF1,DF2] = coefTest(___) также возвращает F -statistic F, и числитель и знаменатель степеней свободы для F, соответственно DF1 и DF2.

Входные параметры

расширить все

Линейная модель смешанных эффектов, заданная как LinearMixedModel объект, созданный с использованием fitlme или fitlmematrix.

Фиксированные эффекты контрастируют, заданные как m -by p матрица, где p - количество коэффициентов с фиксированными эффектами в lme. Каждая строка H представляет один контраст. Столбцы H (слева направо) соответствуют строкам вектора p -by-1 с фиксированными эффектами beta (сверху вниз), возвращаемый fixedEffects способ.

Типы данных: single | double

Гипотезированное значение для проверки нулевой гипотезы H*beta = C, заданный как m -by-1 матрица. Здесь, beta - вектор оценок фиксированных эффектов, возвращаемый fixedEffects способ.

Типы данных: single | double

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Метод для вычисления приблизительных степеней свободы знаменателя для F -test, заданный как разделенная разделенными запятой парами, состоящая из 'DFMethod' и одно из следующих.

'residual'По умолчанию. Степени свободы приняты постоянными и равными n - p, где n - количество наблюдений и p - количество фиксированных эффектов.
'satterthwaite'Саттертвейское приближение.
'none'Все степени свободы установлены в бесконечность.

Например, можно задать приближение Саттертвейта следующим образом.

Пример: 'DFMethod','satterthwaite'

Случайные эффекты контрастируют, заданные как разделенная разделенными запятой парами, состоящая из 'REContrast' и матрицу m -by q K, где q количество параметров случайных эффектов в lme. Столбцы K (слева направо) соответствуют строкам наилучшего линейного объективного вектора предиктора со случайными эффектами B (сверху вниз), возвращаемый randomEffects способ.

Типы данных: single | double

Выходные аргументы

расширить все

p -value для F -test на коэффициентах фиксированных и/или случайных эффектов линейной модели смешанных эффектов lme, возвращается как скалярное значение.

F -статистический, возвращенный как скалярное значение.

Числитель степеней свободы для F, возвращается как скалярное значение.

  • Если Вы проверяете нулевую гипотезу H0: <reservedrangesplaceholder5> <reservedrangesplaceholder4> = 0, или H0: <reservedrangesplaceholder3> <reservedrangesplaceholder2> = C, тогда DF1 равно количеству линейно независимых строк в H.

  • Если Вы проверяете нулевую гипотезу H0: <reservedrangesplaceholder4> <reservedrangesplaceholder3> + KB = C, тогда DF1 равно количеству линейно независимых строк в [H,K].

Знаменательные степени свободы для F, возвращается как скалярное значение. Значение DF2 зависит от выбранной опции DFMethod.

Примеры

расширить все

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

load('shift.mat')

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

Shift и Operator являются номинальными переменными.

shift.Shift = nominal(shift.Shift);
shift.Operator = nominal(shift.Operator);

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

lme = fitlme(shift,'QCDev ~ Shift + (1|Operator)')
lme = 
Linear mixed-effects model fit by ML

Model information:
    Number of observations              15
    Fixed effects coefficients           3
    Random effects coefficients          5
    Covariance parameters                2

Formula:
    QCDev ~ 1 + Shift + (1 | Operator)

Model fit statistics:
    AIC       BIC       LogLikelihood    Deviance
    59.012    62.552    -24.506          49.012  

Fixed effects coefficients (95% CIs):
    Name                     Estimate    SE         tStat       DF    pValue   
    {'(Intercept)'  }         3.1196     0.88681      3.5178    12    0.0042407
    {'Shift_Morning'}        -0.3868     0.48344    -0.80009    12      0.43921
    {'Shift_Night'  }         1.9856     0.48344      4.1072    12    0.0014535


    Lower      Upper  
     1.1874     5.0518
    -1.4401    0.66653
    0.93227     3.0389

Random effects covariance parameters (95% CIs):
Group: Operator (5 Levels)
    Name1                  Name2                  Type           Estimate
    {'(Intercept)'}        {'(Intercept)'}        {'std'}        1.8297  


    Lower      Upper 
    0.94915    3.5272

Group: Error
    Name               Estimate    Lower      Upper 
    {'Res Std'}        0.76439     0.49315    1.1848

Проверяйте, все ли коэффициенты с фиксированными эффектами, кроме точки пересечения, равны 0.

pVal = coefTest(lme)
pVal = 7.5956e-04

Маленькое p-значение указывает, что не все коэффициенты с фиксированными эффектами равны 0.

Проверьте значимость Shift термин, использующий контрастную матрицу.

H = [0 1 0; 0 0 1];
pVal = coefTest(lme,H)
pVal = 7.5956e-04

Проверьте значимость Shift термин, использующий anova способ.

anova(lme)
ans = 
    ANOVA marginal tests: DFMethod = 'Residual'

    Term                   FStat     DF1    DF2    pValue    
    {'(Intercept)'}        12.375    1      12      0.0042407
    {'Shift'      }        13.864    2      12     0.00075956

p-значение для Shift, 0.00075956, совпадает с p- значение предыдущего теста гипотезы.

Проверяйте, есть ли различие между вечерними и утренними сдвигами.

pVal = coefTest(lme,[0 1 -1])
pVal = 3.6147e-04

Этот маленький p-значение указывает, что эффективность операторов отличается в утренние и вечерние сдвиги.

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

load('weight.mat')

weight содержит данные продольного исследования, где 20 субъектов случайным образом назначены для 4 программ упражнений, и их потеря веса регистрируется в течение шести 2-недельных периодов времени. Это моделируемые данные.

Сохраните данные в таблице. Определите Subject и Program как категориальные переменные.

tbl = table(InitialWeight,Program,Subject,Week,y);
tbl.Subject = nominal(tbl.Subject);
tbl.Program = nominal(tbl.Program);

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

lme = fitlme(tbl,'y ~ InitialWeight + Program*Week + (Week|Subject)')
lme = 
Linear mixed-effects model fit by ML

Model information:
    Number of observations             120
    Fixed effects coefficients           9
    Random effects coefficients         40
    Covariance parameters                4

Formula:
    y ~ 1 + InitialWeight + Program*Week + (1 + Week | Subject)

Model fit statistics:
    AIC        BIC       LogLikelihood    Deviance
    -22.981    13.257    24.49            -48.981 

Fixed effects coefficients (95% CIs):
    Name                      Estimate     SE           tStat       DF 
    {'(Intercept)'   }          0.66105      0.25892      2.5531    111
    {'InitialWeight' }        0.0031879    0.0013814      2.3078    111
    {'Program_B'     }          0.36079      0.13139       2.746    111
    {'Program_C'     }        -0.033263      0.13117    -0.25358    111
    {'Program_D'     }          0.11317      0.13132     0.86175    111
    {'Week'          }           0.1732     0.067454      2.5677    111
    {'Program_B:Week'}         0.038771     0.095394     0.40644    111
    {'Program_C:Week'}         0.030543     0.095394     0.32018    111
    {'Program_D:Week'}         0.033114     0.095394     0.34713    111


    pValue       Lower         Upper    
     0.012034       0.14798       1.1741
     0.022863    0.00045067    0.0059252
    0.0070394       0.10044      0.62113
      0.80029      -0.29319      0.22666
      0.39068      -0.14706       0.3734
     0.011567      0.039536      0.30686
      0.68521      -0.15026       0.2278
      0.74944      -0.15849      0.21957
      0.72915      -0.15592      0.22214

Random effects covariance parameters (95% CIs):
Group: Subject (20 Levels)
    Name1                  Name2                  Type            Estimate
    {'(Intercept)'}        {'(Intercept)'}        {'std' }        0.18407 
    {'Week'       }        {'(Intercept)'}        {'corr'}        0.66841 
    {'Week'       }        {'Week'       }        {'std' }        0.15033 


    Lower      Upper  
    0.12281    0.27587
    0.21076    0.88573
    0.11004    0.20537

Group: Error
    Name               Estimate    Lower       Upper  
    {'Res Std'}        0.10261     0.087882    0.11981

Тест на значимость взаимодействия между Program и Week.

H = [0 0 0 0 0 0 1 0 0; 
     0 0 0 0 0 0 0 1 0;
     0 0 0 0 0 0 0 0 1];
pVal = coefTest(lme,H)
pVal = 0.9775

Верхний уровень p-значение указывает, что взаимодействие между Program и Week не является статистически значимым.

Теперь проверьте, все ли коэффициенты с Program 0.

H = [0 0 1 0 0 0 0 0 0;
     0 0 0 1 0 0 0 0 0;
     0 0 0 0 1 0 0 0 0;
     0 0 0 0 0 0 1 0 0; 
     0 0 0 0 0 0 0 1 0;
     0 0 0 0 0 0 0 0 1];
C = [0;0;0;0;0;0];
pVal = coefTest(lme,H,C)
pVal = 0.0274

pЗначение 0.0274 указывает, что не все коэффициенты, связанные с Program являются нулем.

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

load flu

The flu массив набора данных имеет Date переменная и 10 переменных, содержащих предполагаемые показатели заболеваемости гриппом (в 9 различных областях, по оценкам поиска Google ®, плюс общенациональная оценка CDC ).

Чтобы соответствовать модели линейно-смешанных эффектов, ваши данные должны быть в правильно отформатированном массиве набора данных. Чтобы подогнать линейную модель смешанных эффектов с частотой гриппа в качестве ответов и областью в качестве переменной, объедините девять столбцов, соответствующих областям, в массив. Новый массив набора данных, flu2, должна иметь переменную отклика, FluRate, номинальная переменная, Region, что показывает, из какой области каждая оценка, и сгруппированную переменную Date.

flu2 = stack(flu,2:10,'NewDataVarName','FluRate',...
    'IndVarName','Region');
flu2.Date = nominal(flu2.Date);

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

lme = fitlme(flu2,'FluRate ~ 1 + Region + (1|Date)')
lme = 
Linear mixed-effects model fit by ML

Model information:
    Number of observations             468
    Fixed effects coefficients           9
    Random effects coefficients         52
    Covariance parameters                2

Formula:
    FluRate ~ 1 + Region + (1 | Date)

Model fit statistics:
    AIC       BIC       LogLikelihood    Deviance
    318.71    364.35    -148.36          296.71  

Fixed effects coefficients (95% CIs):
    Name                        Estimate    SE          tStat      DF 
    {'(Intercept)'     }          1.2233    0.096678     12.654    459
    {'Region_MidAtl'   }        0.010192    0.052221    0.19518    459
    {'Region_ENCentral'}        0.051923    0.052221     0.9943    459
    {'Region_WNCentral'}         0.23687    0.052221     4.5359    459
    {'Region_SAtl'     }        0.075481    0.052221     1.4454    459
    {'Region_ESCentral'}         0.33917    0.052221      6.495    459
    {'Region_WSCentral'}           0.069    0.052221     1.3213    459
    {'Region_Mtn'      }        0.046673    0.052221    0.89377    459
    {'Region_Pac'      }        -0.16013    0.052221    -3.0665    459


    pValue        Lower        Upper    
     1.085e-31       1.0334       1.4133
       0.84534    -0.092429      0.11281
        0.3206    -0.050698      0.15454
    7.3324e-06      0.13424      0.33949
       0.14902     -0.02714       0.1781
    2.1623e-10      0.23655      0.44179
       0.18705    -0.033621      0.17162
       0.37191    -0.055948      0.14929
     0.0022936     -0.26276    -0.057514

Random effects covariance parameters (95% CIs):
Group: Date (52 Levels)
    Name1                  Name2                  Type           Estimate
    {'(Intercept)'}        {'(Intercept)'}        {'std'}        0.6443  


    Lower     Upper  
    0.5297    0.78368

Group: Error
    Name               Estimate    Lower      Upper
    {'Res Std'}        0.26627     0.24878    0.285

Протестируйте гипотезу о том, что срок случайных эффектов для недели 10/9/2005 равен нулю.

[~,~,STATS] = randomEffects(lme); % Compute the random-effects statistics (STATS)
STATS.Level = nominal(STATS.Level);
K = zeros(length(STATS),1);
K(STATS.Level == '10/9/2005') = 1;
pVal = coefTest(lme,[0 0 0 0 0 0 0 0 0],0,'REContrast',K')
pVal = 0.1692

Обновите модель на этот раз со случайной точкой пересечения и наклоном.

lme = fitlme(flu2,'FluRate ~ 1 + Region + (1 + Region|Date)');

Проверьте гипотезу, что объединенный коэффициент области WNCentral для недели 10/9/2005 равен нулю.

[~,~,STATS] = randomEffects(lme); STATS.Level = nominal(STATS.Level);
K = zeros(length(STATS),1);
K(STATS.Level == '10/9/2005' & flu2.Region == 'WNCentral') = 1;
pVal = coefTest(lme,[0 0 0 1 0 0 0 0 0],0,'REContrast',K')
pVal = 9.4676e-13

Также верните F-статистическая со степенями свободы числителя и знаменателя.

[pVal,F,DF1,DF2] = coefTest(lme,[0 0 0 1 0 0 0 0 0],0,'REContrast',K')
pVal = 9.4676e-13
F = 53.9485
DF1 = 1
DF2 = 459

Повторите тест, используя приближение Саттертвейта для знаменательных степеней свободы.

[pVal,F,DF1,DF2] = coefTest(lme,[0 0 0 1 0 0 0 0 0],0,'REContrast',K',...
			'DFMethod','satterthwaite')
pVal = NaN
F = 53.9485
DF1 = 1
DF2 = 0

См. также

| |