时间序列与预测
先查看各命令展开的示例,再按需展开其他选项及 R 实现。改写代码前,请阅读适用条件及差异说明。
ac
自相关函数
Stata
ac y, lags(12)R 包:stats
stats::acf(y, lag.max = 12, plot = FALSE)与 Stata 有差异 固定流程;请明确调整示例列名。R返回数值相关系数;绘图需另行调用。
arch
GARCH(1,1)条件方差模型
Stata
arch y, arch(1) garch(1) noconstantR 包:tseries
tseries::garch(as.numeric(y), order = c(1, 1), trace = FALSE)与 Stata 有差异 固定流程;请明确调整示例列名。须另拟合均值模型;优化和初始化方式不同。
ARCH(1)条件方差模型
Stata
arch y, arch(1) noconstantR 包:tseries
tseries::garch(as.numeric(y), order = c(0, 1), trace = FALSE)与 Stata 有差异 固定流程;请明确调整示例列名。tseries::garch针对零均值序列;须先去除或明确建模条件均值。
arfima
分数阶差分ARMA估计
Stata
arfima y, ar(1) ma(1)R 包:fracdiff
fracdiff::fracdiff(y, nar = 1, nma = 1)与 Stata 有差异 固定流程;请明确调整示例列名。fracdiff使用近似似然,且MA参数符号约定不同。
arfimasoc
分数阶ARMA阶数比较
Stata
arfimasoc y, maxar(1) maxma(1)R 包:fracdiff
{ grid <- expand.grid(p = 0:1, q = 0:1); grid$AIC <- mapply(function(p, q) { f <- fracdiff::fracdiff(y, nar = p, nma = q); -2 * f$log.likelihood + 2 * (p + q + 2) }, grid$p, grid$q); grid }固定流程;请明确调整示例列名。使用近似似然进行选阶,不声称数值完全一致。
arima
包含外生变量的ARMAX模型
Stata
arima y x, arima(1,0,0)R 包:stats
stats::arima(y, order = c(1, 0, 0), xreg = x)与 Stata 有差异 固定流程;请明确调整示例列名。参数化、初始值和似然约定不同;须比较同一模型设定。
另有 11 个示例及替代实现
季节差分移动平均模型
Stata
arima y, arima(0,0,0) sarima(0,1,1,4)R 包:stats
stats::arima(y, order = c(0, 0, 0), seasonal = list(order = c(0, 1, 1), period = 4))与 Stata 有差异 固定流程;请明确调整示例列名。参数化、初始值和似然约定不同;须比较同一模型设定。
季节自回归模型
Stata
arima y, arima(0,0,0) sarima(1,0,0,4)R 包:stats
stats::arima(y, order = c(0, 0, 0), seasonal = list(order = c(1, 0, 0), period = 4))与 Stata 有差异 固定流程;请明确调整示例列名。参数化、初始值和似然约定不同;须比较同一模型设定。
含截距MA(1)
Stata
arima y, arima(0,0,1)R 包:stats
stats::arima(y, order = c(0, 0, 1))与 Stata 有差异 固定流程;请明确调整示例列名。参数化、初始值和似然约定不同;须比较同一模型设定。
差分移动平均模型
Stata
arima y, arima(0,1,1)R 包:stats
stats::arima(y, order = c(0, 1, 1))与 Stata 有差异 固定流程;请明确调整示例列名。参数化、初始值和似然约定不同;须比较同一模型设定。
含截距AR(1)
Stata
arima y, arima(1,0,0)R 包:stats
stats::arima(y, order = c(1, 0, 0))与 Stata 有差异 固定流程;请明确调整示例列名。参数化、初始值和似然约定不同;须比较同一模型设定。
状态空间极大似然估计
Stata
arima y, arima(1,0,0) diffuseR 包:stats
stats::arima(y, order = c(1, 0, 0), method = "ML", SSinit = "Rossignol2011")与 Stata 有差异 固定流程;请明确调整示例列名。参数化、初始值和似然约定不同;须比较同一模型设定。
零均值自回归模型
Stata
arima y, arima(1,0,0) noconstantR 包:stats
stats::arima(y, order = c(1, 0, 0), include.mean = FALSE)与 Stata 有差异 固定流程;请明确调整示例列名。参数化、初始值和似然约定不同;须比较同一模型设定。
ARMA(1,1)模型
Stata
arima y, arima(1,0,1)R 包:stats
stats::arima(y, order = c(1, 0, 1))与 Stata 有差异 固定流程;请明确调整示例列名。参数化、初始值和似然约定不同;须比较同一模型设定。
ARMA估计方法:ML
Stata
arima y, arima(1,0,1)R 包:stats
stats::arima(y, order = c(1, 0, 1), method = "ML")与 Stata 有差异 固定流程;请明确调整示例列名。明确指定似然方法,避免依赖R默认CSS-ML初始化。
ARMA估计方法:CSS
Stata
arima y, arima(1,0,1) // conditional least-squares alternativeR 包:stats
stats::arima(y, order = c(1, 0, 1), method = "CSS")固定流程;请明确调整示例列名。条件平方和是替代流程,并非Stata默认似然。
一阶差分ARIMA
Stata
arima y, arima(1,1,0)R 包:stats
stats::arima(y, order = c(1, 1, 0))与 Stata 有差异 固定流程;请明确调整示例列名。参数化、初始值和似然约定不同;须比较同一模型设定。
arimasoc
corrgram
自相关与偏自相关表
Stata
corrgram y, lags(8)R 包:stats
list(ac = stats::acf(y, lag.max = 8, plot = FALSE), pac = stats::pacf(y, lag.max = 8, plot = FALSE))与 Stata 有差异 固定流程;请明确调整示例列名。R返回数值相关系数;绘图需另行调用。
cumsp
dfgls
DF-GLS单位根检验:trend
Stata
dfgls y, maxlag(4) R 包:urca
urca::ur.ers(y, type = "DF-GLS", model = "trend", lag.max = 4)与 Stata 有差异 固定流程;请明确调整示例列名。滞后选择和有限样本临界值可能不同。
DF-GLS单位根检验:constant
Stata
dfgls y, maxlag(4) notrendR 包:urca
urca::ur.ers(y, type = "DF-GLS", model = "constant", lag.max = 4)与 Stata 有差异 固定流程;请明确调整示例列名。滞后选择和有限样本临界值可能不同。
dfuller
ADF单位根检验:drift,0阶增广滞后
Stata
dfuller y, lags(0)R 包:urca
urca::ur.df(y, type = "drift", lags = 0)与 Stata 有差异 固定流程;请明确调整示例列名。应匹配确定项、样本区间和滞后选择;临界值实现可能不同。
ADF单位根检验:none,0阶增广滞后
Stata
dfuller y, lags(0) noconstantR 包:urca
urca::ur.df(y, type = "none", lags = 0)与 Stata 有差异 固定流程;请明确调整示例列名。应匹配确定项、样本区间和滞后选择;临界值实现可能不同。
ADF单位根检验:trend,0阶增广滞后
Stata
dfuller y, lags(0) trendR 包:urca
urca::ur.df(y, type = "trend", lags = 0)与 Stata 有差异 固定流程;请明确调整示例列名。应匹配确定项、样本区间和滞后选择;临界值实现可能不同。
ADF单位根检验:drift,2阶增广滞后
Stata
dfuller y, lags(2)R 包:urca
urca::ur.df(y, type = "drift", lags = 2)与 Stata 有差异 固定流程;请明确调整示例列名。应匹配确定项、样本区间和滞后选择;临界值实现可能不同。
ADF单位根检验:none,2阶增广滞后
Stata
dfuller y, lags(2) noconstantR 包:urca
urca::ur.df(y, type = "none", lags = 2)与 Stata 有差异 固定流程;请明确调整示例列名。应匹配确定项、样本区间和滞后选择;临界值实现可能不同。
另有 1 个示例及替代实现
ADF单位根检验:trend,2阶增广滞后
Stata
dfuller y, lags(2) trendR 包:urca
urca::ur.df(y, type = "trend", lags = 2)与 Stata 有差异 固定流程;请明确调整示例列名。应匹配确定项、样本区间和滞后选择;临界值实现可能不同。
fcast
迭代双变量VAR点预测
Stata
fcast compute pred, step(8)R 包:stats
{ out <- matrix(NA_real_, 8, 2); last <- tail(Y, 1); intercept <- stats::coef(fit)[1, ]; for (h in 1:8) { last <- matrix(intercept + drop(A %*% drop(last)), nrow = 1); out[h, ] <- last }; colnames(out) <- colnames(Y); out }与 Stata 有差异 固定流程;请明确调整示例列名。仅点预测,不计算系统预测误差协方差和区间。
forecast
八期ARIMA预测
Stata
forecast solve, begin(161)R 包:forecast
forecast::forecast(fit, h = 8)固定流程;请明确调整示例列名。仅提供单方程预测流程,不翻译预测系统中的恒等式。
含90%预测区间的预测
Stata
forecast solve, begin(161) periods(8) simulate(errors, statistic(stddev, prefix(sd_)))R 包:forecast
forecast::forecast(fit, h = 8, level = 90)固定流程;请明确调整示例列名。仅提供单方程预测流程,不翻译预测系统中的恒等式。R直接计算90%解析预测区间;Stata示例模拟预测标准差,须另行构造区间。
irf
简约式VAR(1)脉冲响应矩阵
Stata
irf create model, step(8)R 包:base
{ powers <- vector("list", 9); powers[[1]] <- diag(2); for (h in 2:9) powers[[h]] <- powers[[h - 1]] %*% A; powers }与 Stata 有差异 固定流程;请明确调整示例列名。针对单位简约式创新的响应;正交结构响应还需要识别方案。
Cholesky正交化VAR响应
Stata
irf create model, step(8) // orthogonalized responsesR 包:base
{ impact <- t(chol(crossprod(stats::residuals(fit)) / stats::nobs(fit))); powers <- vector("list", 9); powers[[1]] <- impact; for (h in 2:9) powers[[h]] <- A %*% powers[[h - 1]]; powers }与 Stata 有差异 固定流程;请明确调整示例列名。递归顺序为y再x;协方差除数和识别假设影响结果。
ivlpirf
工具变量局部投影点响应
Stata
ivlpirf y, endogenous(x = z) step(8) lags(1)R 包:AER
vapply(0:8, function(h) { i <- 2:(nrow(data) - h); d <- data.frame(outcome = data$y[i + h], impulse = data$x[i], Ly = data$y[i - 1], instrument = data$z[i]); unname(stats::coef(AER::ivreg(outcome ~ impulse + Ly | instrument + Ly, data = d))[2]) }, numeric(1))固定流程;请明确调整示例列名。按期限进行2SLS;工具变量有效性、归一化和HAC推断须另行决定。
lpirf
newey
Newey-West HAC系数推断
Stata
newey y x, lag(4)R 包:sandwich
{ fit <- stats::lm(y ~ x, data = data); lmtest::coeftest(fit, vcov. = sandwich::NeweyWest(fit, lag = 4, prewhite = FALSE, adjust = TRUE)) }与 Stata 有差异 固定流程;请明确调整示例列名。须统一带宽、预白化和有限样本修正。
pac
偏自相关函数
Stata
pac y, lags(12)R 包:stats
stats::pacf(y, lag.max = 12, plot = FALSE)与 Stata 有差异 固定流程;请明确调整示例列名。R返回数值相关系数;绘图需另行调用。
pergram
原始周期图
Stata
pergram yR 包:stats
stats::spectrum(y, plot = FALSE, taper = 0, detrend = FALSE)与 Stata 有差异 固定流程;请明确调整示例列名。归一化方法和默认渐消窗可能不同。
pperron
Phillips-Perron Z-alpha检验:constant
Stata
pperron y, lags(4) R 包:urca
urca::ur.pp(y, type = "Z-alpha", model = "constant", use.lag = 4)与 Stata 有差异 固定流程;请明确调整示例列名。Stata同时报告多个统计量,R每次选择一个;须匹配核函数和确定项。
Phillips-Perron Z-tau检验:constant
Stata
pperron y, lags(4) R 包:urca
urca::ur.pp(y, type = "Z-tau", model = "constant", use.lag = 4)与 Stata 有差异 固定流程;请明确调整示例列名。Stata同时报告多个统计量,R每次选择一个;须匹配核函数和确定项。
Phillips-Perron Z-alpha检验:trend
Stata
pperron y, lags(4) trendR 包:urca
urca::ur.pp(y, type = "Z-alpha", model = "trend", use.lag = 4)与 Stata 有差异 固定流程;请明确调整示例列名。Stata同时报告多个统计量,R每次选择一个;须匹配核函数和确定项。
Phillips-Perron Z-tau检验:trend
Stata
pperron y, lags(4) trendR 包:urca
urca::ur.pp(y, type = "Z-tau", model = "trend", use.lag = 4)与 Stata 有差异 固定流程;请明确调整示例列名。Stata同时报告多个统计量,R每次选择一个;须匹配核函数和确定项。
predict
psdensity
参数化AR(1)谱密度
Stata
arima y, arima(1,0,0)
psdensity density, n(64)R 包:stats
{ phi <- unname(fit$coef["ar1"]); omega <- seq(0, pi, length.out = 64); data.frame(frequency = omega / (2 * pi), density = fit$sigma2 / (2 * pi * Mod(1 - phi * exp(-1i * omega))^2)) }与 Stata 有差异 固定流程;请明确调整示例列名。须统一频率尺度及密度归一化。
rolling
扩展窗口递归回归
Stata
rolling _b, window(40) recursive: regress y xR 包:stats
t(vapply(40:nrow(data), function(i) stats::coef(stats::lm(y ~ x, data[seq_len(i), ])), numeric(2)))与 Stata 有差异 固定流程;请明确调整示例列名。固定首个观察,逐步扩展估计终点。
滚动窗口回归系数
Stata
rolling _b, window(40): regress y xR 包:zoo
zoo::rollapply(data, width = 40, FUN = function(z) stats::coef(stats::lm(y ~ x, data = as.data.frame(z))), by.column = FALSE, align = "right")与 Stata 有差异 固定流程;请明确调整示例列名。输出行对应完整右对齐窗口;实际使用须明确处理拟合失败。
滚动样本波动率
Stata
rolling sd=r(sd), window(20): summarize yR 包:zoo
zoo::rollapply(y, width = 20, FUN = stats::sd, align = "right")与 Stata 有差异 固定流程;请明确调整示例列名。计算样本标准差,并非模型条件波动率。
sspace
局部线性趋势状态空间模型
Stata
sspace (level L.level L.slope, state noconstant) (slope L.slope, state noconstant) (y level, noconstant)R 包:stats
stats::StructTS(y, type = "trend")与 Stata 有差异 固定流程;请明确调整示例列名。对应特定局部线性趋势模型;初始化可能不同。
局部水平状态空间模型
Stata
sspace (level L.level, state noconstant) (y level, noconstant)R 包:stats
stats::StructTS(y, type = "level")与 Stata 有差异 固定流程;请明确调整示例列名。对应特定局部水平模型;sspace支持更广泛的模型。
tsfilter
Baxter-King近似带通周期
Stata
tsfilter bk cycle = y, minperiod(6) maxperiod(32) smaorder(12)R 包:stats
{ K <- 12; j <- -K:K; low <- 2 * pi / 32; high <- 2 * pi / 6; w <- ifelse(j == 0, (high - low) / pi, (sin(high * j) - sin(low * j)) / (pi * j)); w <- w - mean(w); stats::filter(y, w, sides = 2) }与 Stata 有差异 固定流程;请明确调整示例列名。对称有限阶带通滤波损失端点观察。
Hodrick-Prescott趋势周期分解
Stata
tsfilter hp cycle = y, smooth(1600) trend(trend)R 包:base
{ n <- length(y); D <- diff(diag(n), differences = 2); trend <- drop(solve(diag(n) + 1600 * crossprod(D), as.numeric(y))); data.frame(trend = trend, cycle = as.numeric(y) - trend) }与 Stata 有差异 固定流程;请明确调整示例列名。要求完整规则序列;通过惩罚最小二乘直接求解双侧HP滤波。
tsreport
tssmooth
简单指数平滑
Stata
tssmooth exponential smooth = y, parms(.3)R 包:stats
stats::HoltWinters(y, alpha = .3, beta = FALSE, gamma = FALSE)固定流程;请明确调整示例列名。初始值、端点处理和趋势形式不同,比较前须统一。
Holt趋势平滑流程
Stata
tssmooth hwinters smooth = yR 包:stats
stats::HoltWinters(y, gamma = FALSE)固定流程;请明确调整示例列名。初始值、端点处理和趋势形式不同,比较前须统一。
五期居中移动平均
Stata
tssmooth ma smooth = y, window(2 1 2)R 包:stats
stats::filter(y, rep(1 / 5, 5), sides = 2)固定流程;请明确调整示例列名。初始值、端点处理和趋势形式不同,比较前须统一。
四期向后移动平均
Stata
tssmooth ma smooth = y, window(3 1 0)R 包:stats
stats::filter(y, rep(1 / 4, 4), sides = 1)固定流程;请明确调整示例列名。初始值、端点处理和趋势形式不同,比较前须统一。
加法季节Holt-Winters平滑
Stata
tssmooth shwinters smooth = yR 包:stats
stats::HoltWinters(y, seasonal = "additive")固定流程;请明确调整示例列名。初始值、端点处理和趋势形式不同,比较前须统一。
另有 1 个示例及替代实现
滑动中位数非线性平滑
Stata
tssmooth nl smooth = y, smoother(3)R 包:stats
stats::runmed(as.numeric(y), k = 3, endrule = "median")与 Stata 有差异 固定流程;请明确调整示例列名。比较前须单独核对端点处理规则。
ucm
不可观测成分模型:level
Stata
ucm y, model(llevel)R 包:stats
stats::StructTS(y, type = "level")与 Stata 有差异 固定流程;请明确调整示例列名。R仅支持部分结构模型;Stata ucm允许更多成分和约束。
不可观测成分模型:trend
Stata
ucm y, model(lltrend)R 包:stats
stats::StructTS(y, type = "trend")与 Stata 有差异 固定流程;请明确调整示例列名。R仅支持部分结构模型;Stata ucm允许更多成分和约束。
不可观测成分模型:BSM
Stata
ucm y, model(lltrend) seasonal(4)R 包:stats
stats::StructTS(y, type = "BSM")与 Stata 有差异 固定流程;请明确调整示例列名。R仅支持部分结构模型;Stata ucm允许更多成分和约束。
var
逐方程OLS的双变量VAR(1)
Stata
var y x, lags(1)R 包:stats
stats::lm(cbind(y, x) ~ Ly + Lx, data = lagged)与 Stata 有差异 固定流程;请明确调整示例列名。对共同样本上的无约束VAR给出相应系数;系统协方差报告不同。
含确定性时间趋势VAR
Stata
var y x, lags(1) exog(trend)R 包:stats
stats::lm(cbind(y, x) ~ Ly + Lx + seq_len(nrow(lagged)), data = lagged)与 Stata 有差异 固定流程;请明确调整示例列名。趋势起点影响截距;须统一样本和趋势编号。
无截距双变量VAR
Stata
var y x, lags(1) noconstantR 包:stats
stats::lm(cbind(y, x) ~ 0 + Ly + Lx, data = lagged)与 Stata 有差异 固定流程;请明确调整示例列名。须指定相同的滞后矩阵和确定项。
vargranger
检验y是否Granger预测x
Stata
var y x, lags(1)
vargrangerR 包:lmtest
lmtest::grangertest(x ~ y, order = 1, data = data)与 Stata 有差异 先拟合var y x, lags(1)再运行vargranger;否则Stata的VAR默认滞后1和2阶。grangertest采用F参考分布,vargranger报告Wald卡方;须统一方向和样本,且预测性不等于结构因果。
检验x是否Granger预测y
Stata
var y x, lags(1)
vargrangerR 包:lmtest
lmtest::grangertest(y ~ x, order = 1, data = data)与 Stata 有差异 先拟合var y x, lags(1)再运行vargranger;否则Stata的VAR默认滞后1和2阶。grangertest采用F参考分布,vargranger报告Wald卡方;须统一方向和样本,且预测性不等于结构因果。
varstable
VAR(1)伴随矩阵特征值
Stata
varstableR 包:base
eigen(A, only.values = TRUE)$values与 Stata 有差异 固定流程;请明确调整示例列名。稳定性要求所有伴随矩阵根严格位于单位圆内。
vec
秩一向量误差修正模型
Stata
vec y x, rank(1) lags(2)R 包:urca
urca::cajorls(urca::ca.jo(Y, type = "trace", ecdet = "none", K = 2, spec = "transitory"), r = 1)与 Stata 有差异 urca的ecdet=“const”对应Stata的trend(rconstant);ecdet=“none”包含不受约束的截距,对应trend(constant);ecdet=“trend”对应trend(rtrend)。ca.jo不提供Stata的trend(none)或trend(trend)。比较系数前还须统一协整向量的标准化。
vecrank
检验含不受约束截距的协整秩
Stata
vecrank y x, lags(2) trend(constant)R 包:urca
urca::ca.jo(Y, type = "trace", ecdet = "none", K = 2, spec = "transitory")与 Stata 有差异 urca的ecdet=“const”对应Stata的trend(rconstant);ecdet=“none”包含不受约束的截距,对应trend(constant);ecdet=“trend”对应trend(rtrend)。ca.jo不提供Stata的trend(none)或trend(trend)。比较系数前还须统一协整向量的标准化。
检验含受约束常数项的协整秩
Stata
vecrank y x, lags(2) trend(rconstant)R 包:urca
urca::ca.jo(Y, type = "trace", ecdet = "const", K = 2, spec = "transitory")与 Stata 有差异 urca的ecdet=“const”对应Stata的trend(rconstant);ecdet=“none”包含不受约束的截距,对应trend(constant);ecdet=“trend”对应trend(rtrend)。ca.jo不提供Stata的trend(none)或trend(trend)。比较系数前还须统一协整向量的标准化。
检验含受约束常数项的协整秩
Stata
vecrank y x, lags(2) trend(rconstant) maxR 包:urca
urca::ca.jo(Y, type = "eigen", ecdet = "const", K = 2, spec = "transitory")与 Stata 有差异 urca的ecdet=“const”对应Stata的trend(rconstant);ecdet=“none”包含不受约束的截距,对应trend(constant);ecdet=“trend”对应trend(rtrend)。ca.jo不提供Stata的trend(none)或trend(trend)。比较系数前还须统一协整向量的标准化。
检验含受约束趋势项的协整秩
Stata
vecrank y x, lags(2) trend(rtrend)R 包:urca
urca::ca.jo(Y, type = "trace", ecdet = "trend", K = 2, spec = "transitory")与 Stata 有差异 urca的ecdet=“const”对应Stata的trend(rconstant);ecdet=“none”包含不受约束的截距,对应trend(constant);ecdet=“trend”对应trend(rtrend)。ca.jo不提供Stata的trend(none)或trend(trend)。比较系数前还须统一协整向量的标准化。
检验含受约束趋势项的协整秩
Stata
vecrank y x, lags(2) trend(rtrend) maxR 包:urca
urca::ca.jo(Y, type = "eigen", ecdet = "trend", K = 2, spec = "transitory")与 Stata 有差异 urca的ecdet=“const”对应Stata的trend(rconstant);ecdet=“none”包含不受约束的截距,对应trend(constant);ecdet=“trend”对应trend(rtrend)。ca.jo不提供Stata的trend(none)或trend(trend)。比较系数前还须统一协整向量的标准化。
另有 1 个示例及替代实现
检验含不受约束截距的协整秩
Stata
vecrank y x, lags(2) trend(constant) maxR 包:urca
urca::ca.jo(Y, type = "eigen", ecdet = "none", K = 2, spec = "transitory")与 Stata 有差异 urca的ecdet=“const”对应Stata的trend(rconstant);ecdet=“none”包含不受约束的截距,对应trend(constant);ecdet=“trend”对应trend(rtrend)。ca.jo不提供Stata的trend(none)或trend(trend)。比较系数前还须统一协整向量的标准化。
wntestq
AR(1)残差的Ljung-Box检验
Stata
predict e, residuals
wntestq e, lags(8)R 包:stats
stats::Box.test(stats::residuals(fit), lag = 8, type = "Ljung-Box", fitdf = 1)与 Stata 有差异 固定流程;请明确调整示例列名。R明确从参考自由度中扣除所估计的AR参数。
Ljung-Box 序列相关联合检验
Stata
wntestq y, lags(8)R 包:stats
stats::Box.test(y, lag = 8, type = "Ljung-Box")与 Stata 有差异 固定流程;请明确调整示例列名。检验拟合模型残差时应指定fitdf。
xcorr
正负滞后的互相关
Stata
xcorr y x, lags(8)R 包:stats
stats::ccf(y, x, lag.max = 8, plot = FALSE)与 Stata 有差异 固定流程;请明确调整示例列名。解释领先或滞后方向前须核对滞后符号约定。