@@ -90,20 +90,24 @@ gs_info_ahr <- function(
90
90
hr = c(.9 , .6 ),
91
91
dropout_rate = .001
92
92
),
93
- ratio = 1 , # experimental:Control randomization ratio
94
- event = NULL , # event at analyses
95
- analysis_time = NULL , # times of analyses
93
+ ratio = 1 ,
94
+ event = NULL ,
95
+ analysis_time = NULL ,
96
96
interval = c(.01 , 1000 )) {
97
- # Check input values ----
97
+ # -------------------------- #
98
+ # Check input values #
99
+ # -------------------------- #
98
100
check_enroll_rate(enroll_rate )
99
101
check_fail_rate(fail_rate )
100
102
check_enroll_rate_fail_rate(enroll_rate , fail_rate )
101
103
104
+ # at least one of `analysis_time` or `event` should be provided
102
105
if (is.null(analysis_time ) && is.null(event )) {
103
106
stop(" gs_info_ahr(): One of `event` and `analysis_time`
104
107
must be a numeric value or vector with increasing values" )
105
108
}
106
109
110
+ # get the number of analyses
107
111
n_analysis <- 0
108
112
if (! is.null(analysis_time )) {
109
113
check_analysis_time(analysis_time )
@@ -120,42 +124,37 @@ gs_info_ahr <- function(
120
124
}
121
125
}
122
126
123
- # Check input values ----
127
+ # -------------------------- #
128
+ # Calc statistical info #
129
+ # -------------------------- #
124
130
avehr <- NULL
125
131
if (! is.null(analysis_time )) {
126
- # calculate AHR, Events, info, info0 given the analysis_time
127
- avehr <- ahr(
128
- enroll_rate = enroll_rate , fail_rate = fail_rate ,
129
- ratio = ratio , total_duration = analysis_time
130
- ) | > select(- n )
131
- # check if the output Events is larger enough than the targeted events
132
+ # calculate events given the `analysis_time`
133
+ avehr <- ahr(enroll_rate = enroll_rate , fail_rate = fail_rate ,
134
+ ratio = ratio , total_duration = analysis_time ) | > select(- n )
135
+ # check if the above events >= targeted events
132
136
for (i in seq_along(event )) {
133
137
if (avehr $ event [i ] < event [i ]) {
134
- avehr [i , ] <- expected_time(
135
- enroll_rate = enroll_rate , fail_rate = fail_rate ,
136
- ratio = ratio , target_event = event [i ],
137
- interval = interval
138
- )
138
+ avehr [i , ] <- expected_time(enroll_rate = enroll_rate , fail_rate = fail_rate ,
139
+ ratio = ratio , target_event = event [i ],
140
+ interval = interval )
139
141
}
140
142
}
141
143
} else {
142
144
for (i in seq_along(event )) {
143
- avehr <- rbind(
144
- avehr ,
145
- expected_time(
146
- enroll_rate = enroll_rate , fail_rate = fail_rate ,
147
- ratio = ratio , target_event = event [i ],
148
- interval = interval
149
- )
150
- )
145
+ avehr <- rbind(avehr ,
146
+ expected_time(enroll_rate = enroll_rate , fail_rate = fail_rate ,
147
+ ratio = ratio , target_event = event [i ],
148
+ interval = interval ))
151
149
}
152
150
}
153
151
154
- # Compute theta ----
152
+ # -------------------------- #
153
+ # Tidy outputs #
154
+ # -------------------------- #
155
155
avehr $ analysis <- seq_len(nrow(avehr ))
156
156
avehr $ theta <- - log(avehr $ ahr )
157
157
158
- # Output results ----
159
158
ans <- avehr [, c(" analysis" , " time" , " event" , " ahr" , " theta" , " info" , " info0" )]
160
159
return (ans )
161
160
}
0 commit comments