predict(NLMEResults)

Моделируйте и оценивайте подобранную модель SimBiology

Синтаксис

[ynew,parameterEstimates] = predict(resultsObj)
[ynew,parameterEstimates] = predict(resultsObj,data,dosing)
[ynew,parameterEstimates] = predict(___,'ParameterType',value)

Описание

[ynew,parameterEstimates] = predict(resultsObj) возвращает результаты симуляции ynew от оценки подобранного SimBiology® модель. Предполагаемые значения параметров parameterEstimates используется для вычисления ynew являются из исходной подгонки sbiofitmixed.

[ynew,parameterEstimates] = predict(resultsObj,data,dosing) возвращает результаты симуляции ynew от оценки подобранной модели SimBiology при помощи заданной data и dosing информацию.

[ynew,parameterEstimates] = predict(___,'ParameterType',value) Возвраты результатов симуляции от оценки подобранной модели SimBiology с помощью индивидуума или населения оценок параметров. Два варианта для value являются 'individual' (по умолчанию) или 'population'.

Совет

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

Примеры

свернуть все

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

Загрузка данных

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

load pheno.mat ds

Преобразование в groupedData

Преобразуйте данные в формат groupedData для оценки параметра.

data = groupedData(ds);

Отображение первых нескольких строк data.

data(1:5,:)
ans =

  5×6 groupedData

    ID    TIME    DOSE    WEIGHT    APGAR    CONC
    __    ____    ____    ______    _____    ____

    1        0     25      1.4        7       NaN
    1        2    NaN      1.4        7      17.3
    1     12.5    3.5      1.4        7       NaN
    1     24.5    3.5      1.4        7       NaN
    1       37    3.5      1.4        7       NaN

Визуализация данных

Отображение данных на шпалерном графике.

t = sbiotrellis(data, 'ID', 'TIME', 'CONC', 'marker', 'o',...
       'markerfacecolor', [.7 .7 .7], 'markeredgecolor', 'r', ...
       'linestyle', 'none');
t.plottitle = 'Concentration versus Time';

Создайте модель PK с одним отсеком

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

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

Сопоставьте виды модели с данными отклика.

responseMap = 'Drug_Central = CONC';

Задайте предполагаемые параметры

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

log(Vi)=log(ϕV,i)=θV+ηV,i

и

log(Cli)=log(ϕCl,i)=θCl+ηCl,i,

где θ, eta, и ϕ являются фиксированными эффектами, случайными эффектами и оцененными значениями параметров, соответственно, рассчитанными для каждого младенца (группы) i. Некоторые произвольные первоначальные оценки для V (объем центрального отсека) и C1 (скорость клиренса) используются здесь в отсутствие лучших эмпирических данных.

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

Определите дозирование

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

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

Подбор модели

Использование sbiofitmixed для соответствия модели с одним отсеком данным.

nlmeResults = sbiofitmixed(onecomp,data,responseMap,estimatedParams,doses,'nlmefit');

Визуализация результатов

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

fig1 = plot(nlmeResults,'ParameterType','individual');
% Resize the figure.
fig1.hFig.Position(:) = [100 100 1200 800];

Используйте новые данные дозирования для моделирования подобранной модели

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

Создайте новые объекты дозы с новыми суммарными дозами.

dose1 = doses(1);
dose1.Amount = dose1.Amount*2;
dose2 = doses(2);
dose2.Amount = dose2.Amount*1.5;

Используйте predict функция для оценки подобранной модели с использованием новых данных дозирования. Если вы хотите предсказания отклика в определенные моменты времени, предоставьте новый выходной временной вектор. Используйте опцию 'ParameterType', чтобы задать индивидуальные или популяционные параметры для использования. По умолчанию predict использует параметры населения, когда вы задаете время выхода.

timeVec = [0:25:400];
newResults = predict(nlmeResults,timeVec,[dose1;dose2],'ParameterType','population');

Визуализируйте предсказанные ответы, перекрывая экспериментальные данные для детей 1 и 2.

