我正在尝试使用滚动窗口来计算zscore。我需要实际计算3年滚动窗口的标准差来计算z-score。下面给出了一个最小的工作示例:
use http://dss.princeton.edu/training/Panel101.dta
xtset country year
rolling sd_x1=r(sd), step(1) window(3) saving(sd_x1, replace) keep(year): sum x1, detail
现在,在此之后,我需要将其与原始文件进行merge
。但是,变量year
不会出现,但会出现一个列名为date的列,其中包含所有缺少的值。我正在尝试使用以下命令merge
它:
merge 1:1 country year using sd_x1
但是,我得到的错误是变量year没有找到,实际上在运行rolling命令时没有保留这个变量。任何帮助都将不胜感激。
发布于 2017-01-21 01:50:21
我总是感到惊讶的是,人们对基于三个值的标准差感兴趣或有信心。
一种更直接的方法是使用rangestat
。语法可能如下所示
use http://dss.princeton.edu/training/Panel101.dta
xtset country year
rangestat (sd) sd=x1, interval(year 0 2) by(country)
除了我现在不能测试这个。
这里的关键区别在于rangestat
在当前数据集中生成新的变量。在统计学家档案中搜索rangestat
使用的示例。
请注意,在您的示例中,detail
选项是不必要的,因为summarize
本身会产生标准差。
您可以扩展此方法以同时获得平均值。
https://stackoverflow.com/questions/41768871
复制相似问题