2014-09-05 3 views
3

Я довольно новичок в 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 

Любая помощь очень ценится!

ответ

3

Первый взгляд на frail1 с str. Вместо того, чтобы список это фактически матрица

str(frail1) 
parfm [1:4, 1:3] 0.043 1.185 0.162 2.076 0.524 ... 
- attr(*, "dimnames")=List of 2 
    ..$ : chr [1:4] "theta" "rho" "lambda" "gp2" 
    ..$ : chr [1:3] "ESTIMATE" "SE" "p-val" 
snipped all the rather long list of attributes 

Таким образом, вы просто сослаться на него с [:

> frail1[4,1] 
    #[1] 2.076003 
+0

Awesome! Огромное спасибо. Это именно то, что мне нужно. –

+0

Кроме того, больше набрав текст, но более явно вы можете сделать 'frail1 ['gp2', 'ESTIMATE']' – Jota

+1

И спасибо вам за хорошо документированный вопрос и демонстрацию нового пакета анализа выживания, чтобы попытаться понять. –

Смежные вопросы