subplot(2,1,1)
plot(data.TIME(data.ID == 1),data.CONC(data.ID == 1),'bo')
hold on
plot(newResults(1).Time,newResults(1).Data,'b')
hold off
ylabel('Concentration')
legend('Observation(CONC)','Prediction')
subplot(2,1,2)
plot(data.TIME(data.ID == 2),data.CONC(data.ID == 2),'rx')
hold on
plot(newResults(2).Time,newResults(2).Data,'r')
hold off
legend('Observation(CONC)','Prediction')
ylabel('Concentration')
xlabel('Time')

Создайте ковариатную модель для ковариатных зависимостей

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

log(Vi)=log(ϕV,i)=θV+θV/weight*weighti+ηV,i

и

log(Cli)=log(ϕCl,i)=θCl+θCl/weight*weighti+ηCl,i

Используйте CovariateModel объект для определения ковариатных зависимостей. Для получения дополнительной информации смотрите Задать ковариатную модель.

covModel = CovariateModel;
covModel.Expression = ({'Central = exp(theta1 + theta2*WEIGHT + eta1)',...
                        'Cl_Central = exp(theta3 + theta4*WEIGHT + eta2)'});
% Use |constructDefaultInitialEstimate| to create an |initialEstimates|
% struct.
initialEstimates = covModel.constructDefaultFixedEffectValues;

Используйте FixedEffectNames свойство для отображения тетов (фиксированных эффектов), определенных в модели.

covModel.FixedEffectNames
ans = 4×1 cell
    {'theta1'}
    {'theta3'}
    {'theta2'}
    {'theta4'}

Используйте FixedEffectDescription свойство для отображения описаний соответствующих фиксированных эффектов (thetas), используемых в ковариатном выражении. Для примера, theta2 является фиксированным эффектом для ковариаты веса, который коррелирует с объемом (Central), обозначаемое как 'Central/WEIGHT'.

disp('Fixed Effects Description:');
Fixed Effects Description:
disp(covModel.FixedEffectDescription);
    {'Central'          }
    {'Cl_Central'       }
    {'Central/WEIGHT'   }
    {'Cl_Central/WEIGHT'}

Установите начальные предположения для значений параметров с фиксированным эффектом для Central и Cl_Central использование значений, оцененных из подбора кривой базовой модели.

initialEstimates.theta1 = nlmeResults.FixedEffects.Estimate(1);
initialEstimates.theta3 = nlmeResults.FixedEffects.Estimate(2);
covModel.FixedEffectValues = initialEstimates;

Подбор модели

nlmeResults_cov = sbiofitmixed(onecomp,data,responseMap,covModel,doses,'nlmefit');

Отображение настроенных параметров и ковариаций

disp('Estimated Fixed Effects:');
Estimated Fixed Effects:
disp(nlmeResults_cov.FixedEffects);
       Name            Description         Estimate    StandardError
    __________    _____________________    ________    _____________

    {'theta1'}    {'Central'          }    -0.45664      0.078933   
    {'theta3'}    {'Cl_Central'       }     -5.9519        0.1177   
    {'theta2'}    {'Central/WEIGHT'   }     0.52948      0.047342   
    {'theta4'}    {'Cl_Central/WEIGHT'}     0.61954      0.071386   
disp('Estimated Covariance Matrix:');
Estimated Covariance Matrix:
disp(nlmeResults_cov.RandomEffectCovarianceMatrix);
              eta1        eta2  
            ________    ________

    eta1    0.046503           0
    eta2           0    0.041609

Визуализация результатов

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

fig2 = plot(nlmeResults_cov,'ParameterType','individual');
% Resize the figure.
fig2.hFig.Position(:) = [100 100 1200 800];

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

Предположим, что вы хотите исследовать ответы детей 1 и 2 с помощью различных ковариационных данных, а именно WEIGHT. Вы можете сделать это, задав новую WEIGHT данные. The ID переменная данных соответствует отдельным младенцам.

newData = data(data.ID == 1 | data.ID == 2,:);
newData.WEIGHT(newData.ID == 1) = 1.3;
newData.WEIGHT(newData.ID == 2) = 1.4;

Моделируйте ответы детей 1 и 2 с помощью новых ковариационных данных.

[newResults_cov, newEstimates] = predict(nlmeResults_cov,newData,[dose1;dose2]);

