EstimatedInfo object

Объект, содержащий информацию о предполагаемых количествах модели

Описание

estimatedInfo объект содержит информацию о предполагаемых количествах модели (разновидности, параметры или отсеки). Используйте этот объект задать, какие количества в модели SimBiology® оцениваются, что преобразовывает параметр, используются, и опционально, первоначальные оценки для этих количеств при использовании sbiofit или sbiofitmixed.

Конструкция

estimInfo = estimatedInfo создает пустой estimatedInfo объект.

estimInfoArray = estimatedInfo(transformedNames) создает массив estimatedInfo объекты для количеств заданы в transformedNames. Начальные значения для этих количеств получены из модели SimBiology, когда вы запускаетесь sbiofit или sbiofitmixed.

estimInfoArray = estimatedInfo(___,'InitialTransformedValue',itValues) задает преобразованные значения начальной буквы количеств модели, заданных itValues. Вы не можете задать эту пару "имя-значение" наряду с 'InitialValue' пара "имя-значение".

estimInfoArray = estimatedInfo(___,'InitialValue',iValues) задает начальные значения количеств модели, заданных iValues. Вы не можете задать эту пару "имя-значение" наряду с 'InitialTransformedValue' пара "имя-значение".

estimInfoArray = estimatedInfo(___,'Bounds',boundValues) задает нижние и верхние границы для оценки параметра, заданной boundValues. Вы не можете задать эту пару "имя-значение" наряду с 'TransformedBounds' пара "имя-значение". Все методы поддерживают границы параметра в sbiofit (то есть, fminsearch, nlinfit (Statistics and Machine Learning Toolbox), fminunc (Optimization Toolbox), fmincon (Optimization Toolbox), lsqcurvefit (Optimization Toolbox), lsqnonlin (Optimization Toolbox), patternsearch (Global Optimization Toolbox), ga (Global Optimization Toolbox), particleswarm (Global Optimization Toolbox) и scattersearch). При использовании fminsearch, nlinfit, или fminunc с границами целевая функция возвращает Inf если границы превышены. Когда вы включаете опции, такие как FunValCheck, оптимизация может ошибка, если границы превышены во время оценки. При использовании nlinfit, это может сообщить о предупреждениях о якобиане, являющемся плохо обусловленным или не бывшем способном оценивать, слишком близок ли конечный результат к границам. sbiofitmixed не поддерживает границы параметра.

estimInfoArray = estimatedInfo(___,'TransformedBounds',tBoundValues) задает преобразованные границы для оценки параметра, заданной tBoundValues. Вы не можете задать эту пару "имя-значение" наряду с 'Bounds' пара "имя-значение".

estimInfoArray = estimatedInfo(___,'CategoryVariableName',groups) задает, у каких групп в данных есть отдельные ориентировочные стоимости для параметров. Другими словами, это позволяет вам оценивать значения параметров, специфичные для каждой группы или категории. Например, можно оценить параметры на основе возраста или пола индивидуумов.

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

свернуть все

Имена предполагаемых количеств модели в виде вектора символов, строки, представляют в виде строки вектор или массив ячеек из символьных векторов. Каждый вектор символов (или строка) должен быть в одном из этих форматов:

  • Имя или полностью определенное имя количества модели, такого как 'Cl', 'Reaction1.k', '[c 1].[r 1]'

  • Имя поддерживаемого параметра преобразовывает (log, logit, или probit) сопровождаемый количеством называют в круглых скобках, таких как 'log(Cl)', 'logit(Reaction1.k)', 'probit([c 1].[r 1])'

Начальная буква преобразовала значения количеств модели в виде векторного массива или массива ячеек. Это должно иметь ту же длину как transformedNames. Если это - массив ячеек, каждым элементом ячейки должен быть скаляр или пустой матричный [].

Начальные значения количеств модели в виде векторного массива или массива ячеек. Это должно иметь ту же длину как transformedNames. Если это - массив ячеек, каждым элементом ячейки должен быть скаляр или пустой матричный [].

