Построение сводки квантилей моделирования модели из глобального анализа чувствительности (требуется набор инструментов для статистического и машинного обучения)
строит графики квантилей и откликов модели моделируемых выборок и возвращает дескриптор фигуры 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));

Выполните анализ глобальной чувствительности (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)
Индекс Соболя первого порядка входного параметра дает долю общей дисперсии отклика, которую можно отнести только к вариациям входного параметра. Индекс общего порядка дает долю общей дисперсии отклика, которая может быть приписана любым вариациям параметра соединения, которые включают вариации входного параметра.
Из индексов Соболь сюжеты, параметры 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)
Свойство ReservateInfo объекта результата содержит различную информацию для вычисления индексов Соболь. Например, данные моделирования модели (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);
В этом примере используются:
Загрузить модель распределения лекарств, опосредованных мишенью (TMDD).
sbioloadproject tmdd_with_TO.sbprojПолучить активный конфигурационный набор и установить целевую занятость (TO) в качестве ответа.
cs = getconfigset(m1);
cs.RuntimeOptions.StatesToLog = 'TO';Моделирование модели и печать TO профиль.
sbioplot(sbiosimulate(m1,cs));

Определите порог риска убытков (площадь под кривой профиля распоряжения о перемещении материалов) для целевой занятости.
classifier = 'trapz(time,TO) <= 0.1';Выполните MPGSA для поиска чувствительных параметров относительно транспортного заказа. Изменение значений параметров между предварительно определенными границами для создания 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]
Observables: {'TO'}
ParameterSamples: [10000x4 table]
SimulationInfo: [1x1 struct]
Постройте график квантилей отклика смоделированной модели.
plotData(mpgsaResults);

Постройте график эмпирических кумулятивных функций распределения (eCDF) принятых и отклоненных образцов. За исключением kmни один из параметров не показывает существенной разницы в eCDF для принятых и отклоненных образцов. km на графике показано большое расстояние Колмогорова - Смирнова (К-С) между eCDF принятых и отбракованных образцов. Расстояние K-S - это максимальное абсолютное расстояние между двумя кривыми eCDF.
h = plot(mpgsaResults);
% Resize the figure.
pos = h.Position(:);
h.Position(:) = [pos(1) pos(2) pos(3)*2 pos(4)*2];
Чтобы вычислить расстояние K-S между двумя eCDF, SimBiology использует двусторонний тест, основанный на нулевой гипотезе, что два распределения принятых и отклоненных выборок равны. Посмотрите kstest2 (Статистика и инструментарий машинного обучения) для получения подробной информации. Если расстояние K-S велико, то два распределения различны, что означает, что классификация выборок чувствительна к изменениям входного параметра. С другой стороны, если расстояние K-S невелико, то изменения входного параметра не влияют на классификацию выборок. Результаты показывают, что классификация нечувствительна к входному параметру. Чтобы оценить значимость статистики K-S, отвергающей нулевую гипотезу, можно изучить p-значения.
bar(mpgsaResults)

Штрих-график показывает две полосы для каждого параметра: одну для 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];
Восстановите параметры предупреждения.
warning(warnSettings);
resultsObj - Результаты глобального анализа чувствительностиSimBiology.gsa.Sobol объект | SimBiology.gsa.MPGSA объектРезультаты анализа глобальной чувствительности, указанные как SimBiology.gsa.Sobol или SimBiology.gsa.MPGSA объект.
Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.
h = plotData(results,'ResponseLeap',10) задание печати каждого ответа 10-й модели. 'Observables' - Модельные ответы или наблюдаемые на графикОтклики модели или наблюдаемые объекты для построения графика, указанные как пара, разделенная запятыми, состоящая из 'Observables и символьный вектор, строка, строковый вектор, клеточный массив символьных векторов или вектор положительных целых чисел, индексируемых в resultsObj.Observables.
Пример: 'Observables','tumor_weight'
Типы данных: double | char | string | cell
'Alphas' - Размер затененной областиРазмер области квантиля на графике, определяемый как разделенная запятыми пара, состоящая из 'Alphas' и положительный скаляр между 0 и 1 или числовой вектор. Процент области рассчитывается как 100 * (1 - 2 * Alpha). Следовательно, альфа-значение по умолчанию 0,05 соответствует 90% области квантиля.
Можно задать несколько значений в качестве вектора для печати нескольких областей. Например, 'Alphas',[0.05 0.1] показывает как 90%, так и 80% регионов.
Пример: 'Alphas',0.1
Типы данных: double
'FaceColor' - Цвет затененных областейЦвет затененных областей, определяемый как разделенная запятыми пара, состоящая из 'FaceColor' и трехэлементный вектор строки. По умолчанию функция использует первый цвет по умолчанию MATLAB ®. Для просмотра порядка цветов по умолчанию введитеget(groot,'defaultAxesColorOrder') или см. свойство ColorOrder.
Пример: 'FaceColor',[0.4 0.3 0.2]
Типы данных: double
'MeanColor' - Цвет ответа средней моделиЦвет ответа средней модели, указанный как пара, разделенная запятыми, состоящая из 'MeanColor' и трехэлементный вектор строки. По умолчанию функция использует второй цвет по умолчанию MATLAB. Для просмотра порядка цветов по умолчанию введите get(groot,'defaultAxesColorOrder') или см. свойство ColorOrder.
Пример: 'MeanColor',[0.2 0.5 0.8]
Типы данных: double
'ResponseColor' - Цвет ответов модели[0.3 0.3 0.3] (по умолчанию) | трехэлементный вектор строкиЦвет откликов модели или моделирования, указанный как пара, разделенная запятыми, состоящая из 'ResponseColor' и трехэлементный вектор строки. По умолчанию функция использует серый цвет [0.3 0.3 0.3].
Пример: 'MeanColor',[0.4 0.3 0.3]
Типы данных: double
'ResponseLeap' - Каждый n-й ответ на сюжетКаждый n-й ответ на график, указанный как разделенная запятыми пара, состоящая из 'ResponseLeap' и положительное целое число. По умолчанию функция отображает 10% всех откликов модели.
Пример: 'ResponseLeap',15
Типы данных: double
h - РукояткаМаркер к рисунку, заданный как маркер к рисунку.
[1] Сальтелли, Андреа, Паола Аннони, Ивано Адзини, Франческа Камполонго, Марко Ратто и Стефано Тарантола. "Анализ чувствительности выходных данных модели на основе дисперсии. Конструктор и оценщик для общего индекса чувствительности ". Компьютерная физика связи 181, № 2 (февраль 2010): 259-70. https://doi.org/10.1016/j.cpc.2009.09.018.
bar | plot | sbiosobol | SimBiology.gsa.Sobol
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.