compare

Класс: LinearMixedModel

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

Описание

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 имя аргумента и 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('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

Верхний уровень $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 использование симулированного отношения правдоподобия тестирует с 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    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.

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