sbiofitmixed

Подгонка нелинейной модели смешанных эффектов (требует программного обеспечения Statistics and Machine Learning Toolbox)

Описание

пример

fitResults = sbiofitmixed(sm,grpData,responseMap,covEstiminfo) выполняет нелинейную оценку смешанных эффектов с помощью SimBiology® модели sm и возвращает NLMEResults fitResults объекта.

grpData является groupedData object определение подходящих данных. responseMap определяет отображение между компонентами модели и данными отклика в grpData. covEstiminfo является CovariateModel object или массив estimatedInfo объекты, которые определяют параметры, которые будут оценены.

Если модель содержит активные дозы и варианты, они применяются во время симуляции.

пример

fitResults = sbiofitmixed(sm,grpData,responseMap,covEstiminfo,dosing) использует информацию о дозах, заданную матрицей объектов дозы SimBiology dosing вместо использования активных доз модели sm если таковые имеются.

пример

fitResults = sbiofitmixed(sm,grpData,responseMap,covEstiminfo,dosing,functionName) использует функцию оценки, заданную как functionName это должно быть либо 'nlmefit' или 'nlmefitsa'.

пример

fitResults = sbiofitmixed(sm,grpData,responseMap,covEstiminfo,dosing,functionName,opt) использует дополнительные опции, заданные opt для функции оценки functionName.

пример

fitResults = sbiofitmixed(sm,grpData,responseMap,covEstiminfo,dosing,functionName,opt,variants) применяет объекты вариантов, заданные как variants вместо использования любых активных вариантов модели.

пример

fitResults = sbiofitmixed(_,'UseParallel',tf_parallel) определяет, оценивать ли параметры параллельно, если доступен Parallel Computing Toolbox™.

пример

fitResults = sbiofitmixed(_,'ProgressPlot',tf_progress) определяет, отображать ли прогресс оценки параметра.

[fitResults,simDataI,simDataP] = sbiofitmixed(_) возвращает вектор объектов результатов fitResults, вектор результатов симуляции simDataI использование индивидуально-специфических оценок параметров и вектора результатов симуляции simDataP использование оценок параметров населения.

Примечание

  • sbiofitmixed объединяет sbionlmefit и sbionlmefitsa функции оценки. Использовать sbiofitmixed для выполнения нелинейного моделирования и оценки смешанных эффектов.

  • sbiofitmixed моделирует модель с помощью a SimFunction object, который автоматически ускоряет симуляции по умолчанию. Следовательно, нет необходимости бежать sbioaccelerate перед вызовом sbiofitmixed.

Примеры

свернуть все

Этот пример использует данные, собранные для 59 недоношенных детей, получавших фенобарбитал в течение первых 16 дней после рождения [1]. Каждый ребенок получал начальную дозу с последующей одной или несколькими поддерживающими дозами при внутривенном введении болюса. В общей сложности от 1 до 6 измерений концентрации получали от каждого ребенка в разы, отличные от времени дозы, в общей сложности 155 измерений. Были также зарегистрированы веса младенцев и счетов APGAR (мера здоровья новорожденных).

Загрузите данные.

load pheno.mat ds

Преобразуйте набор данных в groupedData object, контейнер для хранения табличных данных, который разделен на группы. Он может автоматически идентифицировать обычно используемые имена переменных как сгруппированную переменную или независимую (временную) переменную. Отобразите свойства данных и подтвердите, что GroupVariableName и IndependentVariableName правильно идентифицируются как 'ID' и 'TIME', соответственно.

data = groupedData(ds);
data.Properties
ans = struct with fields:
                Description: ''
                   UserData: []
             DimensionNames: {'Observations'  'Variables'}
              VariableNames: {'ID'  'TIME'  'DOSE'  'WEIGHT'  'APGAR'  'CONC'}
       VariableDescriptions: {}
              VariableUnits: {}
         VariableContinuity: []
                   RowNames: {}
           CustomProperties: [1x1 matlab.tabular.CustomProperties]
          GroupVariableName: 'ID'
    IndependentVariableName: 'TIME'

Создайте простую однокамерную модель PK с болюсным дозированием и линейным зазором, чтобы соответствовать таким данным. Используйте PKModelDesign объект, чтобы создать модель. Каждый отсек определяется именем, типом дозирования, типом зазора, и требует ли дозирование параметра задержки. После построения модели можно также получить PKModelMap map объекта который приводит имена видов и параметров в модели, которые наиболее релевантны для подбора кривой.

