predict(LeastSquaresResults,OptimResults,NLINResults)

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

Синтаксис

[ynew,parameterEstimates]= predict(resultsObj)
[ynew,parameterEstimates]= predict(resultsObj,data,dosing)

Описание

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

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

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

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

свернуть все

Оценка заканчивается в виде OptimResults object или NLINResults object, который содержит результаты оценки, возвращенные sbiofit. Это должен быть скалярный объект.

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

Если это - вектор из моментов времени, predict симулирует модель с новыми моментами времени с помощью оценок параметра от объекта resultsObj результатов.

Если это - массив ячеек векторов из моментов времени, predict симулирует времена модели n с помощью выходных времен от каждого временного вектора, где n является длиной data.

Если это - groupedData объект, это должно иметь независимую переменную, такую как Время. Это должно также иметь переменную группы, если обучающие данные, используемые для подбора кривой, имеют такую переменную. Можно использовать groupedData возразите, чтобы запросить различные комбинации категорий если resultsObj содержит оценки параметра для каждой категории. predict симулирует модель для каждой группы с заданными категориями. Например, предположите, что у вас есть набор оценок параметра для сексуальной категории (штекеры по сравнению с розетками) и категории возраста (молодой по сравнению со старым) в ваших обучающих данных. Можно использовать predict симулировать ответы старого штекера (или любая другая комбинация) несмотря на то, что такой пациент не может существовать в обучающих данных.

Если resultsObj от оценки специфичных для категории параметров, data должен быть groupedData объект.

Примечание

Если UnitConversion включен для базовой модели SimBiology, которая использовалась для подбора кривой и data groupedData объект, data должен задать модули действительной переменной через data.Properties.VariableUnits свойство. Если это - числовой векторный массив или массив ячеек векторов из моментов времени, predict использует TimeUnits модели.

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

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

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

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

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

    d1 = sbiodose('d1');

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

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

Примечание

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

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

свернуть все

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

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

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

1

0, то есть, dosing isempty

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

Никакие дозы не применяются в процессе моделирования.

1

1

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

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

1

N

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

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

N

0, то есть, dosing isempty

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

Никакие дозы не применяются в процессе моделирования.

N

1

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

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

NN

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

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

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

Предполагаемые значения параметров, возвращенные как таблица. Это идентично resultsObj.ParameterEstimates свойство. predict метод использует эти значения параметров в процессе моделирования.

Примеры

свернуть все

Этот пример использует дрожжи гетеротримерные данные модели белка G и экспериментальные данные, о которых сообщают [1]. Для получения дополнительной информации о модели, смотрите раздел Background в Сканировании Параметра, Оценке Параметра и Анализе чувствительности в Дрожжах Гетеротримерный Цикл Белка G.

Загрузите модель белка G.

sbioloadproject gprotein

Храните экспериментальные данные, содержащие курс времени для части активного белка G.

time = [0 10 30 60 110 210 300 450 600]';
GaFracExpt = [0 0.35 0.4 0.36 0.39 0.33 0.24 0.17 0.2]';

Сопоставьте соответствующий компонент модели с экспериментальными данными. Другими словами, укажите, которому разновидность в модели соответствует который переменная отклика в данных. В этом примере сопоставьте параметр модели GaFrac к переменной GaFracExpt экспериментальных данных от grpData.

responseMap = 'GaFrac = GaFracExpt';

Создайте groupedData основанный на объектах на экспериментальных данных.

tbl = table(time,GaFracExpt);
grpData = groupedData(tbl);

Используйте estimatedInfo объект задать параметр модели kGd в качестве параметра быть оцененным.

estimatedParam = estimatedInfo('kGd');

Выполните оценку параметра.

fitResult = sbiofit(m1,grpData,responseMap,estimatedParam);

Просмотрите предполагаемое значение параметров kGd.

fitResult.ParameterEstimates
ans=1×3 table
     Name      Estimate    StandardError
    _______    ________    _____________

    {'kGd'}    0.11307      3.4439e-05  

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

Создайте новую переменную T с различными выходными временами.

T = [0;10;50;80;100;150;300;350;400;450;500;550];

Используйте predict метод, чтобы симулировать подобранную модель на новых моментах времени. Никакое дозирование не было задано, когда вы сначала запустили sbiofit. Следовательно, вы не можете использовать информацию о дозах с predict метод и пустой массив должны быть заданы как третий входной параметр.

ynew = predict(fitResult,T,[]);

Отобразите симулированные данные на графике с новыми выходными временами.

sbioplot(ynew);

