fitcox

Создайте модель пропорциональных рисков Кокса

Описание

fitcox функция создает модель пропорциональных опасностей Кокса для данных о жизни. Базовая модель Кокса включает функцию опасности h 0 (t) и коэффициенты модели b такие что для предиктора X, скорость опасности в момент t

h(Xi,t)=h0(t)exp[j=1pxijbj],

где коэффициенты b не зависят от времени. fitcox выводит как модельные коэффициенты b так и коэффициент опасности h 0 (t) и сохраняет их как свойства в полученной CoxModel объект.

Полная модель Кокса включает расширения базовой модели, такие как опасности в отношении различных базовых линий или включение переменных стратификации. См. Расширение модели пропорциональных рисков Кокса.

coxMdl = fitcox(X,T) возвращает объект модели пропорциональной опасности Кокса coxMdl использование значений предиктора X и время события T.

пример

coxMdl = fitcox(X,T,Name,Value) изменяет подгонку с помощью одной или нескольких Name,Value аргументы. Например, когда данные включают цензуру (значения, которые не наблюдаются), Censoring аргумент задает данные цензуры.

Примеры

свернуть все

Случайные переменные Вейбула с тем же параметром формы имеют пропорциональные скорости опасности; см. Распределение Вейбула. Скорость опасности с параметром шкалы a и параметр формы b в момент времени t является

babtb-1.

Сгенерируйте псевдослучайные выборки из распределения Вейбула с параметрами шкалы 1, 5 и 1/3 и с тем же параметром формы B.

rng default % For reproducibility
B = 2;
A = ones(100,1);
data1 = wblrnd(A,B);
A2 = 5*A;
data2 = wblrnd(A2,B);
A3 = A/3;
data3 = wblrnd(A3,B);

Составьте таблицу данных. Предикторами являются три типа переменных, 1, 2 или 3.

predictors = categorical([A;2*A;3*A]);
data = table(predictors,[data1;data2;data3],'VariableNames',["Predictors" "Times"]);

Подбор регрессии Кокса к данным.

mdl = fitcox(data,"Times")
mdl = 
Cox Proportional Hazards regression model:

                     Beta        SE        zStat       pValue  
                    _______    _______    _______    __________

    Predictors_2    -3.5834    0.33187    -10.798    3.5299e-27
    Predictors_3     2.1668    0.20802     10.416    2.0899e-25

rates = exp(mdl.Coefficients.Beta)
rates = 2×1

    0.0278
    8.7301

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

Загрузите lightbulb набор данных.

load lightbulb

Подгонка модели пропорциональных рисков Кокса на время жизни лампочек с учетом цензуры. Переменная предиктора является типом лампы.

coxMdl = fitcox(lightbulb(:,2),lightbulb(:,1), ...
    'Censoring',lightbulb(:,3))
coxMdl = 
Cox Proportional Hazards regression model:

           Beta       SE      zStat       pValue  
          ______    ______    ______    __________

    X1    4.7262    1.0372    4.5568    5.1936e-06

Найдите частоту опасности лампочек накаливания по сравнению с флуоресцентными лампочками путем оценки exp(Beta).

hr = exp(coxMdl.Coefficients.Beta)
hr = 112.8646

Оценка коэффициента опасности eBeta = 112.8646, что означает, что предполагаемая опасность для лампочек накаливания в 112.86 раз превышает опасность для лампочек флуоресценции. Малое значение coxMdl.Coefficients.pValue указывает на незначительную вероятность того, что два типа лампочек имеют одинаковые скорости опасности, что означало бы Beta = 0.

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

свернуть все

Предикторные значения, заданные как матрица или таблица.

  • Матрица содержит по одному столбцу для каждого предиктора и по одной строке для каждого наблюдения.

  • Таблица содержит по одной строке для каждого наблюдения. Таблица может также содержать данные времени, а также предикторы.