pkmd = PKModelDesign;
addCompartment(pkmd,'Central','DosingType','Bolus',...
                    'EliminationType','linear-clearance',...
                    'HasResponseVariable',true,'HasLag',false);
[onecomp, map] = pkmd.construct;

Опишите экспериментально измеренный ответ, сопоставив соответствующий компонент модели с переменной отклика. Другими словами, укажите, какой вид в модели соответствует какой переменной отклика в данных. The PKModelMap свойства Observed указывает, что соответствующий вид в модели Drug_Central, который представляет концентрацию лекарственного средства в системе. Релевантная переменная данных CONC, который вы визуализировали ранее.

map.Observed
ans = 1x1 cell array
    {'Drug_Central'}

Сопоставьте Drug_Central виды в CONC переменная.

responseMap = 'Drug_Central = CONC';

Параметрами для оценки в этой модели являются объем центрального отсека Central и коэффициент очистки Cl_Central. The PKModelMap свойства Estimated перечисляет эти соответствующие параметры. Базовый алгоритм sbiofit предполагает, что параметры обычно распределены, но это предположение может не быть верным для биологических параметров, которые ограничены, чтобы быть положительными, таких как объем и клиренс. Задайте журнал преобразование для предполагаемых параметров, чтобы преобразованные параметры следовали нормальному распределению. Использование estimatedInfo объект для определения таких преобразований и начальных значений (необязательно).

map.Estimated
ans = 2x1 cell
    {'Central'   }
    {'Cl_Central'}

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

estimatedParams = estimatedInfo({'log(Central)','log(Cl_Central)'},'InitialValue',[1 1]);

Каждый ребенок получал разный график дозирования. Количество препарата указано в переменной данных DOSE. Чтобы задать эти дозировки во время подбора кривой, создайте объекты дозы из данных. Эти объекты используют свойство TargetName чтобы определить, какие виды в модели получают дозу. В этом примере целевой вид Drug_Central, как указано в PKModelMap свойства Dosed.

map.Dosed
ans = 1x1 cell array
    {'Drug_Central'}

Создайте дозу образца с этим целевым именем и используйте createDoses метод groupedData data объекта для генерации доз для каждого ребенка на основе данных о дозировке DOSE.

sampleDose = sbiodose('sample','TargetName','Drug_Central');
doses = createDoses(data,'DOSE','',sampleDose);

Подгонка модели.

[nlmeResults,simI,simP] = sbiofitmixed(onecomp,data,responseMap,estimatedParams,doses,'nlmefit');

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

fig1 = plot(nlmeResults,'ParameterType','individual');

% Resize the figure.
fig1.hFig.Position(:) = [100 100 1200 800];

