Моделируйте и оценивайте подобранную модель 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 свойство. Используйте этот метод, когда вы хотите оценить подобранную модель и предсказать ответы с помощью новых данных и/или информации о дозах.
resultsObj - Результаты оценкиOptimResults | объекта NLINResults объектРезультаты оценки, заданные как OptimResults
object или NLINResults object, который содержит результаты оценки, возвращенные sbiofit. Это должен быть скалярный объект.
data - Время выхода или сгруппированные данныеgroupedData объектВыводит время или сгруппированные данные, заданные как вектор, или массив ячеек векторов с выходным временем, или groupedData
object.
Если это вектор временных точек, predict моделирует модель с новыми временными точками, используя оценки параметров из объекта результатов resultsObj.
Если это массив ячеек из векторов временных точек, predict n раз симулирует модель, используя время выхода из каждого временного вектора, где n - длина data.
Если это groupedData объект должен иметь независимую переменную, такую как Time. Она также должна иметь групповую переменную, если обучающие данные, используемые для подбора кривой, имеют такую переменную. Можно использовать groupedData объект, чтобы запросить различные комбинации категорий, если resultsObj содержит оценки параметров для каждой категории. predict моделирует модель для каждой группы с заданными категориями. Например, предположим, что у вас есть набор оценок параметров для половой категории (мужчины и женщины) и возрастной категории (молодые и старые) в ваших обучающих данных. Можно использовать predict моделировать ответы старого мужчины (или любой другой комбинации), хотя такой пациент может не существовать в обучающих данных.
Если на resultsObj из оценки параметров конкретной категории, data должен быть groupedData объект.
Примечание
Если UnitConversion включен для базовой модели SimBiology, которая использовалась для подбора кривой и data является groupedData объект, data необходимо задать допустимые модули через data.Properties.VariableUnits свойство. Если это численный вектор или массив ячеек из векторов временных точек, predict использует TimeUnits модели.
dosing - Информация о дозах[] | 2-D матрицу объектов дозы SimBiologyИнформация о дозах, заданная как пустой массив [] или 2-D матрица объектов дозы SimBiology (ScheduleDose object или RepeatDose object). Если dosing является матрицей объектов дозы, матрица должна содержать дозы по умолчанию или соответствовать исходным данным дозирования, используемым с sbiofit. То есть дозируйте объекты в dosing должны иметь те же значения свойств дозы (такие как TargetName) или должны быть параметризованы так же, как и исходные данные дозирования. Например, предположим, что исходная дозирующая матрица имеет два столбца доз, где дозы в первой колонке-мишени x и дозы во второй колонке-мишени y. Затем dosing должны иметь дозы в первом столбце, нацеленные на виды x и во втором столбце, нацеленные на виды y.
Если он пуст, никакие дозы не применяются во время симуляции, даже если модель имеет активные дозы.
Если не пустой, матрица должна иметь одну строку или по одной строке на группу во входных данных. Если она имеет одну строку, те же дозы применяются ко всем группам во время симуляции. Если она имеет несколько строк, каждая строка применяется к отдельной группе в том же порядке, в котором группы появляются во входных данных. Если одни группы (или временные векторы) требуют больше доз, чем другие, то заполните матрицу дозами по умолчанию (манекен).
Допускается использование нескольких столбцов, чтобы можно было применить несколько объектов дозы к каждой группе или временному вектору. Все дозы в столбце должны быть дозами по умолчанию или должны ссылаться на те же компоненты в модели (для образца дозы должны иметь ту же цель дозы TargetName) и должны иметь согласованные параметризованные свойства, как в исходных данных дозирования, используемых с sbiofit. Для примера, если Amount свойство дозы, используемой в оригинале sbiofit вызов параметризован в параметр с параметрами model-scoped 'A', все дозы для соответствующей группы (столбца) в dosing должны иметь Amount свойство параметризовано в 'A'.
Доза по умолчанию имеет значения по умолчанию для всех свойств, кроме Name свойство. Создайте дозу по умолчанию следующим образом.
d1 = sbiodose('d1');В дополнение к ручному построению объектов дозы с помощью sbiodose, если входные данные являются groupedData объект и имеет информацию о дозах, вы можете использовать createDoses способ конструирования доз из него.
Количество строк в dosing матрица и количество групп или выходных временных векторов в data определить общее количество результатов моделирования в выход ynew. Для получения дополнительной информации см. таблицу в ynew описание аргумента.
Примечание
Если UnitConversion включен для базовой модели SimBiology, которая использовалась для подбора кривой, dosing необходимо указать допустимую величину и временные модули.
ynew - Результаты симуляцииSimData объектыРезультаты симуляции, возвращенные как вектор SimData объекты. Информация о состояниях представлена в ynew являются состояниями, которые были включены в responseMap входной параметр sbiofit а также любые другие состояния, перечисленные в StatesToLog свойство опций среды выполнения (RuntimeOptions) модели SimBiology.
Общее количество результатов симуляции в ynew зависит от количества групп или выходных временных векторов в data и количество строк в dosing матрица.
Количество групп или выходных временных векторов в data | Количество строк в dosing матрица | Результаты симуляции |
|---|---|---|
|
| Общее количество Дозы во время симуляции не применяются. |
|
| Общее количество Данная строка доз применяется во время симуляции. |
| N | Общее количество Каждая строка |
N |
| Общее количество Дозы во время симуляции не применяются. |
N |
| Общее количество К каждой симуляции применяется одна и та же строка доз. |
| N | N | Общее количество Каждая строка |
| M | N | Функция выдает ошибку при M ≠ N. |
parameterEstimates - Предполагаемые значения параметровПредполагаемые значения параметров, возвращенные как таблица. Это идентично resultsObj.ParameterEstimates свойство. The predict метод использует эти значения параметров во время симуляции.
Этот пример использует модель гетеротримерного G-белка дрожжей и экспериментальные данные, представленные [1]. Для получения дополнительной информации о модели смотрите раздел «Фон» в Сканировании параметров, Оценке параметров и Анализе чувствительности в дрожжевом гетеротримерном цикле 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);

