SimBiology.gsa.Sobol

Объект, содержащий индексы Соболь первого и общего порядков

Описание

The SimBiology.gsa.Sobol объект содержит результаты глобального анализа чувствительности, возвращенные sbiosobol. Объект содержит вычисленные индексы Соболя первого и общего порядков, связанные с разложением отклонения выхода модели относительно входов чувствительности [1].

Создание

Создайте SimBiology.gsa.Sobol использование объекта sbiosobol.

Свойства

расширить все

Это свойство доступно только для чтения.

Выборочные значения параметров, заданные как таблица. Значения выборки параметров используются для аппроксимации индексов Соболь. Для получения дополнительной информации см. Saltelli Method to Compute Sobol Indices.

Типы данных: table

Это свойство доступно только для чтения.

Имена ответов модели или наблюдаемых, заданные как массив ячеек из векторов символов.

Типы данных: char

Это свойство доступно только для чтения.

Временные точки, в которых вычисляются индексы Соболь, заданные в виде столбца числового вектора. Свойство [] если все наблюдаемые являются скалярами.

Типы данных: double

Это свойство доступно только для чтения.

Вычисленные индексы соболя, заданные как массив структур. Размер массива [params,observables], где params - количество параметров входа, а observables - количество наблюдаемых.

Каждая структура содержит следующие поля.

  • Parameter - Имя входного параметра, заданное как вектор символов

  • Observable - Имя наблюдаемого, заданное как вектор символов

  • FirstOrder - Индекс Соболя первого порядка, заданный как числовой вектор

  • TotalOrder - индекс Соболь общего порядка, заданный как числовой вектор.

Если все наблюдаемые скаляры, FirstOrder и TotalOrder поля заданы как скаляры. Если некоторые наблюдаемые являются скалярами, а некоторые - векторами, FirstOrder и TotalOrder являются числовыми векторами длины Time. Скалярные наблюдаемые являются скалярно-расширенными, где каждая временная точка имеет одинаковое значение.

Типы данных: struct

Это свойство доступно только для чтения.

Значения отклонений для временных курсов наблюдаемых значений, заданные как таблица. Каждый столбец таблицы содержит значения отклонений для временных курсов каждого наблюдаемого.

Если все наблюдаемые являются скалярами, то Variance таблица имеет одну строку. Если некоторые наблюдаемые являются скалярами, а некоторые - векторами, то отклонения для скалярных наблюдаемых являются скалярно-расширенными, где каждая строка имеет одинаковое значение.

The VariableNames свойство таблицы (Variance.Properties.VariableNames) - массив ячеек из векторов символов, содержащий имена наблюдаемых объектов, предоставляемых в качестве входов sbiosobol. При необходимости имена усекаются. The VariableDescriptions свойство содержит необрезанные наблюдаемые имена.

Типы данных: table

Это свойство доступно только для чтения.

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

  • SimFunctionSimFunction объект, используемый для симуляции откликов модели или наблюдаемых.

  • SimDataSimData массив размера [NumberSamples,2 + params], где NumberSamples - количество выборок, а params - количество параметров входа.

    • Первый столбец содержит результаты симуляции модели из ParameterSamples.

    • Второй столбец содержит результаты симуляции из SupportSamples.

    • Остальные столбцы содержат результаты симуляции из комбинаций значений параметров из ParameterSamples и SupportSamples. Для получения информации о извлечении результатов симуляции модели и выборок для заданного столбца (индекса) из этого SimData массив, см. getSimulationResults. Для получения дополнительной информации о том, как вычисляются индексы Соболь, смотрите Метод Салтелли для вычисления индексов Соболь.

  • OutputTimes - Численный вектор-столбец, содержащий общий временной вектор всех SimData объекты.

  • Bounds - Числовая матрица размера [params,2]. params - количество параметров входа. Первый столбец содержит нижние границы, а второй - верхние границы для входов чувствительности.

  • DoseTables - Массив клеток из таблиц доз, используемых для SimFunction оценка. DoseTables - выходы getTable(doseInput), где doseInput - значение, заданное для 'Doses' аргумент пары "имя-значение" в вызове sbiosobol или sbiompgsa. Если дозы не применяются, это поле устанавливается на [].

  • ValidSample - Логическая матрица размера [NumberSamples,2 + params] указывает, не удалось ли выполнить результат симуляции для конкретной выборки. Повторная дискретизация данных моделирования (SimData) может привести к NaN значения, если данные экстраполированы. Такие SimData указаны как недопустимые.

  • InterpolationMethod - Имя метода интерполяции для SimData.

  • SamplingMethod - Имя метода выборки, используемого для рисования ParameterSamples.

  • RandomState - Структура, содержащая состояние rng перед рисованием ParameterSamples.

  • SupportSamples - Таблица выборочных значений параметров, используемых для аппроксимации индексов Соболя. Для получения дополнительной информации см. Saltelli Method to Compute Sobol Indices.

