【问题标题】:Stata: Running sum with missing valuesStata:缺少值的运行总和
【发布时间】:2016-01-26 05:35:27
【问题描述】:

我想得到j 的总和,例如对于行_nj=3 我想得到x[_n] + x[_n+1] + x[_n+2]

我想做以下技巧:

    by grouping: gen foo = sum(log(x))
    by grouping: replace foo = foo - foo[_n - `y'] if _n > `y'

但是,这对缺失值并不可靠。 sum() 为缺失值生成0,而如果至少要求和的值之一是.,我需要累积总和为.。我将如何实现这一目标?

我也需要它为大型 j 工作,因此手动添加这些是不可行的。

【问题讨论】:

  • 不如说sum() 忽略缺失值。如果非缺失值的累积和非零,则其结果将非零。

标签: sum stata


【解决方案1】:

有几种方法可以解释和解决它:

clear
set more off

input ///
id myvar
1 3 
1 4 
1 . 
1 8 
1 7
1 2
1 .
1 8
2 3 
2 4 
2 . 
2 8 
2 7
2 2
2 .
2 8
end

// this?
bysort id: gen s = cond(!missing(myvar), sum(myvar), .)

// or this? (or something else?)
clonevar s2 = s
bysort id: replace s2 = . if missing(s2[_n-1]) & _n > 1

list, sepby(id)

我不清楚你是否想要这些。

【讨论】:

  • 这是一种有用的技术,但它不是 OP 想要的,即使也使用差分累积和的技术,因为这仅在当前观察中忽略缺失值。 cond() 中的条件可以扩展,但不适用于长窗口。
【解决方案2】:

窃取 Roberto 的可重现示例(在帖子中没有给出)另一种方法是使用 tsegen (SSC),它必须与 ssc inst tsegen 一起安装。 tssetxtset 数据集是必不可少的。 tsegen 已将一种方法连接到语法中,以规定最小数量的非缺失参数,这里是所有参数。

clear
set more off

input ///
id myvar
1 3 
1 4 
1 . 
1 8 
1 7
1 2
1 .
1 8
2 3 
2 4 
2 . 
2 8 
2 7
2 2
2 .
2 8
end

sort id, stable
by id: gen t = _n 
tsset id t 

tsegen run = rowtotal(F(0/2).myvar, 3) 

list , sepby(id) 

     +----------------------+
     | id   myvar   t   run |
     |----------------------|
  1. |  1       3   1     . |
  2. |  1       4   2     . |
  3. |  1       .   3     . |
  4. |  1       8   4    17 |
  5. |  1       7   5     . |
  6. |  1       2   6     . |
  7. |  1       .   7     . |
  8. |  1       8   8     . |
     |----------------------|
  9. |  2       3   1     . |
 10. |  2       4   2     . |
 11. |  2       .   3     . |
 12. |  2       8   4    17 |
 13. |  2       7   5     . |
 14. |  2       2   6     . |
 15. |  2       .   7     . |
 16. |  2       8   8     . |
     +----------------------+

【讨论】:

    猜你喜欢
    • 2020-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-24
    相关资源
    最近更新 更多