plotData

Постройте сводные данные квантилей симуляций модели из анализа глобальной чувствительности (требует Statistics and Machine Learning Toolbox)

Описание

пример

h = plotData(resultsObj) строит графики и моделирует характеристики моделируемых выборок и возвращает указатель на рисунок h.

пример

h = plotData(resultsObj,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));

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

Загрузите модель диспозиции лекарственных средств, опосредованных мишенью (TMDD).

sbioloadproject tmdd_with_TO.sbproj

Получите активный конфигурационный набор и установите целевое заполнение (TO) как ответ.

cs = getconfigset(m1);
cs.RuntimeOptions.StatesToLog = 'TO';

Симулируйте модель и постройте график TO профиль.

sbioplot(sbiosimulate(m1,cs));

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

Определите порог воздействия (область под кривой профиля ТО) для целевой заполненности.

classifier = 'trapz(time,TO) <= 0.1';

Выполните MPGSA, чтобы найти чувствительные параметры относительно TO. Измените значения параметров между предопределенными границами, чтобы сгенерировать 10000 выборок параметров.

% Suppress an information warning that is issued during simulation.
warnSettings = warning('off', 'SimBiology:sbservices:SB_DIMANALYSISNOTDONE_MATLABFCN_UCON');
rng(0,'twister'); % For reproducibility
params = {'kel','ksyn','kdeg','km'};
bounds = [0.1, 1; 
          0.1, 1;
          0.1, 1;
          0.1, 1];
mpgsaResults = sbiompgsa(m1,params,classifier,'Bounds',bounds,'NumberSamples',10000)
mpgsaResults = 
  MPGSA with properties:

                    Classifiers: {'trapz(time,TO) <= 0.1'}
    KolmogorovSmirnovStatistics: [4x1 table]
                       ECDFData: {4x4 cell}
              SignificanceLevel: 0.0500
                        PValues: [4x1 table]
              SupportHypothesis: [10000x1 table]
                    Observables: {'TO'}
               ParameterSamples: [10000x4 table]
                 SimulationInfo: [1x1 struct]

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

plotData(mpgsaResults);

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

Постройте график эмпирических кумулятивных функций распределения (eCDFs) принятых и отклоненных выборок. Кроме kmни один из параметров не показывает значительного различия в eCDF для принятых и отклонённых выборок. The km график показывает большое расстояние Колмогоров-Смирнов (К-С) между eCDF принятых и отклонённых выборок. Расстояние K-S является максимальным абсолютным расстоянием между двумя кривыми eCDFs.

h = plot(mpgsaResults);
% Resize the figure.
pos = h.Position(:);
h.Position(:) = [pos(1) pos(2) pos(3)*2 pos(4)*2];

Figure contains 4 axes. Axes 1 with title trapz(time,TO) <= 0.1 contains 2 objects of type stair. These objects represent accepted samples, rejected samples. Axes 2 contains 2 objects of type stair. These objects represent accepted samples, rejected samples. Axes 3 contains 2 objects of type stair. These objects represent accepted samples, rejected samples. Axes 4 contains 2 objects of type stair. These objects represent accepted samples, rejected samples.

Чтобы вычислить расстояние K-S между двумя eCDF, SimBiology использует двусторонний тест, основанный на нулевой гипотезе, что два распределения принятых и отклоненных выборок равны. См. kstest2 (Statistics and Machine Learning Toolbox) для получения дополнительной информации. Если расстояние K-S большое, то два распределения различаются, что означает, что классификация выборок чувствительна к изменениям в параметре входа. С другой стороны, если расстояние K-S мало, то изменения в параметре входа не влияют на классификацию выборок. Результаты предполагают, что классификация нечувствительна к параметру входа. Чтобы оценить значимость статистики K-S, отвергающей нулевую гипотезу, можно изучить p-значения.

bar(mpgsaResults)

Figure contains an axes. The axes with title trapz(time,TO) <= 0.1 contains 11 objects of type patch, line. These objects represent K-S Statistic, P-Value.

На столбиковую диаграмму показаны две полосы для каждого параметра: одна для расстояния K-S (статистика K-S) и другая для соответствующего p-значения. Вы отвергаете нулевую гипотезу, если p-значение меньше уровня значимости. Крест (x) показан для любого значения p, которое почти 0. Вы можете увидеть точное значение p, соответствующее каждому параметру.

