Вычислите доверительные интервалы для предсказаний модели (требует Statistics and Machine Learning Toolbox)
вычисляет 95% доверительные интервалы для результатов симуляции модели из ci
= sbiopredictionci(fitResults
)fitResults
, an NLINResults object
или OptimResults object
возвращено sbiofit
. ci
является PredictionConfidenceInterval
объект, который содержит вычисленные данные доверительного интервала.
использует дополнительные опции, заданные одним или несколькими ci
= sbiopredictionci(fitResults
,Name,Value
)Name,Value
аргументы в виде пар.
Загрузка данных
Загрузите выборочные данные в соответствии. Данные хранятся как таблица с идентификаторами переменных, Time, CentralConc и PeripheralConc. Эти синтетические данные представляют временной ход концентраций в плазме, измеренных в восьми различных временных точках как для центрального, так и для периферийного отделений после капельного внутривенного введения в течение трёх индивидуумов.
load data10_32R.mat gData = groupedData(data); gData.Properties.VariableUnits = {'','hour','milligram/liter','milligram/liter'}; sbiotrellis(gData,'ID','Time',{'CentralConc','PeripheralConc'},'Marker','+',... 'LineStyle','none');
Создайте модель
Создайте модель с двумя отсеками.
pkmd = PKModelDesign; pkc1 = addCompartment(pkmd,'Central'); pkc1.DosingType = 'Infusion'; pkc1.EliminationType = 'linear-clearance'; pkc1.HasResponseVariable = true; pkc2 = addCompartment(pkmd,'Peripheral'); model = construct(pkmd); configset = getconfigset(model); configset.CompileOptions.UnitConversion = true;
Определите дозирование
Определите капельное внутривенное введение.
dose = sbiodose('dose','TargetName','Drug_Central'); dose.StartTime = 0; dose.Amount = 100; dose.Rate = 50; dose.AmountUnits = 'milligram'; dose.TimeUnits = 'hour'; dose.RateUnits = 'milligram/hour';
Определите параметры
Определите параметры для оценки. Установите границы параметров для каждого параметра. В дополнение к этим явным границам преобразования параметров (такие как журнал, logit или probit) накладывают неявные ограничения.
responseMap = {'Drug_Central = CentralConc','Drug_Peripheral = PeripheralConc'}; paramsToEstimate = {'log(Central)','log(Peripheral)','Q12','Cl_Central'}; estimatedParam = estimatedInfo(paramsToEstimate,... 'InitialValue',[1 1 1 1],... 'Bounds',[0.1 3;0.1 10;0 10;0.1 2]);
Подгонка модели
Выполните неохлажденную подгонку, то есть один набор предполагаемых параметров для каждого пациента.
unpooledFit = sbiofit(model,gData,responseMap,estimatedParam,dose,'Pooled',false);
Выполните объединенную подгонку, то есть один набор предполагаемых параметров для всех пациентов.
pooledFit = sbiofit(model,gData,responseMap,estimatedParam,dose,'Pooled',true);
Вычисление доверительных интервалов для предполагаемых параметров
Вычислите 95% доверительные интервалы для каждого оцененного параметра в неохлажденной подгонке.
ciParamUnpooled = sbioparameterci(unpooledFit);
Отображение результатов
Отображение интервалов доверия в формате таблицы. Для получения дополнительной информации о значении каждого статуса оценки смотрите Статус доверительного интервала параметра.
ci2table(ciParamUnpooled)
ans = 12x7 table Group Name Estimate ConfidenceInterval Type Alpha Status _____ ______________ ________ __________________ ________ _____ ___________ 1 {'Central' } 1.422 1.1533 1.6906 Gaussian 0.05 estimable 1 {'Peripheral'} 1.5629 0.83143 2.3551 Gaussian 0.05 constrained 1 {'Q12' } 0.47159 0.20093 0.80247 Gaussian 0.05 constrained 1 {'Cl_Central'} 0.52898 0.44842 0.60955 Gaussian 0.05 estimable 2 {'Central' } 1.8322 1.7893 1.8751 Gaussian 0.05 success 2 {'Peripheral'} 5.3368 3.9133 6.7602 Gaussian 0.05 success 2 {'Q12' } 0.27641 0.2093 0.34351 Gaussian 0.05 success 2 {'Cl_Central'} 0.86034 0.80313 0.91755 Gaussian 0.05 success 3 {'Central' } 1.6657 1.5818 1.7497 Gaussian 0.05 success 3 {'Peripheral'} 5.5632 4.7557 6.3708 Gaussian 0.05 success 3 {'Q12' } 0.78361 0.65581 0.91142 Gaussian 0.05 success 3 {'Cl_Central'} 1.0233 0.96375 1.0828 Gaussian 0.05 success
Постройте график доверительных интервалов. Если статус оценки доверия интервала success
, он нанесен синим цветом (первый цвет по умолчанию). В противном случае он нанесен красным цветом (второй цвет по умолчанию), что указывает на то, что может потребоваться дальнейшее исследование установленных параметров. Если доверительный интервал not estimable
, затем функция строит красную линию с центрированным крестом. Если существуют какие-либо преобразованные параметры с оценочными значениями 0 (для преобразования журнала) и 1 или 0 (для преобразования probit или logit), то никакое доверие интервалы для этих оценок параметра не строятся. Чтобы увидеть порядок цвета, введите get(groot,'defaultAxesColorOrder')
.
Группы отображаются слева направо в том же порядке, в котором они появляются в GroupNames
свойство объекта, которое используется для пометки оси X. Y-метки являются преобразованными именами параметров.
plot(ciParamUnpooled)
Вычислите доверительные интервалы для объединенной подгонки.
ciParamPooled = sbioparameterci(pooledFit);
Отображение интервалов доверия.
ci2table(ciParamPooled)
ans = 4x7 table Group Name Estimate ConfidenceInterval Type Alpha Status ______ ______________ ________ __________________ ________ _____ ___________ pooled {'Central' } 1.6626 1.3287 1.9965 Gaussian 0.05 estimable pooled {'Peripheral'} 2.687 0.89848 4.8323 Gaussian 0.05 constrained pooled {'Q12' } 0.44956 0.11445 0.85152 Gaussian 0.05 constrained pooled {'Cl_Central'} 0.78493 0.59222 0.97764 Gaussian 0.05 estimable
Постройте график доверительных интервалов. Имя группы помечено как «объединенное» для указания такой подгонки.
plot(ciParamPooled)
Постройте график всех результатов доверительного интервала вместе. По умолчанию доверительный интервал для каждой оценки параметра строится на отдельных осях. Вертикальные линии группируют доверительные интервалы оценок параметров, которые были вычислены в общей подгонке.
ciAll = [ciParamUnpooled;ciParamPooled]; plot(ciAll)
Можно также построить график всех доверительных интервалов в одной оси, сгруппированной по оценкам параметров, с помощью размещения 'Grouped'.
plot(ciAll,'Layout','Grouped')
В этом размещении можно указать на маркер центра каждого доверительного интервала, чтобы увидеть имя группы. Каждый оценочный параметр разделяется вертикальной черной линией. Вертикальные пунктирные линии группируют доверительные интервалы оценок параметров, которые были вычислены в общей подгонке. Границы параметров, заданные в исходной подгонке, отмечены квадратными скобками. Обратите внимание на различные шкалы на оси Y из-за преобразований параметров. Для образца ось Y Q12
находится в линейной шкале, но в Central
находится в шкале журнала из-за ее журнала преобразования.
Вычисление доверительных интервалов для предсказаний модели
Вычислите 95% доверительные интервалы для предсказаний модели, то есть результаты симуляции с использованием оцененных параметров.
% For the pooled fit ciPredPooled = sbiopredictionci(pooledFit); % For the unpooled fit ciPredUnpooled = sbiopredictionci(unpooledFit);
Постройте доверительные интервалы для предсказаний модели
Доверительный интервал для каждой группы строится в отдельном столбце, и каждый ответ строкой. Доверительные интервалы, ограниченные границами, нанесены красным цветом. Доверительные интервалы, не ограниченные границами, нанесены синим цветом.
plot(ciPredPooled)
plot(ciPredUnpooled)
fitResults
- Результаты оценки параметра из sbiofit
NLINResults
| объекта OptimResults
вектор | объектаРезультаты оценки параметра sbiofit
, заданный как NLINResults object
, OptimResults object
, или вектор объектов для неохлажденных подгонок, которые были возвращены из того же sbiofit
вызов.
Задайте необязательные разделенные разделенными запятой парами Name,Value
аргументы. Name
- имя аргумента и Value
- соответствующее значение. Name
должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN
.
'Alpha',0.01,'Type','bootstrap'
задает вычисление доверительного интервала на 99% с помощью метода bootstrap.'Alpha'
- ДовериеДоверительный уровень, (1-Alpha) * 100%
, заданная как разделенная разделенными запятой парами, состоящая из 'Alpha'
и положительная скалярная величина от 0 до 1. Значение по умолчанию 0.05
, что означает, что 95% доверительный интервал вычисляется.
Пример: 'Alpha',0.01
'Type'
- Тип доверительного интервала'gaussian'
(по умолчанию) | 'bootstrap'
Тип доверительного интервала, заданный как разделенная разделенными запятой парами, состоящая из 'Type'
и вектор символов. Допустимые варианты:
'gaussian'
- Используйте Гауссово приближение распределения откликов линеаризированной модели вокруг оценок параметров.
'bootstrap'
- Вычислите доверительные интервалы с помощью метода bootstrap.
Пример: 'Type','bootstrap'
'NumSamples'
- Количество выборок для начальной загрузкиКоличество выборок для начальной загрузки, заданное как разделенная разделенными запятой парами, состоящая из 'NumSamples'
и положительное целое число. Это число определяет количество подгонок, которые выполняются во время расчета доверительного интервала, чтобы сгенерировать выборки bootstrap. Чем меньше количество, тем быстрее становится расчет доверительных интервалов за счет снижения точности.
Пример: 'NumSamples',500
'Display'
- Level of display возвращается в командную строку'off'
(по умолчанию) | 'none'
| 'final'
Level of display возвращается в командную строку, задается как разделенная разделенными запятой парами, состоящая из 'Display'
и вектор символов. 'off'
(по умолчанию) или 'none'
не отображает выход. 'final'
отображает сообщение после завершения расчетов.
Пример: 'Display','final'
'UseParallel'
- Логический флаг для вычисления доверительных интервалов параллельноtrue
| false
Логический флаг для вычисления доверительных интервалов параллельно, заданный как разделенная разделенными запятой парами, состоящая из 'UseParallel'
и true
или false
. По умолчанию используются параллельные опции в исходной подгонке. Если для этого аргумента задано значение true
и доступно Parallel Computing Toolbox™, параллельные опции в исходной подгонке игнорируются, а доверительные интервалы вычисляются параллельно.
Для Гауссовых доверительных интервалов:
Если вход fitResults
является вектором объектов результатов, затем расчет интервалов доверия для каждого объекта выполняется параллельно. Гауссовы доверительные интервалы быстро вычисляются. Таким образом, может быть более выгодно параллелизировать исходную подгонку (sbiofit
) и не устанавливать UseParallel
на true для sbiopredictionci
.
Для доверительных интервалов Bootstrap:
Функция пересылает UseParallel
флаг в bootci
. Нет параллелизации над вектором входа объектов результатов.
Примечание
Если у вас есть глобальный поток для генерации случайных чисел с количеством субпотоков, чтобы вычислить параллельно воспроизводимым образом, sbiopredictionci
сначала проверяет, совпадает ли количество работников с количеством субпотоков. Если это так, функция устанавливает UseSubstreams
на true
в statset
опция и переходит к bootci
(Statistics and Machine Learning Toolbox). В противном случае субпотоки по умолчанию игнорируются.
Пример: 'UseParallel',true
ci
- Результаты доверительных интерваловPredictionConfidenceInterval
объектРезультаты доверительного интервала, возвращенные как PredictionConfidenceInterval
объект. Для неохлажденной подгонки, ci
может быть вектором PredictionConfidenceInterval
объекты.
Модель линеаризована вокруг Pest оценок параметров, которые получаются из результатов подгонки, возвращенных sbiofit
. The CovarianceMatrix
преобразуется с помощью линеаризированной модели. В сложение неявные ограничения параметров (log
, probit
, или logit
преобразования параметров, заданные в исходной подгонке) и явные ограничения параметров (если заданы в исходной подгонке) также отображаются через линеаризированную модель.
Чтобы линеаризировать модель, sbiopredictionci
сначала проверяется, включена ли функция анализа чувствительности в исходной подгонке. Если функция включена, функция использует якобиан, вычисленный посредством комплексной дифференциации шага. Если функция отключена, якобиан вычисляется с помощью конечного дифференцирования. Конечное дифференцирование может быть неточным, и рассмотрите включение функции анализа чувствительности, когда вы запускаете sbiofit
.
Функция использует преобразованную CovarianceMatrix
и вычисляет Гауссовы доверительные интервалы для каждой оцененной реакции модели на каждом временном шаге.
В случаях, когда интервал доверия ограничен границами параметра, заданными в исходной подгонке, границы доверия интервала корректируются согласно подходу, описанному Wu, H. и Neale, M. [1].
Для каждого ответа модели функция сначала решает, является ли доверительный интервал неограниченным. Если это так, статус оценки соответствующей характеристики модели устанавливается на not estimable
.
В противном случае, если доверительный интервал для отклика ограничен параметром, заданным в исходной подгонке, функция устанавливает его статус равным constrained
. Преобразования параметров (такие как log
, probit
, или logit
) накладывают неявные ограничения на предполагаемые параметры, например, ограничения положительности. Такие ограничения могут привести к переоценке доверия, то есть доверительный интервал может быть меньше, чем ожидалось.
Если ни один интервал доверия не имеет статус оценки not estimable
или constrained
, затем функция устанавливает статусы оценки всех ответов модели на success
. В противном случае статусы оценки остальных ответов модели устанавливаются на estimable
.
bootci
(Statistics and Machine Learning Toolbox) функция из Statistics and Machine Learning Toolbox™ используется для вычисления доверительных интервалов загрузки. Первый входной nboot является количеством выборок (NumSamples
), и второй входной bootfun является функцией, которая выполняет эти действия.
Повторно отобразите данные (независимо в каждой группе, если доступно несколько групп).
Запустите подгонку параметра с повторно дискретизированными данными.
Симулируйте модель с помощью предполагаемых параметров, чтобы получить ответы модели.
Верните ответы модели.
Статус оценки всегда установлен на estimable
поскольку функция не может определить, ограничены ли доверительные интервалы границами в оценках параметра.
[1] Wu, H. and M.C. Neale. «Скорректированные доверительные интервалы для ограниченного параметра». Генетика поведения. 42 (6), 2012, стр. 886-898.
Чтобы запустить параллельно, установите 'UseParallel'
на true
.
Для получения дополнительной информации смотрите 'UseParallel'
аргумент пары "имя-значение".
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.