面板和时间序列
先查看各命令展开的示例,再按需展开其他选项及 R 实现。改写代码前,请阅读适用条件及差异说明。
arima
ARIMA 模型
Stata
arima y, ar(1/2)R 包:stats
arima(data$y, order = c(2, 0, 0))与 Stata 有差异 R 和 Stata ARIMA 初始化及截距参数化不同;比较系数前须匹配似然方法并转换截距。
carryforward
用上一个非缺失值向下填充
Stata
carryforward x, replaceR 包:tidyr
tidyr::fill(data, x, .direction = "down")与 Stata 有差异 先 group_by(data, id) 即可在每个面板个体内填充。 fill() 未先分组时会跨面板单位填补;单位内 carryforward 须先 group_by(id)。
d.
f.
l.
面板内的滞后变量
Stata
generate lag_x = L.xR 包:tidystata
mutate(data, lag_x = stata_lag(x, time = year), .by = id)与 Stata 相同,year 中断处为缺失值;dplyr::lag() 则只是按行移动。L2.x 用 stata_lag(x, 2, time = year),月度日期加 unit = “month”。
另有 1 个示例及替代实现
面板内的二期滞后
Stata
generate lag2_x = L2.xR 包:dplyr
mutate(data, lag2_x = lag(x, 2, order_by = year), .by = id)与 Stata 有差异 lag(x, 2, order_by = year) 移动两个观测行;L2.x 移动两个时间单位,遇时间缺口返回缺失。该规则应使用 stata_lag(x, 2, time = year)。
tsfill
补齐缺失的时间点
Stata
tsfillR 包:tsibble
tsibble::fill_gaps(ts_data)与 Stata 有差异 fill_gaps() 默认补齐各键观测范围;共同面板边界须明确设 .full,并保证 tsibble 间隔匹配 Stata delta。