[mpgsaResults.ParameterSamples.Properties.VariableNames',mpgsaResults.PValues]
ans=4×2 table
      Var1      trapz(time,TO) <= 0.1
    ________    _____________________

    {'kel' }          0.0021877      
    {'ksyn'}                  1      
    {'kdeg'}            0.99983      
    {'km'  }                  0      

Значения p km и kel меньше уровня значимости (0,05), что подтверждает альтернативную гипотезу о том, что принятые и отклоненные выборки происходят из различных распределений. Другими словами, классификация выборок чувствительна к km и kel но не к другим параметрам (kdeg и ksyn).

Можно также построить гистограммы принятых и отклонённых выборок. Исторические граммы позволяют вам увидеть тренды в принятых и отклонённых выборках. В этом примере гистограмма km показывает, что существуют больше принятых выборок для больших km значений, в то время как kel гистограмма показывает, что отклонённых выборок меньше, чем kel увеличивается.

h2 = histogram(mpgsaResults);
% Resize the figure.
pos = h2.Position(:);
h2.Position(:) = [pos(1) pos(2) pos(3)*2 pos(4)*2];

Figure contains 4 axes. Axes 1 with title trapz(time,TO) <= 0.1 contains 2 objects of type histogram. These objects represent accepted samples, rejected samples. Axes 2 contains 2 objects of type histogram. These objects represent accepted samples, rejected samples. Axes 3 contains 2 objects of type histogram. These objects represent accepted samples, rejected samples. Axes 4 contains 2 objects of type histogram. These objects represent accepted samples, rejected samples.

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

warning(warnSettings);

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

свернуть все

Результаты анализа глобальной чувствительности, заданные как SimBiology.gsa.Sobol или SimBiology.gsa.MPGSA объект.

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: h = plotData(results,'ResponseLeap',10) задает график для каждой 10-й характеристики модели.

Моделируйте отклики или наблюдаемые значения для построения, заданные как разделенная разделенными запятой парами, состоящая из 'Observables и вектор символов, строка, строковый вектор, массив ячеек из векторов символов или вектор из положительных целых чисел, индексируемых в resultsObj.Observables.

Пример: 'Observables','tumor_weight'

Типы данных: double | char | string | cell

Размер области квантиля на графике, заданный как разделенная разделенными запятой парами, состоящая из 'Alphas' и положительная скалярная величина от 0 до 1 или числовой вектор. Процент области вычисляется как 100 * (1 - 2 * Alpha). Следовательно, значение альфа по умолчанию 0,05 соответствует 90% области квантования.

Можно задать несколько значений в качестве вектора для построения нескольких областей. Для образца, 'Alphas',[0.05 0.1] показывает как 90%, так и 80% областей.

Пример: 'Alphas',0.1

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

Цвет затененных областей, заданный как разделенная разделенными запятой парами, состоящая из 'FaceColor' и трехэлементный вектор-строка. По умолчанию функция использует первый MATLAB® цвет по умолчанию. Чтобы просмотреть порядок цвета по умолчанию, введите get(groot,'defaultAxesColorOrder') или см. свойство ColorOrder.

Пример: 'FaceColor',[0.4 0.3 0.2]

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

Цвет средней характеристики модели, заданный как разделенная разделенными запятой парами, состоящая из 'MeanColor' и трехэлементный вектор-строка. По умолчанию функция использует второй цвет по умолчанию MATLAB. Чтобы просмотреть порядок цвета по умолчанию, введите get(groot,'defaultAxesColorOrder') или см. свойство ColorOrder.

Пример: 'MeanColor',[0.2 0.5 0.8]

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

Цвет откликов модели или симуляций, заданный как разделенная разделенными запятой парами, состоящая из 'ResponseColor' и трехэлементный вектор-строка. По умолчанию функция использует серый цвет [0.3 0.3 0.3].

Пример: 'MeanColor',[0.4 0.3 0.3]

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

Каждый n ответ на график, заданный как разделенная разделенными запятой парами, состоящая из 'ResponseLeap' и положительное целое число. По умолчанию графики функций 10% всех ответов модели.

Пример: 'ResponseLeap',15

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

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

свернуть все

Указатель на рисунок, заданный как указатель на рисунок.

Ссылки

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

См. также

| | |

Введенный в R2020a