По умолчанию, если данные предиктора находятся в таблице, fitcox принимает, что переменная категориальна, если это логический вектор, категориальный вектор, символьный массив, строковые массивы или массив ячеек из векторов символов. Если данные предиктора являются матрицей, fitcox принимает, что все предикторы непрерывны. Чтобы идентифицировать любые другие предикторы как категориальные предикторы, задайте их с помощью CategoricalPredictors аргумент имя-значение.

Если X, T, значение 'Frequency', или значение 'Stratification' содержит NaN значения, затем fitcox удаляет строки с NaN значения от всех данных при подборе модели Кокса.

Типы данных: double | table | categorical

Время события, заданное как одно из следующих:

  • Реальный вектор-столбец.

  • Действительная матрица с двумя столбцами, представляющими начальное и стоповое время.

  • Имя столбца в таблице X.

  • Формула в обозначение Уилкинсона для таблицы X. Например, чтобы указать, что столбцы таблицы 'x' и 'y' находятся в модели, использование

    'T ~ x + y'

    См. Уилкинсон Обозначение.

Для векторных или матричных записей количество строк T должно совпадать с количеством строк в X.

Используйте двухколоночную форму T для подгонки модели с изменяющимися во времени коэффициентами. См. Модель пропорциональных рисков Кокса с зависимыми от времени ковариатами.

Типы данных: single | double | char | string

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

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

Пример: Подгонка данных с цензурированными значениями cens, задайте 'Censoring',cens.

Начальные значения коэффициентов, заданные как числовой вектор значений коэффициентов. Эти значения инициируют итерации максимизации вероятностей, выполненные fitcox.

Типы данных: double

X значения, при которых вычислить базовую опасность, заданные как действительный скаляр или вектор-строка. Если Baseline является вектор-строка, его длина является количеством предикторов, поэтому существует одна базовая линия для каждого предиктора.

Базовая линия по умолчанию для непрерывных предикторов mean(X), так что коэффициент опасности по умолчанию на X для этих предикторов h(t)*exp((X – mean(X))*b). Базовая линия по умолчанию для категориальных предикторов 0. Введите 0 вычислить базовый уровень для всех предикторов относительно 0, так что скорость опасности на X является h(t)*exp(X*b). Изменение базовой линии изменяет коэффициент опасности, но не влияет на оценки коэффициентов.

Для идентифицированных категориальных предикторов, fitcox создает фиктивные переменные. fitcox создает одну переменную с меньшим количеством манекенов, чем количество категорий. Для получения дополнительной информации смотрите Автоматическое создание переменных манекена.

Пример: 'Baseline',0

Типы данных: double

Категориальный список предикторов, заданный как одно из значений в этой таблице.

ЗначениеОписание
Вектор положительных целых чиселКаждый элемент в векторе является индексом значением, соответствующим столбцу данных предиктора (X), которая содержит категориальную переменную.
Логический векторA true запись означает, что соответствующий столбец данных предиктора (X) - категориальная переменная.
Матрица символовКаждая строка матрицы является именем предиктора, переменной в таблице X. Имена должны совпадать с записями в PredictorNames. Дополните имена дополнительными пробелами, чтобы каждая строка матрицы символов имела одинаковую длину.
Строковые массивы или массив ячеек векторов символовКаждый элемент массива является именем предиктора, переменной в таблице X. Имена должны совпадать с записями в PredictorNames.
'all'Все предикторы категоричны.

По умолчанию, если данные предиктора находятся в таблице, fitcox принимает, что переменная категориальна, если это логический вектор, категориальный вектор, символьный массив, строковые массивы или массив ячеек из векторов символов. Если данные предиктора являются матрицей, fitcox принимает, что все предикторы непрерывны. Чтобы идентифицировать любые другие предикторы как категориальные предикторы, задайте их с помощью 'CategoricalPredictors' аргумент имя-значение.

Для идентифицированных категориальных предикторов, fitcox создает фиктивные переменные. fitcox создает одну переменную с меньшим количеством манекенов, чем количество категорий. Для получения дополнительной информации смотрите Автоматическое создание переменных манекена.

Пример: 'CategoricalPredictors','all'

Типы данных: single | double | logical | char | string | cell