newEstimates содержит обновленные оценки параметров для каждого индивидуума (младенцев 1 и 2) после переоценки модели с использованием новых ковариационных данных.

newEstimates
newEstimates=4×3 table
    Group         Name         Estimate 
    _____    ______________    _________

      1      {'Central'   }       2.5596
      1      {'Cl_Central'}    0.0065965
      2      {'Central'   }       1.7123
      2      {'Cl_Central'}    0.0064806

Сравните с оценочными значениями из исходной подгонки с помощью старых ковариационных данных.

nlmeResults_cov.IndividualParameterEstimates( ...
            nlmeResults_cov.IndividualParameterEstimates.Group == '1' | ...
            nlmeResults_cov.IndividualParameterEstimates.Group == '2',:)
ans=4×3 table
    Group         Name         Estimate 
    _____    ______________    _________

      1      {'Central'   }       2.6988
      1      {'Cl_Central'}    0.0070181
      2      {'Central'   }       1.8054
      2      {'Cl_Central'}    0.0068948

Визуализируйте новые результаты симуляции вместе с экспериментальными данными для младенца 1 и 2.

subplot(2,1,1)
plot(data.TIME(data.ID == 1),data.CONC(data.ID == 1),'bo')
hold on
plot(newResults_cov(1).Time,newResults_cov(1).Data,'b')
hold off
ylabel('Concentration')
legend('Observation(CONC)','Prediction','Location','NorthEastOutside')
subplot(2,1,2)
plot(data.TIME(data.ID == 2),data.CONC(data.ID == 2),'rx')
hold on
plot(newResults_cov(2).Time,newResults_cov(2).Data,'r')
hold off
legend('Observation(CONC)','Prediction','Location','NorthEastOutside')
ylabel('Concentration')
xlabel('Time')

Ссылки

[1] Грасела, Т. Х. Младший, и С. М. Донн. «Неонатальное население фармакокинетика фенобарбитала, полученная из рутинных клинических данных». Dev Pharmacol Ther 1985:8 (6). 374-83.

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

свернуть все

Результаты оценки, заданные как скаляр NLMEResults object, который содержит нелинейные результаты оценки смешанных эффектов, возвращенные sbiofitmixed.

Сгруппированные данные или время выхода, заданное как groupedData object, вектор или массив ячеек из векторов выхода раз.

Если data является groupedData для объекта должны быть заданы как метки группы, так и время вывода. Метки группы могут ссылаться на новые группы или существующие группы из исходной подгонки. Если модель смешанных эффектов из исходной подгонки (возвращается sbiofitmixed) использует ковариаты, groupedData объект должен также содержать ковариационные данные с теми же метками для ковариат (CovariateLabels свойство), заданное в исходной ковариатной модели.

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

Общее количество результатов симуляции в выход ynew зависит от количества групп или выходных временных векторов в data и количество строк в dosing матрица. Для получения дополнительной информации см. таблицу в ynew описание аргумента.

Информация о дозах, заданная как пустой массив [] или 2-D матрица объектов дозы SimBiology (ScheduleDose object или RepeatDose object). Если dosing является матрицей объектов дозы, матрица должна содержать дозы по умолчанию или соответствовать исходным данным дозирования, используемым с sbiofitmixed. То есть дозируйте объекты в dosing должны иметь те же значения свойств дозы (такие как TargetName) или должны быть параметризованы так же, как и исходные данные дозирования. Например, предположим, что исходная матрица дозирования имеет два столбца доз, где первый столбец нацелен на вид x и второй столбец на вид y. Затем dosing должны иметь дозы в первом столбце, нацеленные на виды x и дозы во втором столбце, нацеленные на виды y.

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

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

  • Допускается использование нескольких столбцов, чтобы можно было применить несколько объектов дозы к каждой группе или временному вектору. Все дозы в столбце должны быть дозами по умолчанию или должны ссылаться на одни и те же компоненты в модели (для образца дозы должны иметь одинаковые TargetName) и должны иметь согласованные параметризованные свойства, как в исходных данных дозирования, используемых с sbiofitmixed. Для примера, если Amount свойство дозы, используемой в оригинале sbiofitmixed вызов параметризован в параметр с параметрами model-scoped 'A', все дозы для соответствующей группы (столбца) в dosing должны иметь Amount свойство параметризовано в 'A'.

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

    d1 = sbiodose('d1');

  • В дополнение к ручному построению объектов дозы с помощью sbiodose, если входные данные являются groupedData объект и имеет информацию о дозах, вы можете использовать createDoses способ конструирования доз из него.