Связанные ограничения для предполагаемых параметров в виде матричного или массива ячеек. Если boundValues матрица, это - N-by-2 матрица чисел, где N или 1 или длина transformedNames. Если это - массив ячеек, каждым элементом должен быть вектор из размера 1 2 или пустого [].

Каждая строка boundValues соответствует ниже (первый номер) и верхний (второй номер) границы каждого элемента (такой в качестве параметра) estimInfo. Нижняя граница должна быть меньше верхней границы. Если вы задаете одну строку, эти границы применяются ко всем элементам estimInfoArray.

Вы не можете задать эту пару "имя-значение" наряду с 'TransformedBounds' пара "имя-значение".

Преобразованные связанные ограничения для предполагаемых параметров в виде матричного или массива ячеек. tBoundValues N-by-2 матрица чисел, где N или 1 или длина transformedNames. Если это - массив ячеек, каждым элементом должен быть вектор из размера 1 2 или пустого [].

Каждая строка tBoundValues соответствует ниже (первый номер) и верхний (второй номер) границы каждого элемента (такой в качестве параметра) estimInfo. Нижняя граница должна быть меньше верхней границы. Если вы задаете одну строку, границы применяются ко всем элементам estimInfoArray.

Вы не можете задать эту пару "имя-значение" наряду с 'Bounds' пара "имя-значение".

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

  • Имя переменной в данных используется для подбора кривой

  • '<GroupVariableName>' (значение по умолчанию)

  • '<None>'

'<GroupVariableName>' указывает, что каждая группа в данных использует отдельную оценку параметра. '<None>' указывает, что все группы в данных используют ту же оценку параметра.

Если данные, которые вы планируете использовать для подбора кривой, содержат переменные, что данные группы в различные категории, можно задать имена тех переменных. Например, если у вас есть переменная под названием Sex который указывает на штекерных и розеточных индивидуумов, можно задать 'Sex' как 'CategoryVariableName'. Это означает, что у всех штекерных индивидуумов есть один набор оценок параметра, и у всех розеток есть отдельный набор.

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

свернуть все

Предполагаемое количество модели, возвращенное как estimatedInfo объект.

Предполагаемые количества модели, возвращенные как estimatedInfo объект или вектор из estimatedInfo объекты. Если transformedNames односимвольный вектор, estimInfoArray скалярный estimatedInfo объект. В противном случае, estimInfoArray вектор из estimatedInfo объекты с той же длиной как входной параметр transformedNames.

Свойства

Name

Вектор символов, указывающий на имя предполагаемого количества модели. Изменение этого свойства также обновляет TransformedName свойство.

Transform

Вектор символов, указывающий, преобразовывается ли значение количества во время оценки. Допустимыми именами является ''журнал, 'logit', и 'probit'. Пустой символьный вектор '' указывает, что никакое преобразование не применяется.

Журнал преобразовывает, гарантирует, что значение компонента всегда положительно во время оценки. logit и probit преобразовывает ограничивают значения компонента находиться между 0 и 1.

probit функция является обратной кумулятивной функцией распределения, сопоставленной со стандартным нормальным распределением. Для probit преобразуйте, SimBiology использует norminv (Statistics and Machine Learning Toolbox) функция. Следовательно Statistics and Machine Learning Toolbox™ требуется для преобразования.

Функция логита, которая является инверсией сигмоидальной функции, задана как logit(x) = log(x) – log(1 – x).

TransformedName

Вектор символов только для чтения, который комбинирует имя преобразования (такое как 'log') и имя количества (такое как 'Central') в выражение (такое как 'log(Central)').

InitialValue

Пустой матричный [] или действительное, конечное, скалярное значение, задающее начальные значения количеств модели, используется для оценки. Пустая матрица указывает, что начальные значения для оценки получены из соответствующего свойства количества (Value для параметров, InitialAmount для разновидностей и Capacity для отсеков).

Изменение этого свойства автоматически обновляет InitialTransformedValue свойство соответствующих количеств модели.

InitialTransformedValue

