1

次のようなシミュレーションの出力があります。

Run,ID,Time,Var1,Outcome
1,1,6,0.5,1
1,2,4,0.25,1
1,3,2,0.9,1
2,1,5,0.07,1
...
10,3,9,0.08,1

基本的に、N 人の個人を対象とした一連の M 研究 (実際には、M = 1000 および N = 123)。Cox モデル (できれば) またはパラメトリック回帰モデル (必要な場合) を実行してVar1、生存時間への影響を推定したいと考えています。私がやりたいのは、各「実行」の効果を推定し (1,000 の推定値を生成するため)、それらの推定値をすべて単一のデータ フレーム、マトリックスなどにダンプして、それらの分布を確認できるようにすることです。

SAS を使用していた場合、コードは次のようになります。

ods output ParameterEstimates=work.parameters;
proc phreg model time*outcome(0) = Var1;
   BY Run;
run;
ods output close;

しかし、これはサイド プロジェクトであり、R を学習するために R でサイド プロジェクトを実行することを余儀なくされているため、SAS に頼ることはできません。coxph() のドキュメントからわかる限り、by-variable を含める簡単な方法はありません。私の推測では、これにはループとサブセットが含まれます。

助言がありますか?

4

1 に答える 1

4

plyror data.tableを使用した例

## some data
set.seed(123)
.data <- data.frame(run = rep(1:10, each = 50), x = runif(500))
.data$y <- .data$x * rep(runif(10),each = 50)

# ---------------------------------------------------------
# using plyr
library(plyr)
# ddply to extract just the coefficients
ddply(.data, .(run), function(data) data.frame(coef = coef(lm(y ~ x, data))))
    # or save the whole object
# the whole lm object 
lm_list <- dlply(.data, .(run), lm, formula = y ~ x)
# get the coefficients    
ldply(lm_list, coef)
# print the summaries
llply(lm_list, summary)

# ---------------------------------------------------------
# with data.table 
library(data.table)

DT <- data.table(.data)
setkeyv(DT, 'run')

DT[, list(coef = coef(lm(y~x, .SD))), by = 'run']
于 2012-07-16T00:10:07.927 に答える