exponenta event banner

sbiopredictionci

Вычислите доверительные интервалы для образцовых прогнозов (требует Statistics and Machine Learning Toolbox),

Синтаксис

ci = sbiopredictionci(fitResults)
ci = sbiopredictionci(fitResults,Name,Value)

Описание

пример

ci = sbiopredictionci(fitResults) вычисляет 95% доверительных интервалов для симуляции модели, следует из fitResults, NLINResults object или OptimResults object, возвращенного sbiofit. ci является объектом PredictionConfidenceInterval, который содержит вычисленные данные о доверительном интервале.

ci = sbiopredictionci(fitResults,Name,Value) дополнительные опции использования заданы одним или несколькими аргументами пары Name,Value.

Примеры

свернуть все

Загрузка данных

Загрузите выборочные данные, чтобы соответствовать. Данные хранятся как таблица с переменными ID, Время, CentralConc и PeripheralConc. Эти синтетические данные представляют ход времени плазменных концентраций, измеренных в восьми различных моментах времени и для центральных и для периферийных отсеков после дозы вливания для трех человек.

clear all
load data10_32R.mat
gData = groupedData(data);
gData.Properties.VariableUnits = {'','hour','milligram/liter','milligram/liter'};
sbiotrellis(gData,'ID','Time',{'CentralConc','PeripheralConc'},'Marker','+',...
            'LineStyle','none');

Создайте модель

Создайте модель 2D отсека.

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

Задайте параметры

Задайте параметры, чтобы оценить. Установите границы параметра для каждого параметра. В дополнение к этим явным границам преобразования параметра (такие как журнал, логит или пробит) налагают неявные границы.

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 (для пробита, или логит преобразовывают), то никакие доверительные интервалы не построены для тех оценок параметра. Чтобы видеть последовательность цветов, введите 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)

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

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 должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

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

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

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

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

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

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

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

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

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

Логический флаг, чтобы вычислить доверительные интервалы параллельно, заданный как пара, разделенная запятой, состоящая из 'UseParallel' и true или false. По умолчанию параллельные опции в исходной подгонке используются. Если этот аргумент установлен в true, и Parallel Computing Toolbox™ доступен, параллельные опции в исходной подгонке проигнорированы, и доверительные интервалы вычисляются параллельно.

Для Гауссовых доверительных интервалов:

  • Если вход fitResults является вектором объектов результатов, то вычисление доверительных интервалов для каждого объекта выполняется параллельно. Гауссовы доверительные интервалы быстры, чтобы вычислить. Так, это может быть более выгодно, чтобы параллелизировать исходную подгонку (sbiofit) и не установить UseParallel на истину для sbiopredictionci.

Для доверительных интервалов Начальной загрузки:

  • Функция вперед флаг UseParallel к bootci. Нет никакого распараллеливания по входному вектору объектов результатов.

Примечание

Если у вас есть глобальный поток для генерации случайных чисел со многими подпотоками, чтобы вычислить параллельно восстанавливаемым способом, sbiopredictionci сначала проверяет, чтобы видеть, является ли количество рабочих тем же самым как количество подпотоков. Если так, функция устанавливает UseSubstreams на true в опции statset и передает bootci. В противном случае подпотоки проигнорированы по умолчанию.

Пример: 'UseParallel',true

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

свернуть все

Результаты доверительного интервала, возвращенные как объект PredictionConfidenceInterval. Для необъединенной подгонки ci может быть вектором объектов PredictionConfidenceInterval.

Больше о

свернуть все

Гауссово вычисление доверительного интервала для образцовых прогнозов

Модель линеаризуется вокруг оценок параметра Pest, которые получены из результатов подгонки, возвращенных sbiofit. CovarianceMatrix преобразовывается с помощью линеаризовавшей модели. Кроме того, неявные границы параметра (log, probit или параметр logit преобразовывают заданный в исходную подгонку) и явные границы параметра (если задано в исходной подгонке) также сопоставлены через линеаризовавшую модель.

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

Функция использует преобразованный CovarianceMatrix и вычисляет Гауссовы доверительные интервалы для каждого предполагаемого образцового ответа на каждом временном шаге.

В случаях, где доверительный интервал ограничивается границами параметра, заданными в исходной подгонке, границы доверительного интервала настроены согласно подходу, описанному Ву, H. и Нилом, M. [1].

Установка состояния оценки

  • Для каждого образцового ответа сначала решает функция, неограничен ли доверительный интервал. Если так, состояние оценки соответствующего образцового ответа установлено в not estimable.

  • В противном случае, если доверительный интервал для ответа ограничивается параметром, связанным заданный в исходной подгонке, функция устанавливает свое состояние на constrained. Преобразования параметра (такие как log, probit или logit) налагают неявные границы на предполагаемые параметры, например, ограничения положительности. Такие границы могут привести к переоценке уверенности, то есть, доверительный интервал может быть меньшим, чем ожидалось.

  • Если никакой доверительный интервал не имеет состояние not estimable или constrained оценки, то функция устанавливает состояния оценки всех образцовых ответов на success. В противном случае состояния оценки остающихся образцовых ответов установлены в estimable.

Загрузите вычисление доверительного интервала

Функция bootci от Statistics and Machine Learning Toolbox™ используется, чтобы вычислить доверительные интервалы начальной загрузки. Первый вход nboot является количеством выборок (NumSamples), и второй вход bootfun является функцией, которая выполняет эти действия.

  • Передискретизируйте данные (независимо в каждой группе, если несколько групп доступны).

  • Запустите подгонку параметра с передискретизируемыми данными.

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

  • Возвратите образцовые ответы.

Установка состояния оценки

Состояние оценки всегда устанавливается в estimable, поскольку функция не может определить, ограничиваются ли доверительные интервалы границами на оценках параметра.

Ссылки

[1] Ву, H. и Член конгресса Нил. "Настроенные Доверительные интервалы для Ограниченного Параметра". Генетика поведения. 42 (6), 2012, стр 886-898.

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

Введенный в R2017b