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

Получите активный configset и установите вес опухоли как ответ.

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

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

sbioplot(sbiosimulate(m1,cs,v,d));

Figure contains an axes object. The axes object 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 путем вычисления первого - и общий порядок индексы 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);

Figure contains an axes object. The axes object 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 object. The axes object contains 12 objects of type line, patch. These objects represent model simulation, 80.0% region, mean value.

Постройте курс времени первого - и общий порядок индексы Sobol.

h = plot(sobolResults);
% Resize the figure.
h.Position(:) = [100 100 1280 800];

Figure contains 12 axes objects. Axes object 1 with title sensitivity output [Tumor Growth Model].tumor_weight contains 3 objects of type line. Axes object 2 with title sensitivity output [Tumor Growth Model].tumor_weight contains 3 objects of type line. Axes object 3 contains 3 objects of type line. Axes object 4 contains 3 objects of type line. Axes object 5 contains 3 objects of type line. Axes object 6 contains 3 objects of type line. Axes object 7 contains 3 objects of type line. Axes object 8 contains 3 objects of type line. Axes object 9 contains 3 objects of type line. Axes object 10 contains 3 objects of type line. Axes object 11 contains 3 objects of type line. Axes object 12 contains an object of type line.

Индекс Sobol первого порядка входного параметра дает часть полного отклонения ответа, которое может быть приписано изменениям одного только входного параметра. Индекс общего порядка дает часть полного отклонения ответа, которое может быть приписано любым объединенным изменениям параметра, которые включают изменения входного параметра.

Из графиков индексов Sobol, параметры L1 и w0 кажется, самые чувствительные параметры к весу опухоли, прежде чем доза была применена в t = 7. Но после того, как доза применяется, k1 и k2 станьте более чувствительными параметрами и способствуйте больше всего дозируемому после того, как этапу веса опухоли. Общий график отклонения также показывает большее отклонение для этапа после-того,-как-дозы в t> 35, чем для этапа прежде-чем-дозы роста опухоли, указывая на тот k1 и k2 могут быть более важные параметры, чтобы заняться расследованиями далее. Часть необъясненного отклонения показывает некоторое отклонение приблизительно в t = 33, но общий график отклонения показывает мало отклонения в t = 33, означая, что необъясненное отклонение могло быть незначительным. Часть необъясненного отклонения вычисляется как 1 - (сумма всех индексов Sobol первого порядка), и общее отклонение вычисляется с помощью var(response), где response ответ модели в каждом моменте времени.

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

bar(sobolResults);

Figure contains an axes object. The axes object with title sensitivity output [Tumor Growth Model].tumor_weight contains 22 objects of type patch, line. These objects represent first order, total order.

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

Figure contains 2 axes objects. Axes object 1 contains 12 objects of type line, patch. These objects represent model simulation, 90.0% region, mean value. Axes object 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

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

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

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

sbioplot(sbiosimulate(m1,cs));

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

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

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

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

% 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]
               ParameterSamples: [10000x4 table]
                    Observables: {'TO'}
                 SimulationInfo: [1x1 struct]

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

plotData(mpgsaResults);

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

Постройте эмпирические кумулятивные функции распределения (eCDFs) принятых и отклоненных выборок. За исключением km, ни один из параметров не показывает значительную разницу в eCDFs для принятых и отклоненных выборок. km постройте показывает крупному Кольмогорову-Смирнову (K-S) расстояние между eCDFs принятых и отклоненных выборок. Расстояние 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 objects. Axes object 1 with title trapz(time,TO) <= 0.1 contains 2 objects of type stair. These objects represent accepted samples, rejected samples. Axes object 2 contains 2 objects of type stair. These objects represent accepted samples, rejected samples. Axes object 3 contains 2 objects of type stair. These objects represent accepted samples, rejected samples. Axes object 4 contains 2 objects of type stair. These objects represent accepted samples, rejected samples.

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

bar(mpgsaResults)

Figure contains an axes object. The axes object 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).

Можно также построить гистограммы принятых и отклоненных выборок. historgrams позволяют вам видеть тренды в принятых и отклоненных выборках. В этом примере, гистограмме 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 objects. Axes object 1 with title trapz(time,TO) <= 0.1 contains 2 objects of type histogram. These objects represent accepted samples, rejected samples. Axes object 2 contains 2 objects of type histogram. These objects represent accepted samples, rejected samples. Axes object 3 contains 2 objects of type histogram. These objects represent accepted samples, rejected samples. Axes object 4 contains 2 objects of type histogram. These objects represent accepted samples, rejected samples.

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

warning(warnSettings);

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

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

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

Выполните глобальный анализ чувствительности (GSA) на модели, чтобы найти параметры модели, к которым рост опухоли чувствителен.

Во-первых, задайте параметры модели интереса, которые вовлечены в фармакодинамику роста опухоли. Задайте ответ модели как вес опухоли.

modelParamNames = {'L0','L1','w0','k1'};
outputName = 'tumor_weight';

Затем выполните GSA путем вычисления элементарных эффектов с помощью sbioelementaryeffects. Используйте 100 как количество отсчетов и набор ShowWaitBar к true показать прогресс симуляции.

rng('default');
eeResults = sbioelementaryeffects(m1,modelParamNames,outputName,Variants=v,Doses=d,NumberSamples=100,ShowWaitbar=true);

Покажите средний ответ модели, результаты симуляции и теневую область, покрывающую 90% результатов симуляции.

plotData(eeResults,ShowMedian=true,ShowMean=false);

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

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

plotData(eeResults,Alphas=0.1,ShowMedian=true,ShowMean=false);

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

Постройте курс времени средних значений и стандартные отклонения элементарных эффектов.