Figure contains 64 axes. Axes 1 with title Group 1 contains 2 objects of type line. These objects represent OBS1 (CONC), PRED1 (Central.Drug_Central). Axes 2 with title Group 9 contains 2 objects of type line. Axes 3 with title Group 17 contains 2 objects of type line. Axes 4 with title Group 25 contains 2 objects of type line. Axes 5 with title Group 33 contains 2 objects of type line. Axes 6 with title Group 41 contains 2 objects of type line. Axes 7 with title Group 49 contains 2 objects of type line. Axes 8 with title Group 57 contains 2 objects of type line. Axes 9 with title Group 2 contains 2 objects of type line. Axes 10 with title Group 10 contains 2 objects of type line. Axes 11 with title Group 18 contains 2 objects of type line. Axes 12 with title Group 26 contains 2 objects of type line. Axes 13 with title Group 34 contains 2 objects of type line. Axes 14 with title Group 42 contains 2 objects of type line. Axes 15 with title Group 50 contains 2 objects of type line. Axes 16 with title Group 58 contains 2 objects of type line. Axes 17 with title Group 3 contains 2 objects of type line. Axes 18 with title Group 11 contains 2 objects of type line. Axes 19 with title Group 19 contains 2 objects of type line. Axes 20 with title Group 27 contains 2 objects of type line. Axes 21 with title Group 35 contains 2 objects of type line. Axes 22 with title Group 43 contains 2 objects of type line. Axes 23 with title Group 51 contains 2 objects of type line. Axes 24 with title Group 59 contains 2 objects of type line. Axes 25 with title Group 4 contains 2 objects of type line. Axes 26 with title Group 12 contains 2 objects of type line. Axes 27 with title Group 20 contains 2 objects of type line. Axes 28 with title Group 28 contains 2 objects of type line. Axes 29 with title Group 36 contains 2 objects of type line. Axes 30 with title Group 44 contains 2 objects of type line. Axes 31 with title Group 52 contains 2 objects of type line. Axes 32 is empty. Axes 33 with title Group 5 contains 2 objects of type line. Axes 34 with title Group 13 contains 2 objects of type line. Axes 35 with title Group 21 contains 2 objects of type line. Axes 36 with title Group 29 contains 2 objects of type line. Axes 37 with title Group 37 contains 2 objects of type line. Axes 38 with title Group 45 contains 2 objects of type line. Axes 39 with title Group 53 contains 2 objects of type line. Axes 40 is empty. Axes 41 with title Group 6 contains 2 objects of type line. Axes 42 with title Group 14 contains 2 objects of type line. Axes 43 with title Group 22 contains 2 objects of type line. Axes 44 with title Group 30 contains 2 objects of type line. Axes 45 with title Group 38 contains 2 objects of type line. Axes 46 with title Group 46 contains 2 objects of type line. Axes 47 with title Group 54 contains 2 objects of type line. Axes 48 is empty. Axes 49 with title Group 7 contains 2 objects of type line. Axes 50 with title Group 15 contains 2 objects of type line. Axes 51 with title Group 23 contains 2 objects of type line. Axes 52 with title Group 31 contains 2 objects of type line. Axes 53 with title Group 39 contains 2 objects of type line. Axes 54 with title Group 47 contains 2 objects of type line. Axes 55 with title Group 55 contains 2 objects of type line. Axes 56 is empty. Axes 57 with title Group 8 contains 2 objects of type line. Axes 58 with title Group 16 contains 2 objects of type line. Axes 59 with title Group 24 contains 2 objects of type line. Axes 60 with title Group 32 contains 2 objects of type line. Axes 61 with title Group 40 contains 2 objects of type line. Axes 62 with title Group 48 contains 2 objects of type line. Axes 63 with title Group 56 contains 2 objects of type line. Axes 64 is empty.

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

fig2 = plot(nlmeResults,'ParameterType','population'); 

% Resize the figure.
fig2.hFig.Position(:) = [100 100 1200 800];

Figure contains 64 axes. Axes 1 with title Group 1 contains 2 objects of type line. These objects represent OBS1 (CONC), PRED1 (Central.Drug_Central). Axes 2 with title Group 9 contains 2 objects of type line. Axes 3 with title Group 17 contains 2 objects of type line. Axes 4 with title Group 25 contains 2 objects of type line. Axes 5 with title Group 33 contains 2 objects of type line. Axes 6 with title Group 41 contains 2 objects of type line. Axes 7 with title Group 49 contains 2 objects of type line. Axes 8 with title Group 57 contains 2 objects of type line. Axes 9 with title Group 2 contains 2 objects of type line. Axes 10 with title Group 10 contains 2 objects of type line. Axes 11 with title Group 18 contains 2 objects of type line. Axes 12 with title Group 26 contains 2 objects of type line. Axes 13 with title Group 34 contains 2 objects of type line. Axes 14 with title Group 42 contains 2 objects of type line. Axes 15 with title Group 50 contains 2 objects of type line. Axes 16 with title Group 58 contains 2 objects of type line. Axes 17 with title Group 3 contains 2 objects of type line. Axes 18 with title Group 11 contains 2 objects of type line. Axes 19 with title Group 19 contains 2 objects of type line. Axes 20 with title Group 27 contains 2 objects of type line. Axes 21 with title Group 35 contains 2 objects of type line. Axes 22 with title Group 43 contains 2 objects of type line. Axes 23 with title Group 51 contains 2 objects of type line. Axes 24 with title Group 59 contains 2 objects of type line. Axes 25 with title Group 4 contains 2 objects of type line. Axes 26 with title Group 12 contains 2 objects of type line. Axes 27 with title Group 20 contains 2 objects of type line. Axes 28 with title Group 28 contains 2 objects of type line. Axes 29 with title Group 36 contains 2 objects of type line. Axes 30 with title Group 44 contains 2 objects of type line. Axes 31 with title Group 52 contains 2 objects of type line. Axes 32 is empty. Axes 33 with title Group 5 contains 2 objects of type line. Axes 34 with title Group 13 contains 2 objects of type line. Axes 35 with title Group 21 contains 2 objects of type line. Axes 36 with title Group 29 contains 2 objects of type line. Axes 37 with title Group 37 contains 2 objects of type line. Axes 38 with title Group 45 contains 2 objects of type line. Axes 39 with title Group 53 contains 2 objects of type line. Axes 40 is empty. Axes 41 with title Group 6 contains 2 objects of type line. Axes 42 with title Group 14 contains 2 objects of type line. Axes 43 with title Group 22 contains 2 objects of type line. Axes 44 with title Group 30 contains 2 objects of type line. Axes 45 with title Group 38 contains 2 objects of type line. Axes 46 with title Group 46 contains 2 objects of type line. Axes 47 with title Group 54 contains 2 objects of type line. Axes 48 is empty. Axes 49 with title Group 7 contains 2 objects of type line. Axes 50 with title Group 15 contains 2 objects of type line. Axes 51 with title Group 23 contains 2 objects of type line. Axes 52 with title Group 31 contains 2 objects of type line. Axes 53 with title Group 39 contains 2 objects of type line. Axes 54 with title Group 47 contains 2 objects of type line. Axes 55 with title Group 55 contains 2 objects of type line. Axes 56 is empty. Axes 57 with title Group 8 contains 2 objects of type line. Axes 58 with title Group 16 contains 2 objects of type line. Axes 59 with title Group 24 contains 2 objects of type line. Axes 60 with title Group 32 contains 2 objects of type line. Axes 61 with title Group 40 contains 2 objects of type line. Axes 62 with title Group 48 contains 2 objects of type line. Axes 63 with title Group 56 contains 2 objects of type line. Axes 64 is empty.

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

