сравнение

Класс: LinearMixedModel

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

Синтаксис

results = compare(lme,altlme)
results = compare(___,Name,Value)
[results,siminfo] = compare(lme,altlme,'NSim',nsim)
[results,siminfo] = compare(___,Name,Value)

Описание

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

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 должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: 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 с the'UseParallel','True' опцией.

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

help parallelstats

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

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

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

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

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

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

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

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

развернуть все

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

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

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

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

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

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

Примеры

развернуть все

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

load flu

Массив набора данных 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- значение 0 указывает, что модель altlme значительно лучше, чем более простая модель lme.

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

load(fullfile(matlabroot,'examples','stats','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)');

Сравните эти две модели с помощью моделируемого теста отношения правдоподобия с 1 000 репликаций. Необходимо использовать этот тест, чтобы протестировать и на зафиксированный - и на условия случайного эффекта. Обратите внимание на то, что обе модели являются подходящим использованием значения по умолчанию подходящий метод, 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 и Bayesian 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.094905    0.077462


    Upper  
           
    0.11477

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

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

load(fullfile(matlabroot,'examples','stats','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 являются переменными фиксированных эффектов, и средний урожай отличается блоком (тип грунта) и графики в блоках (томатные типы в типах грунта) независимо.

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

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

lme2 = fitlme(ds,'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: 12).

Сравните lme2 и lme с помощью моделируемого теста отношения правдоподобия с 1 000 репликаций и параллельных вычислений.

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  
    lme2     10    511.06       532    -245.53                                
    lme      23    522.57    570.74    -238.29    14.491    0.54645    0.51502


    Upper  
           
    0.57762

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

Больше о

развернуть все

Ссылки

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

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

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