Количество строк в dosing матрица и количество групп или выходных временных векторов в data определить общее количество результатов моделирования в выход ynew. Для получения дополнительной информации см. таблицу в ynew описание аргумента.

Примечание

Если UnitConversion включен для базовой модели SimBiology, которая использовалась для подбора кривой, dosing необходимо указать допустимую величину и временные модули.

Тип параметра, заданный как 'individual' (по умолчанию) или 'population'. Если value является 'population', а predict метод возвращает результаты симуляции с помощью оценок параметров населения, то есть значений параметров, которые оцениваются только с использованием фиксированных эффектов ( Оцененные значения параметров, используемые в симуляции, идентичны значениям в resultsObj.PopulationParameterEstimates свойство, если вы не задаете новое groupedData data объекта с новыми ковариатными данными. В этом случае метод переоценивает ковариатную модель и оценки параметра на основе новой groupedData и ковариатные данные.

Если value является 'individual', метод возвращает результаты симуляции с помощью соответствующих значений параметров группы в resultsObj.IndividualParameterEstimates свойство. Эти значения включают как оценки фиксированных, так и случайных эффектов, то есть значения параметров, оцененные с использованием как фиксированных эффектов ( Если data содержит новые группы, для этих групп используются только фиксированные эффекты (оценки параметров населения объекта результатов).

По умолчанию, predict использует отдельные оценки параметров объекта результатов при data является groupedData объект. Если data - вектор времени выхода или массив ячеек из векторов, predict вместо этого использует оценки параметров населения объекта результатов.

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

свернуть все

Результаты симуляции, возвращенные как вектор SimData объекты. Информация о состояниях представлена в ynew включены ли состояния в responseMap входной параметр sbiofitmixed и любые другие состояния, перечисленные в StatesToLog свойство опций среды выполнения (RuntimeOptions) модели SimBiology.

Общее количество результатов симуляции в ynew зависит от количества групп или выходных временных векторов в data и количество строк в dosing матрица.

Количество групп или выходных временных векторов в dataКоличество строк в dosing матрицаРезультаты симуляции

1

0, то есть dosing пуст []

Общее количество SimData объекты в ynew равен 1.

Дозы во время симуляции не применяются.

1

1

Общее количество SimData объекты в ynew равен 1.

Данная строка доз применяется во время симуляции.

1

N

Общее количество SimData объекты в ynew является N.

Каждая строка dosing применяется к каждой симуляции.

N

0, то есть dosing пуст []

Общее количество SimData объекты в ynew является N.

Дозы во время симуляции не применяются.

N

1

Общее количество SimData объекты в ynew является N.

К каждой симуляции применяется одна и та же строка доз.

NN

Общее количество SimData объекты в ynew является N.

Каждая строка dosing применяется к отдельной группе в том же порядке, в котором появляются группы data.

MNФункция выдает ошибку при MN.

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

Если 'ParameterType' является 'individual', представленные значения параметров идентичны значениям в resultsObj.IndividualParameterEstimates свойство. Однако, если data содержит новые группы, тогда для этих групп используются только оценки параметров населения (фиксированные эффекты). Соответствующие отчетные значения в parameterEstimates для этих групп идентичны значениям в resultsObj.PopulationParameterEstimates.

Если 'ParameterType' является 'population', представленные значения параметров идентичны значениям в resultsObj.PopulationParameterEstimates свойство, если вы не задаете новую ковариационную информацию в data. Смотрите value описание аргумента для получения дополнительной информации.

Если data является вектором или массивом ячеек из векторов выхода раз, сообщенные значения параметров идентичны значениям в resultsObj.PopulationParameterEstimates. Кроме того, группы, о которых сообщалось, представляют собой перечисление выполненных симуляций и не связаны с именами групп в исходной подгонке.

Введенный в R2014a