sbiopredictionci

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

Описание

пример

ci = sbiopredictionci(fitResults) вычисляет 95% доверительные интервалы для результатов симуляции модели из 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)

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

свернуть все

Результаты оценки параметра sbiofit, заданный как NLINResults object, OptimResults object, или вектор объектов для неохлажденных подгонок, которые были возвращены из того же sbiofit вызов.

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

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

Пример: 'Alpha',0.01,'Type','bootstrap' задает вычисление доверительного интервала на 99% с помощью метода bootstrap.

Доверительный уровень, (1-Alpha) * 100%, заданная как разделенная разделенными запятой парами, состоящая из 'Alpha' и положительная скалярная величина от 0 до 1. Значение по умолчанию 0.05, что означает, что 95% доверительный интервал вычисляется.

Пример: 'Alpha',0.01

Тип доверительного интервала, заданный как разделенная разделенными запятой парами, состоящая из 'Type' и вектор символов. Допустимые варианты:

  • 'gaussian'- Используйте Гауссово приближение распределения откликов линеаризированной модели вокруг оценок параметров.

  • 'bootstrap'- Вычислите доверительные интервалы с помощью метода bootstrap.

Пример: 'Type','bootstrap'

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

Пример: 'NumSamples',500

Level of display возвращается в командную строку, задается как разделенная разделенными запятой парами, состоящая из 'Display' и вектор символов. 'off' (по умолчанию) или 'none' не отображает выход. 'final' отображает сообщение после завершения расчетов.

Пример: 'Display','final'

Логический флаг для вычисления доверительных интервалов параллельно, заданный как разделенная разделенными запятой парами, состоящая из '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

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

свернуть все

Результаты доверительного интервала, возвращенные как 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.

Расчет доверительного интервала Bootstrap

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.

Расширенные возможности

Введенный в R2017b