【发布时间】:2012-07-15 23:31:24
【问题描述】:
我得到了一些类似这样的模拟输出:
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 中做副项目以学习它,我不能这么依赖 SAS。据我从 coxph() 文档中可以看出,没有简单的方法来包含一个副变量。我的猜测是这将涉及循环和子集。
有什么建议吗?
【问题讨论】:
-
我不清楚你在追求什么(这可能是由于我对时间序列的无知)但复制可能是你追求的。
-
我建议使用
plyr::ddply或data.table而不是循环或子集。 -
@TylerRinker 同样的问题可能适用于像 lm() 这样的东西。本质上,如何获取数据集并在该变量的级别上应用 lm() 之类的东西。
-
@EpiGrad 然后 mnel 的响应与使用 base 的
split然后lapply一样好。然后,您必须从应用 cox 模型中获取图片并使用do.call将它们作为数据框重新组合在一起。 -
nlme::lmList可用于lm。
标签: r plyr data.table