Figure contains an axes. The axes with title States versus Time contains 7 objects of type line. These objects represent G, Gd, Ga, RL, R, Gbg, GaFrac.

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

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

clear
load('sd5_302RAgeSex.mat');

Преобразуйте набор данных в объект groupedData, который является необходимым форматом данных для подходящей функции sbiofit. Объект groupedData позволяет вам устанавливать независимую переменную и имена переменных группы (если они существуют). Установите модули ID, Время, CentralConc, PeripheralConc, Возраст и переменные Sex. Модули являются дополнительными и только необходимыми для функции UnitConversion, которая автоматически преобразует соответствие с физическими количествами в одну сопоставимую модульную систему.

gData = groupedData(data);
gData.Properties.VariableUnits = {'','hour','milligram/liter','milligram/liter','',''};

Свойства IndependentVariableName и GroupVariableName были автоматически установлены в переменные Time и ID данных.

gData.Properties
ans = struct with fields:
                Description: ''
                   UserData: []
             DimensionNames: {'Row'  'Variables'}
              VariableNames: {1x6 cell}
       VariableDescriptions: {}
              VariableUnits: {1x6 cell}
         VariableContinuity: []
                   RowNames: {}
           CustomProperties: [1x1 matlab.tabular.CustomProperties]
          GroupVariableName: 'ID'
    IndependentVariableName: 'Time'

В целях рисунка используйте первые пять отдельных данных для обучения и 6-е отдельные данные для тестирования.

trainData = gData([gData.ID < 6],:);
testData  = gData([gData.ID == 6],:);

Отобразите данные об ответе для каждого индивидуума в наборе обучающих данных.

sbiotrellis(trainData,'ID','Time',{'CentralConc','PeripheralConc'});

Figure contains 6 axes. Axes 1 with title ID 1 contains 2 objects of type line. These objects represent CentralConc, PeripheralConc. Axes 2 with title ID 3 contains 2 objects of type line. Axes 3 with title ID 5 contains 2 objects of type line. Axes 4 with title ID 2 contains 2 objects of type line. Axes 5 with title ID 4 contains 2 objects of type line. Axes 6 is empty.

Пользуйтесь встроенной библиотекой PK, чтобы создать модель 2D отсека с дозированием вливания и устранением первого порядка, где уровень устранения зависит от разрешения и объема центрального отсека. Используйте объект configset включить модульное преобразование.

pkmd                                    = PKModelDesign;
pkc1                                    = addCompartment(pkmd,'Central');
pkc1.DosingType                         = 'Bolus';
pkc1.EliminationType                    = 'linear-clearance';
pkc1.HasResponseVariable                = true;
pkc2                                    = addCompartment(pkmd,'Peripheral');
model                                   = construct(pkmd);
configset                               = getconfigset(model);
configset.CompileOptions.UnitConversion = true;

Примите, что каждый индивидуум получает дозу шарика 100 мг во время = 0.

dose             = sbiodose('dose','TargetName','Drug_Central');
dose.StartTime   = 0;
dose.Amount      = 100;
dose.AmountUnits = 'milligram';
dose.TimeUnits   = 'hour';

Данные содержат измеренную плазменную концентрацию в центральных и периферийных отсеках. Сопоставьте эти переменные с соответствующими компонентами модели, которые являются Drug_Central и Drug_Peripheral.

responseMap = {'Drug_Central = CentralConc','Drug_Peripheral = PeripheralConc'};

Задайте объемы центральных и периферийных отсеков Центральное и Периферийное, межразделенное на отсеки разрешение Q12 и разрешение Cl_Central как параметры, чтобы оценить. Объект estimatedInfo позволяет вам опционально указать, что параметр преобразовывает, начальные значения и границы параметра. С тех пор и Центральный и Периферийный ограничиваются быть положительным, задать логарифмическое преобразование для каждого параметра.

paramsToEstimate    = {'log(Central)', 'log(Peripheral)', 'Q12', 'Cl_Central'};
estimatedParam      = estimatedInfo(paramsToEstimate,'InitialValue',[1 1 1 1]);

Используйте свойство 'CategoryVariableName' объекта estimatedInfo задать который категория использовать во время подбора кривой. Используйте 'Пол' в качестве группы к пригодному для разрешения Cl_Central и параметры Q12. Используйте 'Возраст' в качестве группы к пригодному для Центральных и Периферийных параметров.