В этом примере показано, как оценить специфичные для категории (такие как молодая от старой, мужская от женской) параметры PK с помощью данных профиля от нескольких индивидуумов, использующих модель с двумя отсеками. Параметрами для оценки являются объемы центрального и периферийного отсеков, зазор и межкомпартментальная очистка.
Синтетические данные, используемые в этом примере, содержат временное течение концентраций в плазме нескольких индивидуумов после болюсной дозы (100 мг), измеренной в разное время как для центрального, так и для периферического отделения. Он также содержит категориальные переменные, а именно Пол и Возраст.
clear
load('sd5_302RAgeSex.mat');Преобразуйте набор данных в объект groupedData, который является необходимым форматом данных для функции sbiofit аппроксимации. Объект groupedData позволяет вам задать независимые имена переменных и переменных групп (если они существуют). Установите модули переменных ID, Time, CentralConc, PeripheralConc, Age и 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'
В рисунок целях используйте первые пять индивидуальных данных для обучения и шестые индивидуальные данные для проверки.
trainData = gData([gData.ID < 6],:); testData = gData([gData.ID == 6],:);
Отобразите данные отклика для каждого индивидуума в набор обучающих данных.
sbiotrellis(trainData,'ID','Time',{'CentralConc','PeripheralConc'});

Используйте встроенную библиотеку PK для создания двухкамерной модели с инфузионным дозированием и устранением первого порядка, где скорость устранения зависит от зазора и объема центрального отделения. Используйте объект 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'};Укажите объемы центрального и периферийного отсеков Central и Peripheral, межкомпартментарные Q12 клиренса и Cl_Central клиренса в качестве параметров для оценки. Объект estimentedInfo позволяет вам опционально задать преобразования параметров, начальные значения и ограничения параметров. Поскольку и Central, и Peripheral ограничены положительными, задайте логарифмическое преобразование для каждого параметра.
paramsToEstimate = {'log(Central)', 'log(Peripheral)', 'Q12', 'Cl_Central'};
estimatedParam = estimatedInfo(paramsToEstimate,'InitialValue',[1 1 1 1]);Используйте свойство 'CategoryVariableName' объекта estimatedInfo, чтобы указать, какую категорию использовать во время подбора кривой. Используйте 'Sex' в качестве группы для соответствия параметрам Cl_Central и Q12 зазора. Используйте 'Age' в качестве группы, подходящей для параметров Central и Peripheral.
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);

Что касается целей проверки, моделируйте ответы 6-ого индивидуума, который является старым мужчиной. Поскольку вы оценили один набор параметров для категории Возраст (молодой по сравнению со старым) и другой набор для категории Пол (мужской по сравнению с женским), можно моделировать ответы старого мужчины, даже несмотря на отсутствие таких индивидуумов в обучающих данных.
Используйте метод предсказания, чтобы симулировать отклики. тис содержит данные моделирования и параметр содержит оценки параметров, используемые во время симуляции.
[ynew,paramestim] = predict(categoryFit,testData,dose);
Постройте график симулированных откликов старого самца.
sbioplot(ynew);

Переменная paramestim содержит предполагаемые параметры, используемые методом предсказания. Оценки параметров для соответствующих категорий были получены из свойства categoryFit.ParameterEstimes. В частности, оценки параметров Central и Peripheral получают из Старой группы, а Q12 и Cl_Central оценки параметров получают из группы Male.
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)'});

[1] Yi, T-M., Kitano, H. and Simon, M. (2003). Количественная характеристика дрожжевого гетеротримерного G-белкового цикла. PNAS. 100, 10764–10769.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.