Пустой матричный [] или скалярное значение, задающее начальную букву, преобразовало значения количеств модели, используемых для оценки. Пустая матрица указывает, что преобразованные значения начальной буквы для оценки получены путем преобразования соответствующего свойства количества (Value для параметров, InitialAmount для разновидностей и Capacity для отсеков).

Изменение этого свойства автоматически обновляет InitialValue свойство соответствующих количеств модели.

Bounds

Пустой матричный [] или вектор 1 на 2 действительного, конечного значения, задающего нижнюю и верхнюю границу для предполагаемого параметра. Пустая матрица указывает, что единственные связанные ограничения - введенные значением Transform. Например, установка Transform к 'log' ограничивает параметр к области значений [0,inf]. Изменение этого свойства также обновляет TransformedBounds.

Нижняя граница должна быть меньше верхней границы.

TransformedBounds

Пустой матричный [] или вектор 1 на 2 действительного, конечного значения, задающего нижнюю и верхнюю границу для предполагаемого параметра. Пустая матрица указывает, что значение параметра на преобразованном пробеле не ограничивается. Изменение этого свойства также обновляет Bounds.

Нижняя граница должна быть меньше верхней границы.

CategoryVariableName

Вектор символов или массив ячеек из символьных векторов, задающий, у каких групп в данных есть отдельные ориентировочные стоимости для параметра. Вектор символов может быть именем переменной в данных, используемых для подбора кривой или одного из ключевых слов: '<GroupVariableName>' или '<None>'.

'<GroupVariableName>' указывает, что каждая группа в данных использует отдельную оценку параметра. '<None>' указывает, что все группы в данных используют ту же оценку параметра.

Если вы задаете 'Pooled' аргумент пары "имя-значение" (к любому true или false) когда вы запускаетесь sbiofit, затем функция игнорирует эту переменную. sbiofitmixed всегда игнорирует это свойство.

Примеры

свернуть все

Создайте модель PK с одним отсеком с болюсным введением и линейным разрешением.

pkmd                    = PKModelDesign;
pkc1                    = addCompartment(pkmd,'Central');
pkc1.DosingType         = 'Bolus';
pkc1.EliminationType    = 'linear-clearance';
pkc1.HasResponseVariable = true;

Предположим, что вы хотите оценить объем центрального отсека (Central). Можно указать, что такое предполагаемое количество модели, а также соответствующий параметр преобразовывает (log преобразуйте в этот пример), начальное значение, и параметр связал использование estimatedInfo объект.

estimated = estimatedInfo('log(Central)','InitialValue', 1,'Bounds',[0 10])
estimated = 
  estimatedInfo with properties:

                       Name: 'Central'
                  Transform: 'log'
            TransformedName: 'log(Central)'
               InitialValue: 1
    InitialTransformedValue: 0
                     Bounds: [0 10]
          TransformedBounds: [-Inf 2.3026]
       CategoryVariableName: '<GroupVariableName>'

Фон

В этом примере показано, как соответствовать PK индивидуума профилируют данные к модели с одним отсеком и оценить фармакокинетические параметры.

Предположим, что вы имеете данные о концентрации плазмы препарата от индивидуума и хотите оценить объем центрального отсека и разрешения. Примите, что концентрация препарата по сравнению с профилем времени следует за моноэкспоненциальным снижением Ct=C0e-ket, где Ct концентрация препарата во время t, C0 начальная концентрация, и ke константа скорости устранения, которая зависит от разрешения и объема центрального отсека ke=Cl/V.

Синтетические данные в этом примере были сгенерированы с помощью следующей модели, параметров и дозы:

  • Модель с одним отсеком с болюсным введением и устранением первого порядка

  • Объем центрального отсека (Central) = 1,70 литра

  • Параметр разрешения (Cl_Central) = 0,55 литра/час

  • Постоянная ошибочная модель

  • Доза шарика 10 мг

Загрузите данные и визуализируйте

Данные хранятся как таблица с переменными Time и Conc это представляет ход времени плазменной концентрации индивидуума после внутривенного администрирования шарика, измеренного в 13 различных моментах времени. Переменные модули для Time и Conc час и миллиграмм/литр, соответственно.