Типы данных: struct

Функции объекта

resampleПовторный приём индексов Соболь к новому временному вектору
addobservableВычислите индексы Соболя для нового наблюдаемого выражения
removeobservableУдалите индексы наблюдаемых веществ
getSimulationResultsИзвлечение результатов симуляции модели и значений выборок, используемых для вычисления индексов Соболь
addsamplesДобавьте дополнительные выборки к индексам Соболь
plotDataПостройте сводные данные квантилей симуляций модели из анализа глобальной чувствительности (требует Statistics and Machine Learning Toolbox)
plotПостройте графики индексов и отклонений Соболь первого и общего порядков
barСоздайте штриховой график индексов Соболь первого и общего порядков

Примеры

свернуть все

Загрузка модели роста опухоли.

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));

Figure contains an axes. The axes with title States versus Time contains an object of type line. This object represents tumor_weight.

Выполните глобальный анализ чувствительности (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);

Figure contains an axes. The axes contains 12 objects of type line, patch. These objects represent model simulation, 90.0% region, mean value.

Можно настроить квантильную область на другой процент путем определения 'Alphas' для нижнего и верхнего квантилей всех ответов модели. Для образца альфа- значения 0,1 графиков заштрихованную область между 100 * alpha и 100 * (1 - alpha) квантования всех моделируемых характеристик модели.

plotData(sobolResults,'Alphas',0.1);

Figure contains an axes. The axes contains 12 objects of type line, patch. These objects represent model simulation, 80.0% region, mean value.

Постройте график хода индексов Соболь первого и общего порядков.

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.

Индекс Соболя первого порядка параметра входа приводит долю общего отклонения отклика, который можно отнести к изменениям только в параметре входа. Индекс общего порядка дает долю общего отклонения отклика, которая может быть атрибутирована любым изменениям параметра 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.

Можно задать больше выборок, чтобы увеличить точность индексов Соболь, но для завершения симуляции может потребоваться больше времени. Использование 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];

Figure contains 2 axes. Axes 1 contains 12 objects of type line, patch. These objects represent model simulation, 90.0% region, mean value. Axes 2 contains 12 objects of type line, patch. These objects represent model simulation, 90.0% region, mean value.

Можно также удалить наблюдаемый, задав его имя.

gsaNoObs = removeobservable(sobolObs,'Maximum tumor_weight');

Восстановите параметры предупреждения.

warning(warnSettings);

Подробнее о

расширить все

Совет

Объект результатов может содержать значительный объем данных моделирования (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');
Для получения дополнительной информации см. версию MAT-файла.

Ссылки

[1] Салтелли, Андреа, Паола Аннони, Ивано Адзини, Франческа Камполонго, Марко Ратто и Стефано Тарантола. "Основанный на дисперсии анализ чувствительности выходов модели. Проект и оценка общего индекса чувствительности. " Компьютерная физика Коммуникации 181, № 2 (февраль 2010): 259-70. https://doi.org/10.1016/j.cpc.2009.09.018.

Введенный в R2020a