我正在尝试使用here中的包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
在使用上述内容时,我的模型很适合给我一个结果。但是,我想添加其他自变量。这些是二进制分类,我已经尝试过它们作为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上搜索这个问题的其他答案。
非常感谢。
答案 0 :(得分:0)
对,你好。
非常感谢@Mike试图帮助我。我找到了这种行为的解释,这是SCCS建模方法的一个怪癖,而不是与clogit
本身有关。
来自Farrington,Whitaker和Weldeselassie 自我控制案例系列研究,R 的建模指南:
请注意,协变量的主要影响不包括在模型公式中,因为它不能在SCCS模型中估计,因为它会降低可能性。
因此,主效应无法估计,因此返回为NA
。
对于发布我应该能够找到答案的问题表示歉意,但希望这会对遇到此“问题”的其他人有用。