2014-03-27 49 views
2

我使用函數coxme()在coxme軟件包中擬合R中的混合效果Cox模型。在我的模型中,我有一個審查生存時間$ X $,一個單一的協變量$ Z $和一個分組變量$ Group $。有一個隨機的截距和一個隨機的斜率,即我擬合了模型$ \ lambda(t | Z,b_0,b_1)= \ lambda_0(t)e^{\ beta Z + b_0 + b_1 Z} $。在混合效果中指定變異結構R中的Cox模型

我想指定隨機效應的協方差矩陣的結構;特別是我想指出$ b_0 $和$ b_1 $是不相關的,所以協方差矩陣是對角的。看來coxme()在指定協方差結構方面非常靈活。我認爲我應該通過一個矩陣列表varlist這個函數的選項,但到目前爲止,我的嘗試失敗了,我不認爲我完全理解它應該如何工作。

也可以將自定義差異函數傳遞給此選項,實際上其中一個包裝短片給出了一些如何完成這些操作的示例。然而,這個過程似乎很乏味,而且(我希望)在這種情況下是不必要的。所以我的問題是,如何在coxme()函數中輕鬆地指定對角線協方差矩陣結構?

下面是一些模擬示例數據和指定協方差結構的第一次嘗試。我的希望是我告訴coxme()使用線性組合$ V = \ sigma^2_1 A + \ sigma^2_2 B $,其中$ A $和$ B $定義如下,並且這將有效地擬合對角線協方差具有任意對角元素的矩陣。

> n = 25 # Size of each cluster 
> K = 25 # Number of clusters 
> N = n*K # Total number of observations 
> 
> Z = rnorm(n=N, mean=0.5, sd=0.5) # Covariate 
> b0 = rep(rnorm(n=K, mean=0, sd=0.5), each=n) # Random intercept 
> b1 = rep(rnorm(n=K, mean=0, sd=0.5), each=n) # Random slope 
> Group = factor(x=rep(1:K, each=n)) 
> 
> beta = 2 
> eta = beta*Z + b0 + b1*Z 
> T = rexp(n=N, rate=exp(eta)) # Exponential failure time, conditional on Z, b0, and b1 
> C = runif(n=N, min=0, max=2.5) # Uniform censoring time to get about 20% censoring 
> 
> time = pmin(T,C) # Censored observation time 
> delta = T < C # Event indicator 
> 
> A = matrix(c(1, 0, 0, 0), nrow=2) 
> B = matrix(c(0, 0, 0, 1), nrow=2) 
> my.covariance = list(A, B) 
> fit = coxme(Surv(time, delta) ~ Z + (1 + Z | Group), varlist = my.covariance) 
Error in coxme(Surv(time, delta) ~ Z + (1 + Z | Group), varlist = my.covariance) : 
    In random term 1: Mlist cannot have both covariates and grouping 
+0

我不知道該怎麼做,但幾個月前我用了'coxme'package,但有一個問題在這裏無法解答。因此,我發送了一封電子郵件給Terry Therneau,這個軟件包的開發人員,他回答我的速度很快,很有用,所以也許問他吧! – Vincent

回答

1

多google搜索和嘗試後,我花了二看one of the vignettescoxme包。我在第3節的最後一點找到了一個可能的答案,它說

「 - 通過默認,假設一個完整的協方差矩陣。模型2顯示指定獨立性的簡單方法是將以單獨的方式效果。「在數據示例

所以,下面的命令可以被用來獲得獨立的隨機效應:

> fit = coxme(Surv(time, delta) ~ Z + (1 | Group) + (Z | Group)) 
> fit$vcoef 
$Group 
Intercept 
0.1181417 

$Group 
     Z 
0.2822648 

只有隨機截距和隨機斜率的方差被示出,因爲所述相關性假定爲零。

可能的替代方案是使用phmm包中的phmm()函數。由於估計是基於完全可能性的,所以這種方法會給出略微不同的擬合。

相關問題