Я пытаюсь выполнить серию случаев с самоконтролем, используя пакет 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.
Большое спасибо.