compare

Класс: LinearMixedModel

Сравнение линейных моделей смешанных эффектов

Описание

results = compare(lme,altlme) возвращает результаты теста коэффициента правдоподобия, который сравнивает линейные модели смешанных эффектов lme и altlme. Обе модели должны использовать один и тот же вектор отклика в подгонку и lme должен быть вложен в altlme для допустимого теста теоретического коэффициента правдоподобия. Всегда вводите первую меньшую модель, а вторую большую модель.

compare проверяет следующие нулевые и альтернативные гипотезы:

H 0: Вектор наблюдаемой реакции генерируется lme.

H 1: Вектор наблюдаемой реакции генерируется моделью altlme.

Рекомендуется подгонять lme и altlme использование метода максимальной правдоподобности (ML) до сравнения моделей. Если вы используете метод ограниченной максимальной правдоподобности (REML), то обе модели должны иметь одинаковую матрицу проекта с фиксированными эффектами.

Чтобы протестировать на фиксированные эффекты, используйте compare с моделируемым тестом отношения правдоподобия при lme и altlme подгонка с использованием ML или использование fixedEffects, anova, или coefTest методы.

пример

results = compare(___,Name,Value) также возвращает результаты теста коэффициента правдоподобия, который сравнивает линейные модели смешанных эффектов lme и altlme с дополнительными опциями, заданными одним или несколькими Name,Value аргументы в виде пар.

Для примера можно проверить, вложена ли первая модель входа во вторую модель входа.

пример

[results,siminfo] = compare(lme,altlme,'NSim',nsim) возвращает результаты моделируемого теста коэффициента правдоподобия, который сравнивает линейные модели смешанных эффектов lme и altlme.

Вы можете подогнать lme и altlme использование ML или REML. Кроме того, lme не обязательно вложяться в altlme. Если вы используете метод ограниченной максимальной правдоподобности (REML), чтобы соответствовать моделям, то обе модели должны иметь одинаковую матрицу проекта с фиксированными эффектами.

пример

[results,siminfo] = compare(___,Name,Value) также возвращает результаты моделируемого теста коэффициента правдоподобия, который сравнивает линейные модели смешанных эффектов lme и altlme с дополнительными опциями, заданными одним или несколькими Name,Value аргументы в виде пар.

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

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

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

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

Альтернативная модель линейных смешанных эффектов соответствует тому же вектору отклика, но с другими спецификациями модели, заданными как LinearMixedModel объект. lme должен быть вложен в altlme, то есть lme должны быть получены из altlme путем установки некоторых параметров фиксированных значений, таких как 0. Можно создать объект линейных смешанных эффектов с помощью fitlme или fitlmematrix.

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

Пример: 'NSim',1000

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

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

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

Уровень значимости, заданный как разделенная разделенными запятой парами, состоящая из 'Alpha' и скалярное значение в области значений от 0 до 1. Для значения α доверительный уровень равен 100 * (1-α)%.

Для примера для 99% интервалов доверия можно задать уровень доверия следующим образом.

Пример: 'Alpha',0.01

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

Опции для выполнения теста моделируемого отношения правдоподобия параллельно, заданные как разделенная разделенными запятой парами, состоящая из 'Options', и структуру, созданную statset('LinearMixedModel').

Эти опции требуют Parallel Computing Toolbox™.

compare использует следующие поля.

'UseParallel'
  • False для последовательных расчетов. По умолчанию.

  • True для параллельных расчетов.

Вам нужен Parallel Computing Toolbox для параллельных расчетов.

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

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

'Streams'
  • Если 'UseSubstreams' является True, затем 'Streams' должен быть единичным потоком случайных чисел или скалярным массивам ячеек, содержащим один поток.

  • Если 'UseSubstreams' является False и

    • 'UseParallel' является False, затем 'Streams' должен быть единичным потоком случайных чисел или скалярным массивам ячеек, содержащим один поток.

    • 'UseParallel' является True, затем 'Streams' должно быть равно количеству используемых процессоров. Если параллельный пул открыт, 'Streams' - длина, совпадающая с размером параллельного пула. Если 'UseParallel' является TrueПараллельный бассейн может открыться для вас. Но с тех пор 'Streams' должно быть равно количеству используемых процессоров, лучше всего открывать пул явным образом используя parpool команда, перед вызовом compare с 'UseParallel','True' опция.

Для получения информации о параллельных статистических вычислениях в командной строке введите

help parallelstats

Типы данных: struct

Индикатор для проверки вложенности между двумя моделями, заданный как разделенная разделенными запятой парами, состоящая из 'CheckNesting' и одно из следующих.