свернуть все

SimBiology модель, заданная как SimBiology model object. Активное configset object модели содержит настройки решателя для симуляции. Любые активные дозы и варианты применяются к модели во время симуляции, если не указано иное с помощью dosing и variants входные параметры, соответственно.

Данные в соответствии, заданные как groupedData object.

Имя временной переменной должно быть определено в IndependentVariableName свойство grpData. Например, если имя временной переменной 'TIME', затем укажите его следующим образом.

grpData.Properties.IndependentVariableName = 'TIME';

grpData должна иметь как минимум две группы, а имя сгруппированной переменной должно быть определено в GroupVariableName свойство grpData. Например, если имя сгруппированной переменной 'GROUP', затем укажите его следующим образом.

grpData.Properties.GroupVariableName = 'GROUP';
Группа обычно относится к набору измерений, которые представляют один временной курс, часто соответствующий конкретному индивидуальному или экспериментальному условию.

Примечание

sbiofitmixed использует categorical функция для идентификации групп. Если какие-либо значения групп преобразуются в одно и то же значение, categoricalзатем эти наблюдения рассматривают как принадлежность к той же группе. Например, если некоторые наблюдения не имеют информации о группе (то есть пустой символьный вектор), то categorical преобразует пустые символьные векторы в <undefined>и эти наблюдения рассматриваются как одна группа.

Сопоставление информации о компонентах модели с grpData, заданный как вектор символов, строка, строковый вектор или массив ячеек из векторов символов.

Каждый вектор или строка символов является выражением, подобным уравнению, подобным правилам назначения в SimBiology. Он содержит имя (или квалифицированное название) количества (вида, отделения или параметра) или observable объект в модели sm, далее следует символ '=' и имя переменной в grpData. Для ясности, белые пространства разрешены между именами и '='.

Для примера, если у вас есть данные о концентрации 'CONC' в grpData для видового 'Drug_Central', можно задать его следующим образом.

responseMap = 'Drug_Central = CONC';

Чтобы однозначно назвать вид, используйте квалифицированное имя, которое включает в себя имя отсека. Чтобы назвать параметр области реакции, используйте имя реакции, чтобы определить параметр.

Если имя компонента модели или grpData имя переменной не является допустимым MATLAB® имя переменной, окружайте ее квадратными скобками, такими как:

responseMap = '[Central 1].Drug = [Central 1 Conc]';

Если само имя переменной содержит квадратные скобки, вы не можете использовать его в выражении, чтобы задать информацию о отображении.

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

Предполагаемые параметры, заданные как вектор estimatedInfo объекты или CovariateModel object который определяет оценочные параметры в модели sm, их первоначальные оценки (необязательные) и их связь с ковариатами для конкретных групп, включенными в grpData (необязательно). Если это вектор estimatedInfo объекты, тогда ковариаты не используются, и все параметры оцениваются с групповыми случайными эффектами.