clear all
load('data15.mat')
plot(data.Time,data.Conc,'b+')
xlabel('Time (hour)');
ylabel('Drug Concentration (milligram/liter)');

Преобразуйте в groupedData Формат

Преобразуйте набор данных в groupedData объект, который является необходимым форматом данных для подходящего функционального sbiofit для дальнейшего использования. groupedData объект также позволяет вам установить независимую переменную и имена переменных группы (если они существуют). Установите модули Time и Conc переменные. Модули являются дополнительными и только необходимыми для UnitConversion покажите, который автоматически преобразует соответствие с физическими количествами в одну сопоставимую модульную систему.

gData = groupedData(data);
gData.Properties.VariableUnits = {'hour','milligram/liter'};
gData.Properties
ans = struct with fields:
                Description: ''
                   UserData: []
             DimensionNames: {'Row'  'Variables'}
              VariableNames: {'Time'  'Conc'}
       VariableDescriptions: {}
              VariableUnits: {'hour'  'milligram/liter'}
         VariableContinuity: []
                   RowNames: {}
           CustomProperties: [1x1 matlab.tabular.CustomProperties]
          GroupVariableName: ''
    IndependentVariableName: 'Time'

groupedData автоматически определите имя IndependentVariableName свойство к Time переменная данных.

Создайте модель с одним отсеком

Пользуйтесь встроенной библиотекой PK, чтобы создать модель с одним отсеком с болюсным введением и устранением первого порядка, где уровень устранения зависит от разрешения и объема центрального отсека. Используйте configset объект включить модульное преобразование.

pkmd                    = PKModelDesign;
pkc1                    = addCompartment(pkmd,'Central');
pkc1.DosingType         = 'Bolus';
pkc1.EliminationType    = 'linear-clearance';
pkc1.HasResponseVariable = true;
model                   = construct(pkmd);
configset               = getconfigset(model);
configset.CompileOptions.UnitConversion = true;

Для получения дополнительной информации при создании разделенных на отсеки моделей PK с помощью SimBiology® встроенная библиотека, смотрите, Создают Фармакокинетические Модели.

Задайте дозирование

Задайте одну дозу шарика 10 миллиграммов, данных во время = 0. Для получения дополнительной информации при подготовке различных расписаний дозирования, смотрите Дозы в Моделях SimBiology.

dose                = sbiodose('dose');
dose.TargetName     = 'Drug_Central';
dose.StartTime      = 0;
dose.Amount         = 10;
dose.AmountUnits    = 'milligram';
dose.TimeUnits      = 'hour';

Сопоставьте данные об ответе с соответствующим компонентом модели

Данные содержат данные о концентрации препарата, хранимые в Conc переменная. Эти данные соответствуют Drug_Central разновидности в модели. Поэтому сопоставьте данные с Drug_Central можно следующим образом.

responseMap = {'Drug_Central = Conc'};

Задайте параметры, чтобы оценить

Параметры, чтобы поместиться в эту модель являются объемом центрального (Центрального) отсека и уровень раскрываемости преступлений (Cl_Central). В этом случае задайте логарифмическое преобразование для этих биологических параметров, поскольку они ограничиваются быть положительными. estimatedInfo объект позволяет вам указать, что параметр преобразовывает, начальные значения и границы параметра в случае необходимости.

paramsToEstimate    = {'log(Central)','log(Cl_Central)'};
estimatedParams     = estimatedInfo(paramsToEstimate,'InitialValue',[1 1],'Bounds',[1 5;0.5 2]);

Оцените параметры

Теперь, когда вы задали модель с одним отсеком, данные, чтобы соответствовать, сопоставленные данные об ответе, параметры, чтобы оценить, и дозирование, используют sbiofit оценить параметры. Функция оценки по умолчанию, что sbiofit использование изменится, в зависимости от которого тулбоксы доступны. Чтобы видеть, какая функция использовалась во время подбора кривой, проверяйте EstimationFunction свойство соответствующего объекта результатов.

fitConst = sbiofit(model,gData,responseMap,estimatedParams,dose);

Отобразите предполагаемые параметры и постройте результаты