falseПо умолчанию. Никаких проверок.
truecompare проверяет, является ли модель меньшей lme вложен в большую модель altlme.

lme должна быть вложена в альтернативную модель altlme для допустимого теста теоретического коэффициента правдоподобия. compare возвращает сообщение об ошибке, если требования к вложенности не удовлетворены.

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

Пример: 'CheckNesting',true

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

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

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

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

  • Если вы используете тест коэффициента правдоподобия, то results содержит следующие столбцы.

    ModelИмя модели
    DFСтепени свободы, то есть количество свободных параметров в модели
    AICИнформационный критерий Акайке для модели
    BICБайесовский информационный критерий для модели
    LogLikМаксимизированная журналом вероятность для модели
    LRStatСтатистика теста коэффициента правдоподобия для сравнения altlme от lme
    deltaDFDF для altlme минус DF для lme
    pValuep -значение для теста коэффициента правдоподобия
  • Если вы используете моделируемый тест коэффициента правдоподобия, то results содержит следующие столбцы.

    ModelИмя модели
    DFСтепени свободы, то есть количество свободных параметров в модели
    LogLikМаксимизированная журналом вероятность для модели
    LRStatСтатистика теста коэффициента правдоподобия для сравнения altlme от lme
    pValuep -значение для теста коэффициента правдоподобия
    LowerНижний предел интервала доверия для pValue
    UpperВерхний предел интервала доверия для pValue

Выходы симуляции, возвращенные как структура со следующими полями.

nsimНабор значений для nsim.
alphaНабор значений для 'Alpha'.
pValueSimОснованные на симуляции p -значение.
pValueSimCIДоверительный интервал для pValueSim. Первый элемент вектора является нижним пределом, а второй элемент вектора содержит верхний предел.
deltaDFКоличество свободных параметров в altlme минус количество свободных параметров в lme. DF для altlme минус DF для lme.
THOВектор моделируемой статистики теста коэффициента правдоподобия при нулевой гипотезе, что модель lme сгенерировал наблюдаемый вектор отклика y.

Примеры

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

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

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.

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

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

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

Сравните две модели. Также проверьте, lme2 ли вложен в lme.

compare(lme,altlme,'CheckNesting',true)
ans = 
    Theoretical Likelihood Ratio Test

    Model     DF    AIC        BIC        LogLik     LRStat    deltaDF    pValue
    lme       11     318.71     364.35    -148.36                               
    altlme    55    -305.51    -77.346     207.76    712.22    44         0     

Маленькое p-value 0 указывает, что модель altlme значительно лучше, чем более простая модель lme.

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

load('fertilizer.mat');

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

Сохраните данные в массиве набора данных под названием ds, в практических целях и определить Tomato, Soil, и Fertilizer как категориальные переменные.

ds = fertilizer;
ds.Tomato = nominal(ds.Tomato);
ds.Soil = nominal(ds.Soil);
ds.Fertilizer = nominal(ds.Fertilizer);

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

lmeBig = fitlme(ds,'Yield ~ Fertilizer * Tomato + (1|Soil) + (1|Soil:Tomato)');

Обновите модель после удаления термина взаимодействия Tomato:Fertilizer и термин случайных эффектов (1 | Soil).

lmeSmall = fitlme(ds,'Yield ~ Fertilizer + Tomato + (1|Soil:Tomato)');

Сравните две модели с помощью теста моделируемого коэффициента правдоподобия с 1000 повторениями. Вы должны использовать этот тест для проверки терминов как фиксированного, так и случайного эффекта. Обратите внимание, что обе модели подгоняются с помощью метода аппроксимации по умолчанию, ML. Вот почему, нет ограничения на матрицы проекта с фиксированными эффектами. Если вы используете метод ограниченной максимальной правдоподобности (REML), обе модели должны иметь идентичные матрицы проекта с фиксированными эффектами.

[table,siminfo] = compare(lmeSmall,lmeBig,'nsim',1000)
table = 
    Simulated Likelihood Ratio Test: Nsim = 1000, Alpha = 0.05

    Model       DF    AIC       BIC       LogLik     LRStat    pValue 
    lmeSmall    10    511.06       532    -245.53                     
    lmeBig      23    522.57    570.74    -238.29    14.491    0.57343


    Lower      Upper  
                      
    0.54211    0.60431

siminfo = struct with fields:
           nsim: 1000
          alpha: 0.0500
      pvalueSim: 0.5734
    pvalueSimCI: [0.5421 0.6043]
        deltaDF: 13
            TH0: [1000x1 double]

