以有效的方式评估右连续步进功能

时间:2014-02-18 09:33:03

标签: stata

假设我有一个右连续步(或阶梯)函数s,它在变量t中包含的时间点跳转:例如s可以是sts gen获得的时间到事件数据的Kaplan-Meier估算值。

现在,假设我有另一个变量r,其中包含的时间点可能与t中包含的时间点不同,我想创建另一个变量p这是我的步骤函数在r的时间点评估。

 t  |  s   |  r
0.5 | 0.9  | 0.7  
1.2 | 0.85 | 0.8
1.5 | 0.8  | 1.25
1.5 | 0.8  | 1.3  

我的数据可能看起来像上面显示的那样,在这种情况下我们会有

 p 
0.9
0.9
0.85
0.85

或换句话说,对于r的每个值,我们找到小于或等于t的最大r值,并将p等于{{1} }}

我的问题是:我如何以有效的方式做到这一点?显然,对于每个s - 值,我可以执行以下操作:

r

但这不是我想要的,因为当观察数量很大时,这非常耗时。

1 个答案:

答案 0 :(得分:1)

我建议您稍微改变一下您的问题,即您有t的新值s未知;您的插值规则将替换为先前已知的s值。 Stata术语中的过程写在this Stata FAQ中。

. list, sep(0)

     +------------+
     |    t     s |
     |------------|
  1. |   .5    .9 |
  2. |  1.2   .85 |
  3. |  1.5    .8 |
  4. |  1.5    .8 |
  5. |   .7     . |
  6. |   .8     . |
  7. | 1.25     . |
  8. |  1.3     . |
     +------------+

 . sort t s

 . replace s = s[_n-1] if missing(s)
 (4 real changes made)

 . list, sep(0)

     +------------+
     |    t     s |
     |------------|
  1. |   .5    .9 |
  2. |   .7    .9 |
  3. |   .8    .9 |
  4. |  1.2   .85 |
  5. | 1.25   .85 |
  6. |  1.3   .85 |
  7. |  1.5    .8 |
  8. |  1.5    .8 |
     +------------+

注意:sort t然后s允许为同一s复制已知的t值。