Я довольно новичок в r, поэтому прошу прощения, если этот ответ указан в другом месте. Я искал, насколько мог, с моим ограниченным знанием того, что искать.Ссылка на значение на выходе
Я запускаю симуляционную модель анализа выживаемости с изменением функции parfm и хочу запускать ее несколько раз при усреднении одного из выходов. Я выяснил, как ссылаться на значения в выводах во всех моих других функциях (используя что-то вроде сводки (вывода) $ coef ["group", "coef"])), который, похоже, не работает для этого в любом варианте Я решил попробовать. Я перечислил результат ниже, номер, который я пытаюсь использовать, - это 2.076 на выходе ниже (нижняя строка вывода рядом с «gp2»).
>frail1
Frailty distribution: inverse Gaussian
Baseline hazard distribution: Weibull
Loglikelihood: -90.577
ESTIMATE SE p-val
theta 0.043 0.524
rho 1.185 0.228
lambda 0.162 0.046
gp2 2.076 0.423 0
Я попытался
> names(frail1)
NULL
> coef(frail1)
Error: $ operator is invalid for atomic vectors
> names(summary(frail1))
NULL
> summary(frail1)$coefficients
Error in summary(frail1)$coefficients :
$ operator is invalid for atomic vectors
с явно не повезло. Я перечислил атрибуты ниже, так как это то, что я использовал в прошлом, чтобы найти, как ссылаться на что-то. Я также перечислил упрощенную версию кода, который я использую ниже. Результатом является результат.
> attributes(frail1)
$dim
[1] 4 3
$dimnames
$dimnames[[1]]
[1] "theta" "rho" "lambda" "gp2"
$dimnames[[2]]
[1] "ESTIMATE" "SE" "p-val"
$class
[1] "parfm" "matrix"
$call
parfm(formula = Surv(time, event) ~ gp, cluster = "id", data = d1,
dist = "weibull", frailty = "ingau")
$convergence
[1] 0
$it
function
84
$extime
user.self
13.69
$nobs
[1] 100
$shared
[1] FALSE
$loglik
[1] -67.13683
$dist
[1] "weibull"
$dq
[1] 56
$frailty
[1] "ingau"
$clustname
[1] "id"
$correct
[1] 0
$formula
[1] "Surv(time, event) ~ gp"
$terms
[1] "gp"
Моделирование Код
library(cmprsk)
library(statmod)
library(parfm)
set.seed(0)
shp <- 1 #weibull shape parameter
ns1 <- 50 #group 1 sample size
ns2 <- ns1 #group 2 sample size
hr11 <- 1 #group 1 hazard
hr21 <- 2 #group 2 hazard
frl <- 1 #frailty
alpha1 <- 2
nsim <- 1 #number of simulations
frail <- matrix(1,nsim,1)
id <- seq(1,ns1+ns2)
if(frl==1){
g1et <- matrix(rweibull(ns1,shape=shp,scale=1/(hr11*rinvgauss(1,1,alpha1))),ns1,1)
} else {
g1et <- matrix(rweibull(ns1,shape=shp,scale=1/hr11),ns1,1)
}
g2et <- matrix(rweibull(ns2,shape=shp,scale=1/hr21),ns2,1)
time <- c(g1et,g2et)
gp <- factor(c(matrix(1,ns1,1),matrix(2,ns2,1)),1:2,c(1,2)) #create treatment groups
event <- matrix(round(runif(ns1+ns2,0,1),0),ns1+ns2,1) #select first event type
d1 <- data.frame(id,gp,time,event)
frail1 <- parfm(Surv(time,event)~gp, cluster="id", data=d1, dist="weibull", frailty = "ingau")
frail1
Любая помощь очень ценится!
Awesome! Огромное спасибо. Это именно то, что мне нужно. –
Кроме того, больше набрав текст, но более явно вы можете сделать 'frail1 ['gp2', 'ESTIMATE']' – Jota
И спасибо вам за хорошо документированный вопрос и демонстрацию нового пакета анализа выживания, чтобы попытаться понять. –