Заметьте, что оценки параметра не были далеки от истинных значений (1.70 и 0.55), которые использовались, чтобы сгенерировать данные. Можно также попробовать различные ошибочные модели, чтобы видеть, могли ли они далее улучшить оценки параметра.

fitConst.ParameterEstimates
ans=2×4 table
         Name         Estimate    StandardError      Bounds  
    ______________    ________    _____________    __________

    {'Central'   }     1.6993       0.034821         1      5
    {'Cl_Central'}    0.53358        0.01968       0.5      2

s.Labels.XLabel     = 'Time (hour)';
s.Labels.YLabel     = 'Concentration (milligram/liter)';
plot(fitConst,'AxesStyle',s);

Используйте различные ошибочные модели

Попробуйте три других поддерживаемых ошибочных модели (пропорциональный, комбинация постоянных и пропорциональных ошибочных моделей и экспоненциал).

fitProp = sbiofit(model,gData,responseMap,estimatedParams,dose,...
                      'ErrorModel','proportional');
fitExp  = sbiofit(model,gData,responseMap,estimatedParams,dose,...
                      'ErrorModel','exponential');
fitComb = sbiofit(model,gData,responseMap,estimatedParams,dose,...
                      'ErrorModel','combined');

Используйте веса вместо ошибочной модели

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

weightsNumeric = ones(size(gData.Conc));
fitWeightsNumeric = sbiofit(model,gData,responseMap,estimatedParams,dose,'Weights',weightsNumeric);

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

weightsFunction = @(y) 1./y.^2;
fitWeightsFunction = sbiofit(model,gData,responseMap,estimatedParams,dose,'Weights',weightsFunction);

Сравните информационные критерии выбора модели

Сравните логарифмическую правдоподобность, AIC и значения BIC каждой модели, чтобы видеть, какая ошибочная модель лучше всего подбирает данным. Большее значение вероятности указывает, что соответствующая модель подбирает модель лучше. Для AIC и BIC, меньшие значения лучше.

allResults = [fitConst,fitWeightsNumeric,fitWeightsFunction,fitProp,fitExp,fitComb];
errorModelNames = {'constant error model','equal weights','proportional weights', ...
                   'proportional error model','exponential error model',...
                   'combined error model'};
LogLikelihood = [allResults.LogLikelihood]';
AIC = [allResults.AIC]';
BIC = [allResults.BIC]';
t = table(LogLikelihood,AIC,BIC);
t.Properties.RowNames = errorModelNames;
t
t=6×3 table
                                LogLikelihood      AIC        BIC  
                                _____________    _______    _______

    constant error model            3.9866       -3.9732    -2.8433
    equal weights                   3.9866       -3.9732    -2.8433
    proportional weights           -3.8472        11.694     12.824
    proportional error model       -3.8257        11.651     12.781
    exponential error model         1.1984        1.6032     2.7331
    combined error model            3.9163       -3.8326    -2.7027

На основе информационных критериев постоянная ошибочная модель (или равные веса) соответствует данным лучше всего, поскольку это имеет самое большое значение логарифмической правдоподобности и самый маленький AIC и BIC.

Отобразите предполагаемые значения параметров

Покажите предполагаемые значения параметров каждой модели.

Estimated_Central       = zeros(6,1);
Estimated_Cl_Central    = zeros(6,1);
t2 = table(Estimated_Central,Estimated_Cl_Central);
t2.Properties.RowNames = errorModelNames;
for i = 1:height(t2)
    t2{i,1} = allResults(i).ParameterEstimates.Estimate(1);
    t2{i,2} = allResults(i).ParameterEstimates.Estimate(2);
end
t2
t2=6×2 table
                                Estimated_Central    Estimated_Cl_Central
                                _________________    ____________________

    constant error model             1.6993                0.53358       
    equal weights                    1.6993                0.53358       
    proportional weights             1.9045                0.51734       
    proportional error model         1.8777                0.51147       
    exponential error model          1.7872                0.51701       
    combined error model             1.7008                0.53271       

Заключение