При необходимости можно также задать преобразования параметров. Поддерживаемые преобразования log, logit, и probit. Для получения дополнительной информации см. EstimatedInfo object и CovariateModel object.

Если covEstiminfo является вектором estimatedInfo объекты, CategoryVariableName свойство каждого из этих объектов игнорируется.

Информация о дозах, заданная как пустой массив или 2-D матрица объектов дозы (ScheduleDose object или RepeatDose object).

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

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

  • Допускается использование нескольких столбцов, чтобы можно было применить несколько объектов дозы к каждой группе. Все дозы в столбце должны ссылаться на одни и те же компоненты в модели. Для примера дозы в том же столбце должны иметь ту же дозу, что и целевые (TargetName). Если вы параметризоваете любое свойство дозы, то все дозы в столбце должны иметь это свойство, параметризованное к одному и тому же параметру. Если одни группы требуют больше доз, чем другие, то заполните матрицу стандартными (манекенщицами) дозами.

  • Доза по умолчанию имеет значения по умолчанию для всех свойств, кроме Name свойство. Создайте дозу по умолчанию следующим образом.

    d1 = sbiodose('d1');

  • В дополнение к ручному построению объектов дозы с помощью sbiodose, если grpData имеет информацию о дозах, вы можете использовать createDoses СПОСОБ СОЗДАНИЯ ДОЗ.

Имя функции оценки, заданное как вектор символов или строка. Варианты 'nlmefit' или 'nlmefitsa'. Для сводных данных поддерживаемых методов и опций подгонки смотрите Поддерживаемые методы для оценки параметра в SimBiology.

Опции, характерные для функции оценки, заданные как структура. Структура содержит поля и значения по умолчанию, которые являются аргументами пары "имя-значение", принятыми nlmefit (Statistics and Machine Learning Toolbox) и nlmefitsa (Statistics and Machine Learning Toolbox), за исключением следующих, которые не поддерживаются.

  • 'FEConstDesign'

  • 'FEGroupDesign

  • 'FEObsDesign'

  • 'FEParamsSelect'

  • 'ParamTransform'

  • 'REConstDesign'

  • 'REGroupDesign'

  • 'REObsDesign'

  • 'Vectorization'

'REParamsSelect' поддерживается только тогда, когда covEstiminfo является вектором estimatedInfo объекты.

Используйте statset (Statistics and Machine Learning Toolbox) функция только для того, чтобы задать 'Options' поле opt структура следующим образом.

opt.Options = statset('Display','iter','TolX',1e-3,'TolFun',1e-3);

Для других поддерживаемых аргументов пары "имя-значение" (см. nlmefit (Statistics and Machine Learning Toolbox) и nlmefitsa (Statistics and Machine Learning Toolbox)), установите их следующим образом.

opt.ErrorModel = 'proportional';
opt.ApproximationType = 'LME';

Варианты, заданные как пустой массив или вектор объектов варианта. Если он пуст, никакие варианты не используются, даже если у модели есть активные варианты.

'UseParallel' опция, заданная как true или false. Если true, и Parallel Computing Toolbox доступен, функция выполняет оценку параметра параллельно.

'ProgressPlot' опция, заданная как true или false. Если true, новый рисунок открывает контейнинговые графики, которые показывают прогресс оценки параметра. В частности, на графиках показаны значения параметров фиксированных эффектов (theta), оценки параметров отклонения, то есть диагональных элементов матрицы ковариации случайных эффектов (и логарифмическая правдоподобность. Для получения дополнительной информации смотрите График прогресса.

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

свернуть все

Результаты оценки, возвращенные как NLMEResults object.

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

Информация о состояниях представлена в simDataI являются состояниями, которые были включены в responseMap входной параметр, а также любые другие состояния, перечисленные в StatesToLog свойство опций среды выполнения (RuntimeOptions) модели SimBiology sm.

Результаты симуляции, возвращенные как вектор SimData объекты, представляющие результаты симуляции для каждой группы (или индивидуума), использующие только оценки с фиксированным эффектом (оценки параметров населения).

Информация о состояниях представлена в simDataP являются состояниями, которые были включены в responseMap входной параметр, а также любые другие состояния, перечисленные в StatesToLog свойство опций среды выполнения (RuntimeOptions) модели SimBiology sm.

Ссылки

[1] Грасела-младший, T.H., Donn, S.M. (1985) Фармакокинетика неонатального населения фенобарбитала, полученная из рутинных клинических данных. Dev Pharmacol Ther. 8(6), 374–83.

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

Введенный в R2014a