estimatedParam(1).CategoryVariableName = 'Age';
estimatedParam(2).CategoryVariableName = 'Age';
estimatedParam(3).CategoryVariableName = 'Sex';
estimatedParam(4).CategoryVariableName = 'Sex';
categoryFit = sbiofit(model,trainData,responseMap,estimatedParam,dose)
categoryFit = 
  OptimResults with properties:

                   ExitFlag: 1
                     Output: [1x1 struct]
                  GroupName: []
                       Beta: [8x5 table]
         ParameterEstimates: [20x6 table]
                          J: [40x8x2 double]
                       COVB: [8x8 double]
           CovarianceMatrix: [8x8 double]
                          R: [40x2 double]
                        MSE: 0.1047
                        SSE: 7.5349
                    Weights: []
              LogLikelihood: -19.0159
                        AIC: 54.0318
                        BIC: 73.0881
                        DFE: 72
             DependentFiles: {1x3 cell}
    EstimatedParameterNames: {'Central'  'Peripheral'  'Q12'  'Cl_Central'}
             ErrorModelInfo: [1x3 table]
         EstimationFunction: 'lsqnonlin'

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

Постройте специфичные для категории предполагаемые результаты. Для Cl_Central и параметров Q12, все штекеры имели те же оценки, и так же для розеток. Для Центральных и Периферийных параметров у всех молодых индивидуумов были те же оценки, и так же для старых индивидуумов.

plot(categoryFit);

Figure contains 6 axes. Axes 1 with title Group 1 contains 4 objects of type line. These objects represent OBS1 (CentralConc), OBS2 (PeripheralConc), PRED1 (Central.Drug_Central), PRED2 (Peripheral.Drug_Peripheral). Axes 2 with title Group 3 contains 4 objects of type line. Axes 3 with title Group 5 contains 4 objects of type line. Axes 4 with title Group 2 contains 4 objects of type line. Axes 5 with title Group 4 contains 4 objects of type line. Axes 6 is empty.

Что касается тестирования целей, симулируйте ответы 6-го индивидуума, который является старым штекером. Поскольку вы оценили один набор параметров для категории Возраста (молодой по сравнению со старым) и другой набор для Сексуальной категории (штекер по сравнению с розеткой), можно симулировать ответы старого штекера даже при том, что нет такого индивидуума в обучающих данных.

Используйте предсказать метод, чтобы симулировать ответы. ynew содержит данные моделирования, и paramestim содержит оценки параметра, используемые в процессе моделирования.

[ynew,paramestim] = predict(categoryFit,testData,dose);

Постройте симулированные отклики старого штекера.

sbioplot(ynew);

Figure contains an axes. The axes with title States versus Time contains 2 objects of type line. These objects represent Central.Drug_Central, Peripheral.Drug_Peripheral.

paramestim переменная содержит предполагаемые параметры, используемые предсказать методом. Оценки параметра для соответствующих категорий были получены из categoryFit.ParameterEstimates свойства. А именно, Центральные и Периферийные оценки параметра получены из Старой группы, и Q12 и оценки параметра Cl_Central получены из Штекерной группы.

paramestim
paramestim=4×6 table
         Name         Estimate    StandardError    Group    CategoryVariableName    CategoryValue
    ______________    ________    _____________    _____    ____________________    _____________

    {'Central'   }     1.1993       0.0046483        6            {'Age'}               Old      
    {'Peripheral'}    0.55195        0.015098        6            {'Age'}               Old      
    {'Q12'       }     1.4969        0.074321        6            {'Sex'}               Male     
    {'Cl_Central'}    0.56363       0.0072862        6            {'Sex'}               Male     

Наложите результаты эксперимента на симулированных данных.

figure;
plot(testData.Time,testData.CentralConc,'LineStyle','none','Marker','d','MarkerEdgeColor','b');
hold on
plot(testData.Time,testData.PeripheralConc,'LineStyle','none','Marker','d','MarkerEdgeColor','r');
plot(ynew.Time,ynew.Data(:,1),'b');
plot(ynew.Time,ynew.Data(:,2),'r');
hold off
legend({'OBS1(CentralConc)','OBS2(PeripheralConc)',...
        'PRED1(Central.Drug\_Central)','PRED2(Peripheral.Drug\_Peripheral)'});

Figure contains an axes. The axes contains 4 objects of type line. These objects represent OBS1(CentralConc), OBS2(PeripheralConc), PRED1(Central.Drug\_Central), PRED2(Peripheral.Drug\_Peripheral).

Ссылки

[1] И, T-M., Kitano, H. и Саймон, M. (2003). Количественная характеристика дрожжей гетеротримерный цикл белка G. PNAS. 100, 10764–10769.

Смотрите также

| |

Введенный в R2014a