Этот пример показал, как оценить параметры PK, а именно, объем центрального отсека и параметр разрешения индивидуума, путем подбора кривой данным о профиле PK к модели с одним отсеком. Вы сравнили информационные критерии каждой модели и оценили, что значения параметров различных ошибочных моделей видели, какая модель лучше всего объяснила данные. Финал соответствовал результатам, предложенным обоих, которых постоянные и объединенные ошибочные модели предоставили, самые близкие оценки к значениям параметров раньше генерировали данные. Однако постоянная ошибочная модель является лучшей моделью, как обозначено логарифмической правдоподобностью, AIC и критериями информации о BIC.

В этом примере показано, как оценить специфичный для категории (такой как молодой по сравнению со старым, штекерным по сравнению с розеткой), отдельно-специфичные, и параметры всего населения с помощью PK профилируют данные от нескольких индивидуумов.

Фон

Предположим, что вы имеете данные о концентрации плазмы препарата от 30 индивидуумов и хотите оценить фармакокинетические параметры, а именно, объемы центрального и периферийного отсека, разрешения и межразделенного на отсеки разрешения. Примите, что концентрация препарата по сравнению с профилем времени следует за снижением biexponential Ct=Ae-at+Be-bt, где Ct концентрация препарата во время t, и a и b наклоны для соответствующих экспоненциальных снижений.

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

Эти синтетические данные содержат ход времени плазменных концентраций 30 индивидуумов после дозы шарика (100 мг), измеренных в разное время и для центральных и для периферийных отсеков. Это также содержит категориальные переменные, а именно, Sex и Age.

clear
load('sd5_302RAgeSex.mat')

Преобразуйте в groupedData Формат

Преобразуйте набор данных в groupedData объект, который является необходимым форматом данных для подходящего функционального sbiofit. groupedData объект также позволяет вам независимую переменную набора и имена переменных группы (если они существуют). Установите модули IDВремя, CentralConc, PeripheralConc, Age, и Sex переменные. Модули являются дополнительными и только необходимыми для UnitConversion покажите, который автоматически преобразует соответствие с физическими количествами в одну сопоставимую модульную систему.

gData = groupedData(data);
gData.Properties.VariableUnits = {'','hour','milligram/liter','milligram/liter','',''};
gData.Properties
ans = struct with fields:
                Description: ''
                   UserData: []
             DimensionNames: {'Row'  'Variables'}
              VariableNames: {1x6 cell}
       VariableDescriptions: {}
              VariableUnits: {1x6 cell}
         VariableContinuity: []
                   RowNames: {}
           CustomProperties: [1x1 matlab.tabular.CustomProperties]
          GroupVariableName: 'ID'
    IndependentVariableName: 'Time'

IndependentVariableName и GroupVariableName свойства были автоматически установлены в Time и ID переменные данных.

Визуализируйте данные

Отобразите данные об ответе для каждого индивидуума.

t = sbiotrellis(gData,'ID','Time',{'CentralConc','PeripheralConc'},...
                'Marker','+','LineStyle','none');
% Resize the figure.
t.hFig.Position(:) = [100 100 1280 800];

Настройте модель 2D отсека

Пользуйтесь встроенной библиотекой PK, чтобы создать модель 2D отсека с дозированием вливания и устранением первого порядка, где уровень устранения зависит от разрешения и объема центрального отсека. Используйте configset объект включить модульное преобразование.

pkmd                                    = PKModelDesign;
pkc1                                    = addCompartment(pkmd,'Central');
pkc1.DosingType                         = 'Bolus';
pkc1.EliminationType                    = 'linear-clearance';
pkc1.HasResponseVariable                = true;
pkc2                                    = addCompartment(pkmd,'Peripheral');
model                                   = construct(pkmd);
configset                               = getconfigset(model);
configset.CompileOptions.UnitConversion = true;

Для получения дополнительной информации при создании разделенных на отсеки моделей PK с помощью SimBiology® встроенная библиотека, смотрите, Создают Фармакокинетические Модели.

Задайте дозирование

