Coxph "X-матрица считается единственной" без совершенной классификации? - PullRequest
0 голосов
/ 11 июня 2018

Я пытаюсь выполнить серию случаев с самоконтролем, используя пакет sccs из здесь .Это статистический метод, который берет «базовые» и «выставленные» периоды в течение, например, года жизни пациента.Периоды воздействия могут представлять воздействие препарата, и измеренный результат может быть побочным эффектом препарата, как, впрочем, и в моем случае.

Этот пакет, по сути, форматирует данные в интервалы базовой линии и воздействияриск.Идентификатор пациента indivL (фактор), interval (целое число, количество дней), exposure статус (0/1), event статус (0/1).Затем он передает эти данные в survival::clogit как модель вида:

event ~ exposure + strata(indivL) + offset(log(interval))

Данные, подаваемые в clogit, представляют собой фрейм данных формы:

   indivL event eventday  lower  upper interval age   exposure  indiv aevent astart   aend drugtype
 * <fct>  <dbl>    <int>  <dbl>  <dbl>    <dbl> <fct> <fct>    <dbl>  <dbl>  <dbl>  <dbl>     <dbl>
 1 1         0.    22361 22219. 22252.      34. 1     0           1. 22361. 22219. 22460.        0.
 2 1         0.    22361 22253. 22260.       8. 1     1           1. 22361. 22219. 22460.        0.
 3 1         1.    22361 22261. 22460.     200. 1     0           1. 22361. 22219. 22460.        0.
 4 2         0.    22401 22219. 22252.      34. 1     0           1. 22401. 22219. 22460.        0.
 5 2         0.    22401 22253. 22260.       8. 1     1           1. 22401. 22219. 22460.        0.
 6 2         1.    22401 22261. 22460.     200. 1     0           1. 22401. 22219. 22460.        0.
 7 3         0.    31071 30834. 30863.      30. 1     0           2. 31071. 30834. 31075.        0.
 8 3         0.    31071 30864. 30871.       8. 1     1           2. 31071. 30834. 31075.        0.
 9 3         1.    31071 30872. 31075.     204. 1     0           2. 31071. 30834. 31075.        0.
10 4         1.      261   207.   356.     150. 1     0           3.   261.   207.   425.        0.
# ... with 1,211,460 more rows

Iчтобы моя модель работала хорошо, чтобы дать мне результат при использовании вышеуказанного.Тем не менее, я хочу добавить в другие независимые переменные.Это двоичные категории, и я попробовал их как целые числа 0/1 и 2-уровневые факторы.Одним из примеров будет drugtype.В этом случае модель принимает вид:

event ~ exposure + drugtype + strata(indivL) + offset(log(interval))

Моя ошибка:

Warning message:
In coxph(formula = Surv(rep(1, 176241L), event) ~ exposure + drugtype +  :
  X matrix deemed to be singular; variable 2

Моя модель:

--SNIP--
coxph(formula = Surv(rep(1, 176241L), event) ~ exposure + drugtype + 
     strata(indivL) + offset(log(interval)), data = chopdat, method = "exact")

  n= 176049, number of events= 58602 
   (192 observations deleted due to missingness)

             coef exp(coef) se(coef)     z            Pr(>|z|)    
exposure1 0.70760   2.02912  0.01662 42.57 <0.0000000000000002 ***
drugtype       NA        NA  0.00000    NA                  NA    
--SNIP--

Как видите, онане нравится drugtype, представляющая собой двоичную переменную.

Посмотрев вокруг, я наткнулся на несколько источников, которые предполагают, что проблема в случае "идеальной классификации", т.е. одна из моих переменных отлично предсказывает наличиедругого.Однако, используя xtabs(), я получаю:

> xtabs(~drugtype + event, data = chopdat)

         event
 drugtype      0      1
        0 778306 388279
        1  29344  14625

и

> xtabs(~ exposure + event, data = chopdat)

        event
exposure      0      1
       0 427482 380101
       1 380788  23113

и

> xtabs(~ drugtype + exposure, data = chopdat)

       drugtype
exposure      0      1
       0 777655  29308
       1 388930  14661

Предполагается, что существует хорошее распределение и нет точной классификации.

Может кто-нибудь указать мне правильное направление для получения дополнительной информации об этом?Я чувствую, что достиг предела того, что я могу сделать с документацией и ищу другие ответы на этот вопрос в StackOverflow.

Большое спасибо.

1 Ответ

0 голосов
/ 18 июня 2018

Хорошо, привет всем.

Большое спасибо @Mike за попытку помочь мне.Я нашел объяснение этому поведению, и оно представляет собой причуду метода моделирования SCCS, а не самому clogit.

Из Farrington, Whitaker and Weldeselassie Самоуправляемые серии исследований, Руководство по моделированию с R :

Обратите внимание, что основной эффект ковариата не включен в формулу модели, поскольку его нельзя оценить в модели SCCS, поскольку он выпадает извероятность.

Таким образом, основной эффект не может быть оценен и поэтому возвращается как NA.

Извинения за публикацию вопроса, на который я должен был найти ответно, надеюсь, это будет полезно всем, кто сталкивается с этой «проблемой».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...