全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
23694 5
2017-09-19
在公司金融研究中经常会碰到移动平均和前几期标准差的计算,主要采用两个命令:tssmooth ma 和rowsd.
1.移动平均:
Title

    [TS] tssmooth ma -- Moving-average filter

Syntax

    Moving average with uniform weights
        tssmooth ma [type] newvar(生成新的变量名称) =exp [if] [in](要被平均的变量表达式), window(#l[#c[#f]])
                       [replace]

    Moving average with specified weights

        tssmooth ma [type] newvar = exp [if] [in], weights([numlist_l] <#c>
                       [numlist_f]) [replace]

    You must tsset your data before using tssmooth ma; [TS] tsset.
特别注意:window(#l[#c[#f]])是指移动的时间窗口,表示几期移动平均,比如5期移动平均那么就是window(5 1),表示从第1期到第5期的移动平均数。

2.行标准差
需要与egen 配合使用,比如要生成前三期变量a的标准差,那么先要生成前面滞后三期变量,L1a,L2a,L3a,然后采用如下 命令:
   auto.dta,clear
tsset year
gen L1a=L.a
gen L2a=L2.a
gen L3a=L3.a
egen sda3=rowsd(L1a L2a L3a)


注意: rowsd(varlist)            may not be combined with by.  It creates the (row) standard
            deviations of the variables in varlist, ignoring missing values.




二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2021-10-16 14:11:20
这个命令是滚动求标准差嘛?我想求企业风险承担这个变量的衡量,这个stata命令怎么写呀??
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2023-7-20 19:25:06
wondering999 发表于 2021-10-16 14:11
这个命令是滚动求标准差嘛?我想求企业风险承担这个变量的衡量,这个stata命令怎么写呀??
同问,请问你知道了嘛,谢谢
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2023-7-21 07:34:35
syydp 发表于 2023-7-20 19:25
同问,请问你知道了嘛,谢谢
help rangestat
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2023-12-15 02:58:06
Create uniformly weighted moving average of sales by using two lagged terms, using three forward
    terms, and including the current observation in the filter
        . tssmooth ma sm1=sales, window(2 1 3)
window(#l[#c[#f]])是指移动的时间窗口,表示几期移动平均,比如3期移动平均那么就是window(2 1),表示从第1期到第3期的移动平均数(2阶滞后,包含当前期)
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2025-1-3 01:21:08
在 Stata 中计算移动平均(Moving Average)和移动标准差(Moving Standard Deviation),你可以使用 `tssmooth` 和自定义的命令如 `rowsd` 或 `egen`。

### 计算移动平均

对于计算移动平均,可以使用 `tssmooth ma` 命令。首先确保你的数据已经被设置为时间序列格式(通过 `tsset` 命令)。

#### 语法示例:

```stata
// 移动平均命令的通用形式
tssmooth ma newvarname = existingvar, window(#l [#c] #f)

// 具体例子:计算变量 price 的 5 期简单移动平均,并存储在 newprice 中
tsset timevar // 确保你的数据集已经被设置为时间序列格式,timevar 是你的时间变量
tssmooth ma newprice = price, window(2 0 2) // 注意 window 的三个参数分别是前几期(left),当前期(center),后几期(right)
```

### 计算移动标准差

计算移动标准差可以使用自定义命令如 `rowsd` 或通过 `egen` 命令的扩展功能。

#### 使用 rowsd:

```stata
// 首先安装 rowsd,如果你没有这个命令
ssc install moremoments, replace // 这将安装更多统计工具包

// 计算变量 price 的 5 期移动标准差,并存储在 newstd 中
rowsd newstd = price, window(2 0 2)
```

#### 使用 egen:

```station
egen group = seq(), from(1) to($obs) // 创建一个从1到观测数的序列,$obs 是全局宏,代表数据集中的观测总数
egen tempvar = std(price), by(group) window(5) // 计算变量 price 的 5 期移动标准差,并存储在 tempvar 中

// 清除临时创建的 group 变量(可选)
drop group
```

请注意,`egen` 命令的 `std()` 功能可能不会直接提供真正的“移动”标准差计算,因为它不是为这种操作设计的。因此,在使用 `egen` 时,你可能需要稍微修改你的数据处理逻辑。

这些命令和示例应能帮助你在 Stata 中有效地进行移动平均和移动标准差的计算。

此文本由CAIE学术大模型生成,添加下方二维码,优先体验功能试用



二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群