h = plot(eeResults);
% Resize the figure.
h.Position(:) = [100 100 1280 800];

Figure contains 8 axes objects. Axes object 1 with title sensitivity output [Tumor Growth Model].tumor_weight contains an object of type line. Axes object 2 with title sensitivity output [Tumor Growth Model].tumor_weight contains an object of type line. Axes object 3 contains an object of type line. Axes object 4 contains an object of type line. Axes object 5 contains an object of type line. Axes object 6 contains an object of type line. Axes object 7 contains an object of type line. Axes object 8 contains an object of type line.

Среднее значение эффектов объясняет, оказывают ли изменения входных значений параметров какое-либо влияние на ответ веса опухоли. Стандартное отклонение эффектов объясняет, зависит ли изменение чувствительности от местоположения в области параметра.

От среднего значения графиков эффектов, параметры L1 и w0 кажется, самые чувствительные параметры к весу опухоли, прежде чем доза будет применена в t = 7. Но, после того, как доза применяется, k1 и L0 станьте более чувствительными параметрами и способствуйте больше всего дозируемому после того, как этапу веса опухоли. Графики стандартного отклонения эффектов показывают больше отклонений для больших значений параметров на более позднем этапе (t> 35), чем для этапа прежде-чем-дозы роста опухоли.

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

bar(eeResults);

Figure contains an axes object. The axes object with title sensitivity output [Tumor Growth Model].tumor_weight contains 18 objects of type patch, line. These objects represent mean, standard deviation.

Можно также построить сетки параметра, и выборки использовались для расчета элементарных эффектов.

plotGrid(eeResults)

Figure contains 6 axes objects. Axes object 1 contains 200 objects of type line. Axes object 2 contains 200 objects of type line. Axes object 3 contains 200 objects of type line. Axes object 4 contains 200 objects of type line. Axes object 5 contains 200 objects of type line. Axes object 6 contains 200 objects of type line.

Можно задать больше выборок, чтобы увеличить точность элементарных эффектов, но симуляция может занять больше времени, чтобы закончиться. Используйте addsamples добавить больше выборок.

eeResults2 = addsamples(eeResults,200);

SimulationInfo свойство объекта результата содержит различную информацию для вычисления элементарных эффектов. Например, данные о симуляции модели (SimData) для каждой симуляции с помощью набора выборок параметра хранятся в SimData поле свойства. Это поле является массивом SimData объекты.

eeResults2.SimulationInfo.SimData
 
   SimBiology SimData Array : 1500-by-1
 
   Index:    Name:         ModelName:         DataCount: 
   1           -           Tumor Growth Model 1          
   2           -           Tumor Growth Model 1          
   3           -           Tumor Growth Model 1          
   ...                                                   
   1500        -           Tumor Growth Model 1          
 

Можно узнать, перестала ли какая-либо симуляция модели работать во время расчета путем проверки ValidSample поле SimulationInfo. В этом примере поле не показывает не пройдено запусков симуляции.

all(eeResults2.SimulationInfo.ValidSample)
ans = logical
   1

Можно добавить пользовательские выражения как observables и вычислить элементарные эффекты добавленного observables. Например, можно вычислить эффекты для максимального веса опухоли путем определения пользовательского выражения можно следующим образом.

% Suppress an information warning that is issued.
warnSettings = warning('off', 'SimBiology:sbservices:SB_DIMANALYSISNOTDONE_MATLABFCN_UCON');
% Add the observable expression.
eeObs = addobservable(eeResults2,'Maximum tumor_weight','max(tumor_weight)','Units','gram');

Постройте вычисленные результаты симуляции, показывающие 90%-ю область квантиля.

h2 = plotData(eeObs);
h2.Position(:) = [100 100 1500 800];

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

Можно также удалить заметное путем определения его имени.

eeNoObs = removeobservable(eeObs,'Maximum tumor_weight');

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

warning(warnSettings);

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

свернуть все

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

Аргументы name-value

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

Пример: h = plotData(results,'ResponseLeap',10) задает, чтобы построить каждый 10-й ответ модели.

Ответы модели или observables, чтобы построить в виде вектора символов, строки, представляют в виде строки вектор, массив ячеек из символьных векторов или вектор из положительной целочисленной индексации в resultsObject.Observables. По умолчанию графики функций GSA заканчиваются для всех ответов модели или observables.

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

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

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

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

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

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

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

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

Отметьте, чтобы построить средний ответ модели в виде true или false.

Типы данных: логический

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

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

Отметьте, чтобы построить средний ответ модели в виде true или false.

Типы данных: логический

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

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

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

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

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

свернуть все

Обработайте к фигуре в виде указателя фигуры.

Вопросы совместимости

развернуть все

Изменение поведения в будущем релизе

Ссылки

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

[2] Тиманн, Кристиан А., Joep Vanlier, Мээйк Х. Устервир, Альберт К. Гроен, Питер А. Дж. Хилберс и Натал А. В. ван Рил. “Анализ Траектории параметра, чтобы Идентифицировать Эффекты Обработки Фармакологических Вмешательств”. Отредактированный Скоттом Маркелом. PLoS Вычислительная Биология 9, № 8 (1 августа 2013): e1003166. https://doi.org/10.1371/journal.pcbi.1003166.

[3] Моррис, Макс Д. “Планы Выборки факториала относительно Предварительных Вычислительных Экспериментов”. Технометрики 33, № 2 (май 1991): 161–74.

[4] Sohier, Анри, Жан-Лу Фарг и Хелене Пит-Ланир. “Улучшение Представительности Метода Морриса для Воздушного Запуска, чтобы вращаться вокруг Разделения”. Объемы Продолжений IFAC 47, № 3 (2014): 7954–59.

Введенный в R2020a