Выполните глобальный анализ чувствительности путем вычисления индексов Соболь первого и общего порядков (требует Statistics and Machine Learning Toolbox)
выполняет глобальный анализ чувствительности [1] на модели SimBiology sobolResults = sbiosobol(modelObj,params,observables)modelObj путем разложения отклонений observables относительно входов чувствительности params.
использует дополнительные опции, заданные одним или несколькими аргументами пары "имя-значение".sobolResults = sbiosobol(modelObj,params,observables,Name,Value)
Загрузка модели роста опухоли.
sbioloadproject tumor_growth_vpop_sa.sbprojПолучите вариант с предполагаемыми параметрами и дозой для применения к модели.
v = getvariant(m1);
d = getdose(m1,'interval_dose');Получите активный набор настроек и установите вес опухоли как ответ.
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, вычислив индексы Соболя первого и общего порядков с помощью sbiosobol. Задайте 'ShowWaitBar' на true чтобы показать прогресс симуляции. По умолчанию функция использует 1000 выборок параметров, чтобы вычислить индексы Соболь [1].
sobolResults = sbiosobol(m1,modelParamNames,outputName,'Variants',v,'Doses',d,'ShowWaitBar',true)
sobolResults =
Sobol with properties:
Time: [444x1 double]
SobolIndices: [5x1 struct]
Variance: [444x1 table]
Observables: {'[Tumor Growth Model].tumor_weight'}
ParameterSamples: [1000x5 table]
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);
Постройте график хода индексов Соболь первого и общего порядков.
h = plot(sobolResults);
% Resize the figure.
h.Position(:) = [100 100 1280 800];![Figure contains 12 axes. Axes 1 with title [Tumor Growth Model].tumor_weight contains 3 objects of type line. Axes 2 with title [Tumor Growth Model].tumor_weight contains 3 objects of type line. Axes 3 contains 3 objects of type line. Axes 4 contains 3 objects of type line. Axes 5 contains 3 objects of type line. Axes 6 contains 3 objects of type line. Axes 7 contains 3 objects of type line. Axes 8 contains 3 objects of type line. Axes 9 contains 3 objects of type line. Axes 10 contains 3 objects of type line. Axes 11 contains 3 objects of type line. Axes 12 contains an object of type line.](../../examples/simbio/win64/PerformGSAByComputingFirstAndTotalSobolIndicesExample_04.png)
Индекс Соболя первого порядка параметра входа приводит долю общего отклонения отклика, который можно отнести к изменениям только в параметре входа. Индекс общего порядка дает долю общего отклонения отклика, которая может быть атрибутирована любым изменениям параметра joint, которые включают изменения входного параметра.
Из графиков индексов Соболь, параметров L1 и w0 по-видимому, являются наиболее чувствительными параметрами к весу опухоли до применения дозы при t = 7. Но после применения дозы k1 и k2 стать более чувствительными параметрами и внести наибольший вклад в стадию дозы веса опухоли. График общего отклонения также показывает большое отклонение для стадии после дозы в t > 35, чем для стадии до дозы роста опухоли, что указывает на то, что k1 и k2 возможно, более важными параметрами для дальнейшего исследования. Доля необъяснимого отклонения показывает некоторое отклонение около t = 33, но график полного отклонения показывает небольшое отклонение при t = 33, что означает, что необъяснимое отклонение может быть незначительной. Доля необъяснимого отклонения вычисляется как 1 - (сумма всех индексов Соболя первого порядка), и общее отклонение вычисляется с помощью var(response), где response - реакция модели в каждой временной точке.
Можно также отобразить величины чувствительности в столбиковую диаграмму.
bar(sobolResults)
![Figure contains an axes. The axes with title [Tumor Growth Model].tumor_weight contains 22 objects of type patch, line. These objects represent first order, total order.](../../examples/simbio/win64/PerformGSAByComputingFirstAndTotalSobolIndicesExample_05.png)
Можно задать больше выборок, чтобы увеличить точность индексов Соболь, но для завершения симуляции может потребоваться больше времени. Использование addsamples чтобы добавить больше выборки. Для примера, если вы задаете 1500 выборок, функция выполняет 1500 * (2 + number of input parameters) симуляции.
gsaMoreSamples = addsamples(gsaResults,1500)
Свойство SimulationInfo объекта результата содержит различную информацию для вычисления индексов Соболь. Например, данные симуляции модели (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А. Предположим, что четвертый столбец содержит один или несколько неудачных запуски симуляции. Получите данные моделирования и значения выборки, используемые для этой симуляции, используя getSimulationResults.
[samplesUsed,sd,validruns] = getSimulationResults(sobolResults,4);
Можно добавить пользовательские выражения как наблюдаемые и вычислить индексы Соболь для добавленных наблюдаемых. Для примера можно вычислить индексы Соболя для максимального веса опухоли путем определения пользовательского выражения следующим образом.
% 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);
modelObj - SimBiology модельSimBiology модель, заданная как SimBiology model object.
params - Имена параметров модели, видов или отсековИмена параметров модели, видов или отделов, заданные как вектор символов, строка, строковый вектор или массив ячеек из векторов символов.
Пример: ["k1","k2"]
Типы данных: char | string | cell
observables - Моделирование откликовМоделируйте отклики, заданные как вектор символов, строка, строковый вектор или массив ячеек из векторов символов. Задайте имена видов, параметров, отсеков или observables.
Пример: ["tumor_growth"]
Типы данных: char | string | cell
Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.
sobolResults = sbiosobol(modelObj,params,observables,'ShowWaitbar',true) задает отображение индикатора прогресса симуляции.'Bounds' - Параметрические границыГраницы параметра, заданные как разделенная разделенными запятой парами, состоящая из 'Bounds' и числовую матрицу с двумя столбцами. Первый столбец содержит нижние границы, а второй - верхние границы. Количество строк должно быть равно количеству параметров в params.
Если параметр имеет ненулевое значение, ограничения по умолчанию составляют ± 10% от значения. Если значение параметров меньше нуля, границы по умолчанию [0 1].
Пример: [0.5 5]
Типы данных: double
'Doses' - Дозы для использования во время симуляцийScheduleDose | объекта RepeatDose объект | вектор объектов дозыДозы для использования во время симуляций модели, заданные как разделенная запятой пара, состоящие из 'Doses' и a ScheduleDose или RepeatDose объект или вектор объектов дозы.
'Variants' - Варианты, применяемые перед симуляциямиВарианты, применяемые до симуляций модели, заданные как разделенная запятой пара, состоящие из 'Variants' и объект варианта или вектор варианта объектов.
Когда существует несколько вариантов и если существуют повторяющиеся спецификации для значения свойства, последнее вхождение для значения свойства в массиве вариантов используется во время симуляции.
'NumberSamples' - Количество выборок для вычисления индексов Соболь1000 (по умолчанию) | положительное целое числоКоличество выборок для вычисления индексов Соболь, заданное как разделенная разделенными запятой парами, состоящая из 'NumberSamples' и положительное целое число. Функция требует (количество входных параметров моделировать симуляции для вычисления индексов Соболь первого и общего порядков.params + 2) * NumberSamples
Типы данных: double
'SamplingMethod' - Метод для генерации выборок параметров'Sobol' (по умолчанию) | вектор символов | строкаМетод для генерации выборок параметров, заданный как разделенная разделенными запятой парами, состоящая из 'SamplingMethod' и вектор символов или строка. Допустимые опции:
'Sobol' - Используйте низкорасходную последовательность Соболя для генерации выборок.
'Halton' - Используйте низко-несоответствующую последовательность Хэлтона, чтобы сгенерировать выборки.
'lhs' - Используйте низкорасходные латинские выборки гиперкуба.
'random' - Используйте равномерно распределенные случайные выборки.
Типы данных: char | string
'StopTime' - Время остановки симуляцииВремя остановки симуляции, заданное как разделенная разделенными запятой парами, состоящая из 'StopTime' и неотрицательный скаляр. Если вы не задаете ни одного StopTimeни OutputTimesфункция использует время остановки из активной конфигурации модели модели. Вы не можете задать оба StopTime и OutputTimes.
Типы данных: double
'OutputTimes' - Время вывода симуляцииВремя вывода симуляции, заданное как разделенная разделенными запятой парами, состоящая из 'OutputTimes' и числовой вектор. Функция вычисляет индексы Соболь в этих выходах времени точек. Вы не можете задать оба StopTime и OutputTimes. По умолчанию функция использует время выхода первой симуляции модели.
Пример: [0 1 2 3.5 4 5 5.5]
Типы данных: double
'UseParallel' - Флаг, чтобы запустить симуляции модели параллельноfalse (по умолчанию) | trueФлаг для выполнения симуляций модели параллельно, заданный как разделенная разделенными запятой парами, состоящая из 'UseParallel' и true или false.
Типы данных: logical
'Accelerate' - Флаг для включения ускорения моделиtrue (по умолчанию) | falseФлаг для включения ускорения модели, заданный как разделенная разделенными запятой парами, состоящая из 'Accelerate' и true или false.
Типы данных: logical
'InterpolationMethod' - Метод интерполяции симуляций модели"interp1q" (по умолчанию) | вектор символов | строкаМетод интерполяции симуляций модели к новым временам выхода, заданный как разделенная разделенными запятой парами, состоящая из 'InterpolationMethod' и вектор символов или строка. Далее приводятся допустимые опции.
Типы данных: char | string
'ShowWaitbar' - Флаг, чтобы показать прогресс симуляций моделиfalse (по умолчанию) | trueФлаг, чтобы показать прогресс симуляций модели путем отображения индикатора прогресса, заданного как разделенная разделенными запятой парами, состоящая из 'ShowWaitbar' и true или false. По умолчанию панель ожидания не отображается.
Типы данных: logical
sobolResults - Результаты, содержащие индексы СобольSimBiology.gsa.Sobol объектРезультаты, содержащие индексы Соболь первого и общего порядков, возвращенные как SimBiology.gsa.Sobol объект. Объект также содержит значения выборки параметров и симуляции модели данные, используемые для вычисления индексов Соболь.
Объект результатов может содержать значительный объем данных моделирования (SimData). Размер объекта превышает (1 + number of observables) * number of output time points * (2 + number of parameters) * number of samples * 8 байты. Для примера, если у вас есть один наблюдаемый, 500 выходы временных точек, 8 параметров и 100 000 выборок, размер объекта (1 + 1) * 500 * (2 + 8) * 100000 * 8 bytes = 8 ГБ. Если нужно сохранить такие большие объекты, используйте этот синтаксис:
save(fileName,variableName,'-v7.3');sbiosobol реализует метод Saltelli [1] для вычисления индексов Соболь.
Рассмотрим ответ модели SimBiology Y выраженный как математическая модель , где Xi является параметром модели и i = 1,…,k.
Индекс Соболь первого порядка (Si) дает долю полного отклонения отклика V(Y) что может быть связано с изменениями только в Xi. Si определяется следующим образом.
Индекс Соболь общего порядка (STi) дает долю общего отклонения отклика V(Y) который можно отнести к любым изменениям параметров соединений, которые включают изменения Xi. STi определяется следующим образом.
Чтобы вычислить отдельные значения для Y, соответствующих выборкам параметров X1, X1,..., Xk, рассмотрите две независимые матрицы выборки A и B.
n - размер выборки. Каждая строка матриц A и B соответствует одному набору выборок параметров, что является одной реализацией значений параметров модели.
Оценки для Si и STi получаются из результатов симуляции модели с помощью значений выборки из матриц A, B и , которая является матрицей, где все столбцы из A, кроме i-го столбца, который из B для i = 1, 2, …, params.
Формулы для аппроксимации индексов Соболя первого и общего порядков следующие.
f(A), f(B), и являются ли результаты симуляции модели с использованием значений выборки параметра из матриц A, B и .
Матричная A соответствует ParameterSamples свойство объекта результатов Соболь (resultsObj.ParameterSamples). Матричная B соответствует SupportSamples свойство (resultsObj.SimulationInfo.SupportSamples).
матрицы хранятся в SimData структура SimulationInfo свойство (resultsObj.SimulationInfo.SimData). Размер SimulationInfo.SimData является NumberSamples-by-params + 2, где NumberSamples - количество выборок, а param - количество параметров входа. Количество столбцов 2 + params потому что первый столбец SimulationInfo.SimData содержит результаты симуляции модели с использованием выборки матрицы A. Второй столбец содержит результаты симуляции с помощью SupportSamples, который является другим выборочным матричным B. Остальные столбцы содержат результаты симуляции с помощью , , …, , …, . Посмотрите getSimulationResults чтобы извлечь результаты симуляции модели и выборки для заданного i-го индекса () из SimulationInfo.SimData массив.
[1] Салтелли, Андреа, Паола Аннони, Ивано Адзини, Франческа Камполонго, Марко Ратто и Стефано Тарантола. "Основанный на дисперсии анализ чувствительности выходов модели. Проект и оценка общего индекса чувствительности. " Компьютерная физика Коммуникации 181, № 2 (февраль 2010): 259-70. https://doi.org/10.1016/j.cpc.2009.09.018.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.