Stata如何进行加权累加?

前几天有个小伙伴问了这样一个问题:

图表
图表

老师您好,我想请教一个编程的问题,像这种累加的用 Stata 怎么实现(v1->v2)?

那这种算法如何在 Stata 中实现呢?

首先我们生成这个示例数据:

clear
input x
2
4
8
10
end
* y1 = x1
* y2 = x2 + (1/2)x1
* y3 = x3 + (1/2)x2 + (1/2)^2x1
* y4 = x4 + (1/2)x3 + (1/2)^2x2 + (1/2)^3x2
* = 10 + 4 + 1 + 0.25 = 15.25

生成 y 变量,然后从 y 的第二个观测值开始生成数据,对于每个 y,都用一个循环加权累加生成(也就是下面代码中的内层循环):

gen y = x
forval i = 2/`=_N'{
local tempy = 0
forval j = `i'(-1)1{
local tempy = `tempy' + (1/2)^(`i' - `j') * x[`j']
}
replace y = `tempy' in `i'
}

list x y

*> +------------+
*> | x y |
*> |------------|
*> 1. | 2 2 |
*> 2. | 4 5 |
*> 3. | 8 10.5 |
*> 4. | 10 15.25 |
*> +------------+

这样我们就解决了这个问题。

点击这里跳转到 RStata 短书平台获取附件:Stata如何进行加权累加?

评论