Верхний уровень p-значение предполагает, что большая модель, lme не значительно лучше, чем меньшая модель, lme2. Меньшие значения Akaike и байесовских информационных критериев для lme2 также поддержите это.

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

load carbig

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

Сначала подготовьте матрицы проекта.

X = [ones(406,1) Acceleration Horsepower];
Z = [ones(406,1) Acceleration];
Model_Year = nominal(Model_Year);
G = Model_Year;

Теперь подбирайте модель используя fitlmematrix с определенными матрицами проекта и сгруппированными переменными.

lme = fitlmematrix(X,MPG,Z,G,'FixedEffectPredictors',....
{'Intercept','Acceleration','Horsepower'},'RandomEffectPredictors',...
{{'Intercept','Acceleration'}},'RandomEffectGroups',{'Model_Year'});

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

Z = {ones(406,1),Acceleration};
G = {Model_Year,Model_Year};

lme2 = fitlmematrix(X,MPG,Z,G,'FixedEffectPredictors',....
{'Intercept','Acceleration','Horsepower'},'RandomEffectPredictors',...
{{'Intercept'},{'Acceleration'}},'RandomEffectGroups',...
{'Model_Year','Model_Year'});

Сравнение lme и lme2 использование моделируемого теста коэффициента правдоподобия.

compare(lme2,lme,'CheckNesting',true,'NSim',1000)
ans = 


    SIMULATED LIKELIHOOD RATIO TEST: NSIM = 1000, ALPHA = 0.05

    Model    DF    AIC       BIC       LogLik     LRStat    pValue      Lower   
    lme2     6     2194.5    2218.3    -1091.3                                  
    lme      7     2193.5    2221.3    -1089.7    3.0323    0.095904    0.078373


    Upper  
           
    0.11585

Высокое $p$значение указывает, что lme2 не является значительно лучшей подгонкой, чем lme.

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

load('fertilizer.mat')

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

Сохраните данные в таблице под названием tbl, и определить Tomato, Soil, и Fertilizer как категориальные переменные.

tbl = dataset2table(fertilizer);
tbl.Tomato = categorical(tbl.Tomato);
tbl.Soil = categorical(tbl.Soil);
tbl.Fertilizer = categorical(tbl.Fertilizer);

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

lme = fitlme(tbl,'Yield ~ Fertilizer * Tomato + (1|Soil) + (1|Soil:Tomato)');

Обновите модель после удаления термина взаимодействия Tomato:Fertilizer и термин случайных эффектов (1|Soil).

lme2 = fitlme(tbl,'Yield ~ Fertilizer + Tomato + (1|Soil:Tomato)');

Создайте структуру опций для LinearMixedModel.

opt = statset('LinearMixedModel')
opt = struct with fields:
          Display: 'off'
      MaxFunEvals: []
          MaxIter: 10000
           TolBnd: []
           TolFun: 1.0000e-06
       TolTypeFun: []
             TolX: 1.0000e-12
         TolTypeX: []
          GradObj: []
         Jacobian: []
        DerivStep: []
      FunValCheck: []
           Robust: []
     RobustWgtFun: []
           WgtFun: []
             Tune: []
      UseParallel: []
    UseSubstreams: []
          Streams: {}
        OutputFcn: []

Измените опции для параллельной проверки.

opt.UseParallel = true;

Запустите параллельное окружение.

mypool = parpool();
Starting parallel pool (parpool) using the 'local' profile ...
Connected to the parallel pool (number of workers: 6).

Сравнение lme2 и lme использование моделируемого теста коэффициента правдоподобия с 1000 репликациями и параллельными вычислениями.

compare(lme2,lme,'nsim',1000,'Options',opt)
ans = 
    Simulated Likelihood Ratio Test: Nsim = 1000, Alpha = 0.05

    Model    DF    AIC       BIC       LogLik     LRStat    pValue     Lower    Upper  
    lme2     10    511.06       532    -245.53                                         
    lme      23    522.57    570.74    -238.29    14.491    0.53447    0.503    0.56573

Верхний уровень p-значение предполагает, что большая модель, lme не значительно лучше, чем меньшая модель, lme2. Меньшие значения AIC и BIC для lme2 также поддержите это.

Подробнее о

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

Ссылки

[1] Hox, J. Многоуровневый анализ, методы и приложения. Lawrence Erlbaum Associates, Inc., 2002.

[2] Страм Д. О. и Дж. У. Ли. Отклонение компоненты проверки в модели продольных смешанных эффектов. Биометрия, Т. 50, 4, 1994, стр. 1171-1177.

Расширенные возможности