2013-03-05 17 views
2

我需要擬合具有隨時間變化的協變量的參數PH模型(所以不是Cox模型)。我們可以在R中做到嗎?我聽說倖存功能不能處理隨時間變化的協變量。我一直枉然尋找可以解決這個問題的軟件包。擬合具有時變協變量的完全參數化比例風險模型R

+0

請問這個包幫助:http://cran.r-project.org/web/packages/joineR/index.html – 2013-03-05 18:19:33

+0

你可以改變你的數據和適合GLM或GAM與'家庭= poisson'(請參閱http ://data.princeton.edu/wws509/notes/c7s4.html) – adibender 2013-03-05 19:23:51

+0

生存軟件包的(?)作者Terry Therneau並沒有把它作爲優先事項(請參閱:https://stat.ethz.ch /pipermail/r-help/2008-May/161027.html)。如果您有權訪問Stata參數化生存分析軟件包,則此工作正常。就我所知,SAS目前在參數化存活模型中不實現計數過程樣式數據。編輯:特里T.已經在過去的電子郵件響應,所以也許你可以提交一個合理的例子,需要這種模式的請求 - 這是一個方法,這將是有益的許多,我懷疑。 – 2015-02-23 17:05:15

回答

0

由於@adibender寫,你可以輕鬆地估計模型以恆定的基線將與poisson家庭用日誌的時間offsetglm。下面是一個例子

> # Input parameters 
> n <- 100   # Number of individuals 
> t_max <- 5  # max number of period per individual 
> beta <- c(-1, 1) # true coefficient 
> 
> # Simulate data 
> set.seed(47261114) 
> sim_dat <- replicate(
+ n, 
+ { 
+  out <- data.frame(
+  tstart = rep(NA_integer_, t_max), 
+  tstop = rep(NA_integer_, t_max), 
+  event = rep(NA, t_max), 
+  x  = rnorm(t_max)) 
+  
+  for(i in 1:t_max){ 
+  rate  <- exp(beta %*% c(1, out$x[i])) 
+  tstop <- min(rexp(1, rate), 1) 
+  out[i, ] <- list(i - 1, i - (1 - tstop), tstop < 1, out$x[i]) 
+  if(out$event[i]) 
+   break 
+  } 
+  out[!is.na(out$tstart), ] 
+ }, simplify = FALSE) 
> 
> sim_dat <- do.call(rbind, sim_dat) 
> head(sim_dat) # show final data 
    tstart  tstop event   x 
1  0 0.3018182 TRUE 0.7095841 
2  0 0.6724803 TRUE 1.5152877 
3  0 1.0000000 FALSE 0.1036868 
4  1 2.0000000 FALSE -0.5214508 
5  2 2.4831577 TRUE 1.0101403 
6  0 1.0000000 FALSE 0.1437594 
> 
> # Fit with glm 
> glm(event ~ x + offset(log(tstop - tstart)), sim_dat, family = poisson()) 

Call: glm(formula = event ~ x + offset(log(tstop - tstart)), family = poisson(), 
    data = sim_dat) 

Coefficients: 
(Intercept)   x 
    -0.9053  0.9714 

Degrees of Freedom: 248 Total (i.e. Null); 247 Residual 
Null Deviance:  382.5 
Residual Deviance: 306.4 AIC: 498.4 

對於其他分佈,好像flexsurv包可以做。請參閱this post

相關問題