Запустив следующую функцию, результат будет таким:
library(pmsampsize)
pmsampsize(type = "s", csrsquared = 0.5, parameters = 10, rate = 0.065,
timepoint = 2, meanfup = 2.07)
NB: Assuming 0.05 acceptable difference in apparent & adjusted R-squared
NB: Assuming 0.05 margin of error in estimation of overall risk at time point = 2
NB: Events per Predictor Parameter (EPP) assumes overall event rate = 0.065
Samp_size Shrinkage Parameter CS_Rsq Max_Rsq Nag_Rsq EPP
Criteria 1 5143 0.900 30 0.051 0.555 0.092 23.07
Criteria 2 1039 0.648 30 0.051 0.555 0.092 4.66
Criteria 3 * 5143 0.900 30 0.051 0.555 0.092 23.07
Final SS 5143 0.900 30 0.051 0.555 0.092 23.07
Minimum sample size required for new model development based on user inputs = 5143,
corresponding to 10646 person-time** of follow-up, with 692 outcome events
assuming an overall event rate = 0.065 and therefore an EPP = 23.07
Я ищу способ (функция цикла) запустить следующую функцию для нескольких значений csrsquared и параметров и вычислить соответствующий размер выборки и количество событий, а затем получить все результаты, включая значение R, значение PA, минимальный размер выборки и результаты событий в таблицу. Предполагать
R=seq (from=0, to=0.5, by=0.1)
PA=seq(from=1, to=10, by=1)
pmsampsize(type = "s", csrsquared = R, parameters = PA, rate = 0.065, timepoint = 2, meanfup = 2.07)
Результатом должно быть что-то вроде таблицы, включающей различные значения csrsquared и параметров, а также соответствующую им оценку размера выборки и исходных событий.
csrsquared (R) parameters (PA) Minimum sample size outcome events
sth like
R PA minimum sample size outcome events
0 1
0 2
0 3
0 4
Я написал следующий код, но он не работает, и мне нужна помощь, чтобы его изменить.
library(tidyverse)
library (pmsampsize)
foo = function(R,PA){
T=pmsampsize(type = "s", csrsquared = R, parameters = PA,
rate = 0.065,timepoint = 2, meanfup = 2.07)
T$events
T$sample_size }
df = tibble(
R=seq(from = 0, to = 0.5,by=0.1)
PA=seq(from = 0, to = 10,by=1) )
@ Адриан, Привет! Большое спасибо за уделенное время. Я написал код выше, но он не работает, и мне нужна помощь, чтобы изменить его.
Похоже, вы столкнулись с тем, что и tibble, и, в конечном итоге, карта будут злиться из-за ошибок переработки. Итак, вам нужно создать несколько комбинаций. Надеюсь, это поможет!
library(pmsampsize)
library(tidyverse)
foo = function(R,PA){
out = pmsampsize(type = "s", csrsquared = R, parameters = PA,
rate = 0.065, timepoint = 2, meanfup = 2.07)
events = out$events
sample_size = out$sample_size
dt = tibble(events = events,
sample_size = sample_size,
R = R,
PA = PA)
return(dt)
}
R=seq(from = 0, to = 0.5,by=0.1)
PA=seq(from = 0, to = 10, by=1)
things_to_iterate = expand_grid(R = R, PA = PA)
iterations = map2(things_to_iterate$R, things_to_iterate$PA, \(r, pa) foo(R = r, PA = pa))
Created on 2024-07-02 with reprex v2.1.0
Большое вам спасибо за ваше время. Кажется, я допустил ошибку в коде, поскольку число PA должно быть PA=seq(from = 0, to = 10,by=1) . Не могли бы вы сообщить мне, как мне получить итоговую таблицу, включающую 4 столбца, чтобы увидеть значения R; ПА; события и размер выборки?
Я немного обновил код! Но все, что вы делаете, это просто изменяете то, что находится в тибле и векторе PA.
Добро пожаловать в Stack Overflow! Не могли бы вы уточнить, что вы подразумеваете под «не помогло»? Выдает ошибку, результаты неверны...? Примечание: я удалил все форматирование курсивом, поскольку оно не улучшает читаемость, а, поскольку почти все было курсивом, похоже, оно ничего не подчеркивало. Дополнительную информацию можно найти в руководстве по форматированию.