我正在对一些单独的组件保留在软件项目的源代码中的时间进行生存分析,但是其中的某些组件会被survfit
函数删除。
这就是我在做什么:
library(survival)
data <- read.table(text = "component_id weeks removed
1 1 1
2 1 1
3 1 1
4 1 1
5 1 1
6 1 1
7 1 1
8 2 0
9 2 0
10 2 0
11 2 0
12 2 1
13 2 1
14 2 0
15 2 0
16 2 0
17 2 0
18 2 0
19 2 0
20 2 1
21 2 1
22 2 0
23 2 0
24 3 1
25 3 1
26 3 1
27 3 1
28 7 1
29 7 1
30 14 1
31 14 1
32 14 1
33 14 1
34 14 1
35 14 1
36 14 1
37 14 1
38 14 1
39 14 1
40 14 1
41 14 1
42 14 1
43 14 1
44 14 1
45 14 1
46 14 1
47 14 1
48 40 1
49 40 1
50 40 1
51 40 1
52 48 1
53 48 1
54 48 1
55 48 1
56 48 1
57 48 1
58 48 1
59 48 1
60 56 1
61 56 1
62 56 1
63 56 1
64 56 1
65 56 1
66 56 1
67 56 1
68 56 1
69 56 1", header = TRUE)
fit <- survfit(Surv(data$weeks, data$removed) ~ 1)
summary(fit, censored=TRUE)
这是输出
Call: survfit(formula = Surv(data$weeks, data$removed) ~ 1)
time n.risk n.event survival std.err lower 95% CI upper 95% CI
1 69 7 0.899 0.0363 0.830 0.973
2 62 4 0.841 0.0441 0.758 0.932
3 46 4 0.767 0.0533 0.670 0.879
7 42 2 0.731 0.0567 0.628 0.851
14 40 18 0.402 0.0654 0.292 0.553
40 22 4 0.329 0.0629 0.226 0.478
48 18 8 0.183 0.0520 0.105 0.319
56 10 10 0.000 NaN NA NA
我原本希望活动的数量为69,但是我删除了12个主题。
我最初以为我是在滥用包的功能,并在similar situation之后采用了type="interval2"
的方法,但是随着主题和事件数量的不断增加,这种下降一直在发生:>
as.t2 <- function(i, data) if (data$removed[i] == 1) data$weeks[i] else NA
size <- length(data$weeks)
t1 <- data$weeks
t2 <- sapply(1:size, as.t2, data = data)
interval_fit <- survfit(Surv(t1, t2, type="interval2") ~ 1)
summary(interval_fit, censored=TRUE)
接下来,我找到了我所说的a mid-air explanation,进一步澄清了这种情况。我了解这是由于在“恒定的审查时间”之后出现了未经审查的主题所引起的,但是为什么呢?
这使我以某种方式更深入地研究了权利截断,并意识到研究类型与我所经历的下降非常接近。这是Klein&Moeschberger:
仅当观察事件时间在某个观察窗内的那些人时,才发生生存数据的截断。 $(Y_L,Y_R)$ 。没有观察到事件时间不在此间隔内的个人,调查人员也无法获得有关该主题的信息。
$ Y_L $ 等于零时,将发生右截断。也就是说,仅当 $ X \ leq Y_R $ 时,我们才观察生存时间 $ X $ 。>
从我的角度来看,这些滴剂无论进入什么时候都为我的研究提供了重要信息。
如何停止滴水?