Примите, что каждый индивидуум получает дозу шарика 100 мг во время = 0. Для получения дополнительной информации при подготовке различных стратегий дозирования, смотрите Дозы в Моделях SimBiology.

dose             = sbiodose('dose','TargetName','Drug_Central');
dose.StartTime   = 0;
dose.Amount      = 100;
dose.AmountUnits = 'milligram';
dose.TimeUnits   = 'hour';

Сопоставьте данные об ответе с соответствующими компонентами модели

Данные содержат измеренную плазменную концентрацию в центральных и периферийных отсеках. Сопоставьте эти переменные с соответствующими компонентами модели, которые являются Drug_Central и Drug_Peripheral.

responseMap = {'Drug_Central = CentralConc','Drug_Peripheral = PeripheralConc'};

Задайте параметры, чтобы оценить

Задайте объемы центральных и периферийных отсеков Central и Peripheral, межразделенное на отсеки разрешение Q12, и разрешение Cl_Central как параметры, чтобы оценить. estimatedInfo объект позволяет вам опционально указать, что параметр преобразовывает, начальные значения и границы параметра. Начиная с обоих Central и Peripheral ограничиваются быть положительным, задать логарифмическое преобразование для каждого параметра.

paramsToEstimate    = {'log(Central)', 'log(Peripheral)', 'Q12', 'Cl_Central'};
estimatedParam      = estimatedInfo(paramsToEstimate,'InitialValue',[1 1 1 1]);

Оцените отдельно-специфичные параметры

Оцените один набор параметров для каждого индивидуума путем установки 'Pooled' аргумент пары "имя-значение" false.

unpooledFit =  sbiofit(model,gData,responseMap,estimatedParam,dose,'Pooled',false);

Отображение результатов

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

t = plot(unpooledFit);
% Resize the figure.
t.hFig.Position(:) = [100 100 1280 800];

Для необъединенной подгонки, sbiofit всегда возвращается, каждый заканчивается объект для каждого индивидуума.

Исследуйте оценки параметра на зависимости от категории

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

Сначала извлеките ID и значения категории для каждого ID

catParamValues = unique(gData(:,{'ID','Sex','Age'}));

Добавьте переменные в таблицу, содержащую оценку каждого параметра.

allParamValues            = vertcat(unpooledFit.ParameterEstimates);
catParamValues.Central    = allParamValues.Estimate(strcmp(allParamValues.Name, 'Central'));
catParamValues.Peripheral = allParamValues.Estimate(strcmp(allParamValues.Name, 'Peripheral'));
catParamValues.Q12        = allParamValues.Estimate(strcmp(allParamValues.Name, 'Q12'));
catParamValues.Cl_Central = allParamValues.Estimate(strcmp(allParamValues.Name, 'Cl_Central'));

Постройте оценки каждого параметра для каждой категории. gscatter требует Statistics and Machine Learning Toolbox™. Если у вас нет его, используйте другие альтернативные функции построения графика, такие как plot.

h           = figure;
ylabels     = {'Central','Peripheral','Cl\_Central','Q12'};
plotNumber  = 1;
for i = 1:4
    thisParam = estimatedParam(i).Name;
    
    % Plot for Sex category
    subplot(4,2,plotNumber);
    plotNumber  = plotNumber + 1;
    gscatter(double(catParamValues.Sex), catParamValues.(thisParam), catParamValues.Sex);
    ax          = gca;
    ax.XTick    = [];
    ylabel(ylabels(i));
    legend('Location','bestoutside')
    % Plot for Age category
    subplot(4,2,plotNumber);
    plotNumber  = plotNumber + 1;
    gscatter(double(catParamValues.Age), catParamValues.(thisParam), catParamValues.Age);
    ax          = gca;
    ax.XTick    = [];
    ylabel(ylabels(i));
    legend('Location','bestoutside')
end
% Resize the figure.
h.Position(:) = [100 100 1280 800];

На основе графика кажется, что молодые индивидуумы склонны иметь более высокие объемы центральных и периферийных отсеков (Central, Peripheral) чем старые индивидуумы (то есть, объемы, кажется, являются возрастными). Кроме того, штекеры имеют тенденцию иметь более высокий уровень раскрываемости преступлений (Cl_Central) чем розетки, но противоположное для параметра Q12 (то есть, разрешение и Q12, кажется, сексуально-специфичны).

