График сначала - и общий порядок индексы Sobol и отклонения
Загрузите модель роста опухоли.
sbioloadproject tumor_growth_vpop_sa.sbproj
Заставьте вариант предполагаемыми параметрами и дозой применяться к модели.
v = getvariant(m1);
d = getdose(m1,'interval_dose');
Получите активный configset и установите вес опухоли как ответ.
cs = getconfigset(m1);
cs.RuntimeOptions.StatesToLog = 'tumor_weight';
Симулируйте модель и постройте профиль роста опухоли.
sbioplot(sbiosimulate(m1,cs,v,d));
Выполните глобальный анализ чувствительности (GSA) на модели, чтобы найти параметры модели, к которым рост опухоли чувствителен.
Во-первых, получите параметры модели интереса, которые вовлечены в фармакодинамику роста опухоли. Задайте ответ модели как вес опухоли.
modelParamNames = {'L0','L1','w0','k1','k2'}; outputName = 'tumor_weight';
Затем выполните GSA путем вычисления первого - и общий порядок индексы Sobol с помощью sbiosobol
. Установите 'ShowWaitBar'
к true
показать прогресс симуляции. По умолчанию функция использует 1 000 выборок параметра, чтобы вычислить индексы Sobol [1].
rng('default'); sobolResults = sbiosobol(m1,modelParamNames,outputName,'Variants',v,'Doses',d,'ShowWaitBar',true)
sobolResults = Sobol with properties: Time: [444x1 double] SobolIndices: [5x1 struct] Variance: [444x1 table] ParameterSamples: [1000x5 table] Observables: {'[Tumor Growth Model].tumor_weight'} SimulationInfo: [1x1 struct]
Можно изменить количество отсчетов путем определения 'NumberSamples'
аргумент пары "имя-значение". Функция требует в общей сложности (number of input parameters + 2) * NumberSamples
симуляции модели.
Покажите средний ответ модели, результаты симуляции и теневую область, покрывающую 90% результатов симуляции.
plotData(sobolResults);
Можно настроить область квантиля к различному проценту путем определения 'Alphas'
для более низких и верхних квантилей всех ответов модели. Например, альфа-значение 0,1 графиков теневая область между 100 * alpha
и 100 * (1 - alpha)
квантили всех симулированных ответов модели.
plotData(sobolResults,'Alphas',0.1);
Постройте курс времени первого - и общий порядок индексы Sobol.
h = plot(sobolResults);
% Resize the figure.
h.Position(:) = [100 100 1280 800];
Индекс Sobol первого порядка входного параметра дает часть полного отклонения ответа, которое может быть приписано изменениям одного только входного параметра. Индекс общего порядка дает часть полного отклонения ответа, которое может быть приписано любым объединенным изменениям параметра, которые включают изменения входного параметра.
Из графиков индексов Sobol, параметры L1
и w0
кажется, самые чувствительные параметры к весу опухоли, прежде чем доза была применена в t = 7. Но после того, как доза применяется, k1
и k2
станьте более чувствительными параметрами и способствуйте больше всего дозируемому после того, как этапу веса опухоли. Общий график отклонения также показывает большее отклонение для этапа после-того,-как-дозы в t> 35, чем для этапа прежде-чем-дозы роста опухоли, указывая на тот k1
и k2
могут быть более важные параметры, чтобы заняться расследованиями далее. Часть необъясненного отклонения показывает некоторое отклонение приблизительно в t = 33, но общий график отклонения показывает мало отклонения в t = 33, означая, что необъясненное отклонение могло быть незначительным. Часть необъясненного отклонения вычисляется как 1 - (сумма всех индексов Sobol первого порядка), и общее отклонение вычисляется с помощью var(response)
, где response
ответ модели в каждом моменте времени.
Можно также отобразить величины чувствительности в столбиковой диаграмме. Более темные цвета означают, что те значения происходят чаще по курсу всего времени.
bar(sobolResults);
Можно задать больше выборок, чтобы увеличить точность индексов Sobol, но симуляция может занять больше времени, чтобы закончиться. Используйте addsamples
добавить больше выборок. Например, если вы задаете 1 500 выборок, функция выполняет 1500 * (2 + number of input parameters)
симуляции.
gsaMoreSamples = addsamples(gsaResults,1500)
Свойство SimulationInfo объекта результата содержит различную информацию для вычисления индексов Sobol. Например, данные о симуляции модели (SimData) для каждой симуляции с помощью набора выборок параметра хранятся в SimData
поле свойства. Это поле является массивом SimData
объекты.
sobolResults.SimulationInfo.SimData
SimBiology SimData Array : 1000-by-7 Index: Name: ModelName: DataCount: 1 - Tumor Growth Model 1 2 - Tumor Growth Model 1 3 - Tumor Growth Model 1 ... 7000 - Tumor Growth Model 1
Можно узнать, перестала ли какая-либо симуляция модели работать во время расчета путем проверки ValidSample
поле SimulationInfo
. В этом примере поле не показывает не пройдено запусков симуляции.
all(sobolResults.SimulationInfo.ValidSample)
ans = 1x7 logical array
1 1 1 1 1 1 1
SimulationInfo.ValidSample
таблица логических значений. Это имеет тот же размер как SimulationInfo.SimData
. Если ValidSample
указывает, что любые симуляции перестали работать, можно получить больше информации о тех запусках симуляции и выборках, используемых для тех запусков путем извлечения информации из соответствующего столбца SimulationInfo.SimDat
a. Предположим, что четвертый столбец содержит один или несколько не пройдено запусков симуляции. Получите данные моделирования и демонстрационные значения, используемые для той симуляции с помощью getSimulationResults
.
[samplesUsed,sd,validruns] = getSimulationResults(sobolResults,4);
Можно добавить пользовательские выражения как observables и вычислить индексы Sobol для добавленного observables. Например, можно вычислить индексы Sobol для максимального веса опухоли путем определения пользовательского выражения можно следующим образом.
% Suppress an information warning that is issued during simulation. warnSettings = warning('off', 'SimBiology:sbservices:SB_DIMANALYSISNOTDONE_MATLABFCN_UCON'); % Add the observable expression. sobolObs = addobservable(sobolResults,'Maximum tumor_weight','max(tumor_weight)','Units','gram');
Постройте вычисленные результаты симуляции, показывающие 90%-ю область квантиля.
h2 = plotData(sobolObs); h2.Position(:) = [100 100 1280 800];
Можно также удалить заметное путем определения его имени.
gsaNoObs = removeobservable(sobolObs,'Maximum tumor_weight');
Восстановите настройки предупреждения.
warning(warnSettings);
sobolObj
— Результаты, содержащие индексы SobolSimBiology.gsa.Sobol
объектРезультаты, содержащие первое - и общий порядок индексы Sobol в виде SimBiology.gsa.Sobol
объект.
Задайте дополнительные разделенные запятой пары Name,Value
аргументы. Name
имя аргумента и Value
соответствующее значение. Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN
.
h = plot(results,'Observables','tumor_weight')
задает, чтобы построить индексы Sobol, соответствующие ответу веса опухоли.Parameters
— Введите параметры, чтобы построитьВведите параметры, чтобы построить в виде вектора символов, строки, вектора строки, массива ячеек из символьных векторов или вектора из положительной целочисленной индексации в столбцы resultsObject.ParameterSamples
таблица. Используйте этот аргумент значения имени, чтобы выбрать параметры и построить их соответствующие результаты GSA. По умолчанию все входные параметры включены в график.
Типы данных: double |
char
| string
| cell
Observables
— Ответы модели или observables, чтобы построитьОтветы модели или observables, чтобы построить в виде вектора символов, строки, представляют в виде строки вектор, массив ячеек из символьных векторов или вектор из положительной целочисленной индексации в resultsObject.Observables
. По умолчанию графики функций GSA заканчиваются для всех ответов модели или observables.
Типы данных: double |
char
| string
| cell
Color
— Цвет первых - и общий порядок индексы SobolЦвет первого - и общий порядок индексы Sobol в виде разделенной запятой пары, состоящей из 'Color'
и трехэлементный вектор-строка. По умолчанию функция использует первый MATLAB® цвет по умолчанию для первого порядка и второй цвет по умолчанию для общего порядка. Чтобы просмотреть порядок цвета по умолчанию, введите get(groot,'defaultAxesColorOrder')
или смотрите свойство ColorOrder.
Пример: 'Color',[0.4,0.3,0.2]
Типы данных: double
VarianceColor
— Цвет общих и необъясненных отклонений
(значение по умолчанию) | трехэлементный вектор-строкаЦвет общих и необъясненных отклонений в виде разделенной запятой пары, состоящей из 'VarianceColor'
и трехэлементный вектор-строка. По умолчанию функция использует цветной черный [0,0,0]
.
Пример: 'VarianceColor',[0.2,0.5,0.8]
Типы данных: double
DelimiterColor
— Цвет разграничивания линий
(значение по умолчанию) | трехэлементный вектор-строкаЦвет общих и необъясненных отклонений в виде разделенной запятой пары, состоящей из 'DelimiterColor'
и трехэлементный вектор-строка. По умолчанию функция использует цветной черный [0,0,0]
.
Пример: 'DelimiterColor',[0.2,0.5,0.8]
Типы данных: double
h
указательОбработайте к фигуре в виде указателя фигуры.
[1] Сальтелли, Андреа, Паола Аннони, Ivano Azzini, Франческа Камполонго, Марко Ратто и Стефано Тарантола. “Основанный на отклонении Анализ чувствительности Выхода Модели. Проект и Средство оценки для Общего индекса Чувствительности”. Computer Physics Communications 181, № 2 (февраль 2010): 259–70. https://doi.org/10.1016/j.cpc.2009.09.018.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.