Индикатор цензуры, заданный как логический вектор с одинаковым числом строк, как X или имя столбца в таблице X. Используйте 1 для наблюдений, которые подвергаются правильной цензуре, и 0 для наблюдений, которые полностью наблюдаются. По умолчанию все наблюдения наблюдаются полностью. Для получения примера смотрите Модель пропорциональных опасностей Кокса для цензурированных данных.

Пример: 'Censoring',cens

Типы данных: logical

Частота или веса наблюдений, заданные как массив того же размера, что и T содержит неотрицательные скалярные значения. Массив может содержать целочисленные значения, соответствующие частотам наблюдений или неотрицательные значения, соответствующие весам наблюдений.

Значение по умолчанию является 1 на строку X и T.

Если X, T, значение 'Frequency', или значение 'Stratification' содержит NaN значения, затем fitcox удаляет строки с NaN значения от всех данных при подборе модели Кокса.

Пример: 'Frequency',w

Типы данных: double

Параметры управления алгоритмом для итерационного алгоритма fitcox используется для оценки решения, заданного как структура. Создайте эту структуру с помощью statset. Для имен параметров и значений по умолчанию смотрите следующую таблицу или введите statset('fitcox').

В таблице «допуск завершения» означает, что, если внутренние итерации вызывают изменение заданного значения меньше, чем допуск, итерации останавливаются.

Поле в структуреОписаниеЗначения
DisplayКоличество информации, возвращенной в командную строку
  • 'off' - Нет (по умолчанию)

  • 'final' - Конечный выход

  • 'iter' - Выход при каждой итерации

MaxFunEvalsМаксимальное количество вычислений функцииПоложительное целое число; по умолчанию является 200
MaxIterМаксимальное количество итерацийПоложительное целое число; по умолчанию является 100
TolFunДопуск на прекращение при изменении вероятности; см. Модель пропорциональных рисков КоксаПоложительная скалярная величина; по умолчанию является 1e-8
TolXДопуск завершения для изменения параметра (оценка предиктора)Положительная скалярная величина; по умолчанию является 1e-8

Пример: 'OptimizationOptions',statset('TolX',1e-6,'MaxIter',200)

Имена переменных предиктора, заданные как строковые массивы уникальных имен или массив ячеек из уникальных векторов символов. Функциональность 'PredictorNames' зависит от того, как вы поставляете обучающие данные.

  • Если вы поставляете X в качестве числового массива можно использовать 'PredictorNames' для назначения имен переменным предиктора в X.

    • Порядок имен в PredictorNames должен соответствовать порядку столбцов X. То есть PredictorNames{1} - имя X(:,1), PredictorNames{2} - имя X(:,2)и так далее. Кроме того, size(X,2) и numel(PredictorNames) должно быть равным.

    • По умолчанию PredictorNames является {'X1','X2',...}.

  • Если вы поставляете X в качестве таблицы можно использовать 'PredictorNames' выбрать, какие переменные предиктора использовать в обучении. То есть, fitcox использует только переменные предиктора в PredictorNames и временной переменной во время обучения.

    • PredictorNames должен быть подмножеством X.Properties.VariableNames и не может включать имя временной переменной T.

    • По умолчанию PredictorNames содержит имена всех переменных предиктора.

    • Задайте предикторы для обучения, используя любой из 'PredictorNames' или формула в обозначении Уилкинсона, но не в обоих.

Пример: 'PredictorNames',{'Sex','Age','Weight','Smoker'}

Типы данных: string | cell

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

Значение по умолчанию [] не является переменной расслоения.

Если X, T, значение 'Frequency', или значение 'Stratification' содержит NaN значения, затем fitcox удаляет строки с NaN значения от всех данных при подборе модели Кокса.

Пример: 'Stratification',Gender

Типы данных: single | double | char | string | categorical

Метод обработки связанного времени отказа, заданный как 'breslow' (метод Бреслоу) или 'efron' (метод Эфрона). Смотрите функцию частичного правдоподобия для связанных событий.

Пример: 'TieBreakMethod','efron'

Типы данных: char | string

Введенный в R2021a