Оцените специфичные для категории параметры

Используйте 'CategoryVariableName' свойство estimatedInfo объект задать, который категория использовать во время подбора кривой. Используйте 'Sex' как группа к пригодному для разрешения Cl_Central и Q12 параметры. Используйте 'Age' как группа к пригодному для Central и Peripheral параметры.

estimatedParam(1).CategoryVariableName = 'Age';
estimatedParam(2).CategoryVariableName = 'Age';
estimatedParam(3).CategoryVariableName = 'Sex';
estimatedParam(4).CategoryVariableName = 'Sex';
categoryFit = sbiofit(model,gData,responseMap,estimatedParam,dose)
categoryFit = 
  OptimResults with properties:

                   ExitFlag: 3
                     Output: [1x1 struct]
                  GroupName: []
                       Beta: [8x5 table]
         ParameterEstimates: [120x6 table]
                          J: [240x8x2 double]
                       COVB: [8x8 double]
           CovarianceMatrix: [8x8 double]
                          R: [240x2 double]
                        MSE: 0.4362
                        SSE: 205.8690
                    Weights: []
              LogLikelihood: -477.9195
                        AIC: 971.8390
                        BIC: 1.0052e+03
                        DFE: 472
             DependentFiles: {1x3 cell}
    EstimatedParameterNames: {'Central'  'Peripheral'  'Q12'  'Cl_Central'}
             ErrorModelInfo: [1x3 table]
         EstimationFunction: 'lsqnonlin'

При подборе кривой по категориям (или группа), sbiofit всегда возвращается, каждый заканчивается объект, не один для каждого уровня категории. Это вызвано тем, что и штекерные и розеточные индивидуумы считаются частью той же оптимизации с помощью тех же ошибочных параметров модели и параметров ошибок, так же для молодых и старых индивидуумов.

Постройте результаты

Постройте специфичные для категории предполагаемые результаты.

t = plot(categoryFit);
% Resize the figure.
t.hFig.Position(:) = [100 100 1280 800];

Для Cl_Central и Q12 параметры, все штекеры имели те же оценки, и так же для розеток. Для Central и Peripheral параметры, у всех молодых индивидуумов были те же оценки, и так же для старых индивидуумов.

Оцените параметры всего населения

Чтобы лучше сравнить результаты, подбирайте модель ко всем данным, объединенным вместе, то есть, оцените один набор параметров для всех индивидуумов путем установки 'Pooled' аргумент пары "имя-значение" true. Предупреждающее сообщение говорит вам, что эта опция проигнорирует любую специфичную для категории информацию (если они будут существовать).

pooledFit = sbiofit(model,gData,responseMap,estimatedParam,dose,'Pooled',true);
Warning: CategoryVariableName property of the estimatedInfo object is ignored when using the 'Pooled' option.

Постройте результаты

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

t = plot(pooledFit);
% Resize the figure.
t.hFig.Position(:) = [100 100 1280 800];

Сравните остаточные значения

Сравните остаточные значения CentralConc и PeripheralConc ответы для каждой подгонки.

t = gData.Time;
allResid(:,:,1) = pooledFit.R;
allResid(:,:,2) = categoryFit.R;
allResid(:,:,3) = vertcat(unpooledFit.R);

h = figure;
responseList = {'CentralConc', 'PeripheralConc'};
for i = 1:2
    subplot(2,1,i);
    oneResid = squeeze(allResid(:,i,:));
    plot(t,oneResid,'o');
    refline(0,0); % A reference line representing a zero residual
    title(sprintf('Residuals (%s)', responseList{i}));
    xlabel('Time');
    ylabel('Residuals');
    legend({'Pooled','Category-Specific','Unpooled'});
end
% Resize the figure.
h.Position(:) = [100 100 1280 800];

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

Введенный в R2014a
Для просмотра документации необходимо авторизоваться на сайте