0

我有一些想要拟合模型的历史数据 RV。型号为:

RV(t+1) = C0 + C1*RV(t) + C2*RV_weekAverage(t-5) + C3*RV_monthAverage(t-30) + e

其中,未来的 RV 取决于先前的 RV 和一些先前 RV 值的平均值。

t - 是时间

C0、C1、C2、C3 - 是待确定的参数

RV_weekAverage = (1/5)*(从 t-1 到 t-5 的 RV 总和)

RV_monthAverage = (1/30)*(从 t-1 到 t-30 的 RV 总和)

e - 错误

我想我应该使用 AR 模型,但我不确定如何实现它,因为对于 AR 模型,右侧没有平均值,而是简单的先前值,例如:

RV(t+1) = C0 + C1*RV(t) + C2*RV(t-1) + e

要使用 AR 模型,我必须尝试:

RV(t+1) = C0 + C1*RV(t) + C2*(1/5)*[RV(t-1)+...+RV(t-5)] + C3*(1/30)*[RV(t-1)+...+RV(t-30)] + e

当我尝试估计它们时,我不确定如何在不干扰参数 C0、C1、C2 和 C3 的情况下将 (1/5) 或 (1/30) 的因子包含到模型中。到目前为止,这就是我所拥有的:

model = arima(6,0,0)
fit = estimate(model,RV) 
4

1 回答 1

2

首先要做的事情:您在这里遇到的似乎不是编程问题,而是计量经济学问题。因此,它可能更适合Cross Validated。如果是这种情况,那么版主可能会选择将您的问题(和此答案)迁移到那里。

说了这么多,我想我仍然可以在这里提供答案。

您似乎正在处理时间序列回归,其中涉及 - 如果我的首字母缩写词猜测技巧是正确的 - 已实现的波动性或已实现的方差。您的回归量是 RV_{t+1},回归量是 RV_{t},RV_{t-1} 到 RV_{t-5} 的线性组合和 RV_{t-1} 到 RV_{t 的线性组合-30}。

鉴于您的回归数集包含回归量的滞后,我猜有人告诉您查看 AR(p) 模型,这就是问题开始的地方:-) 当然,这是解决这个问题的一种方法,但我个人认为这是错误的方式。为什么?因为您滞后到 t-30,所以您正在查看 AR(30) 模型,但正如您在问题中明确指出的那样,您的模型仅包含 4 个参数。当您只需要估计 4 个参数时,为什么有超过 30 个回归量?这意味着您的估算方法将需要适应对参数的限制,这只会让您的生活变得艰难。

幸运的是,在你的情况下,它是可以避免的。实际上,在我看来,您已经在问题中写下了适当的形式!

我将稍微简化一下符号:让 y_{t+1} = RV_{t+1}, X1_t = RV_t, X2_t = (1/5) (RV_{t-1} + ... + RV_ {t-5}),并且 X3_t = (1/30) (RV_{t-1} + ... + RV_{t-30})。现在我们可以将回归方程写成:

y_{t+1} = c0 + c1*X1_t + c2*X2_t + c3*X3_t + e_t

这是一个简单的带有滞后的时间序列回归。忘记 AR(p) 特定的估计方法,您可以在此基础上做简单、可靠的 OLS。如果残差通过了 Durbin-Watson 检验,那么 OLS 估计量很可能是一致的,并且在一些额外的假设下,最佳线性无偏估计量 (BLUE)。

以下是一些示例代码,可帮助您入门:

%# Randomly generate some observations
T = 1000;
RV = randn(T, 1);

%# Construct your variables
y = RV(32:end); %# your regressor
X1 = RV(31:end-1); %# first lag of your regressor (ie your first regressand)
X2 = conv(RV(26:end-2), (1/5) * ones(5, 1), 'valid'); %# moving window average over 5 observations (ie your second regressand)
X3 = conv(RV(1:end-2), (1/30) * ones(30, 1), 'valid'); %# moving window average over 30 observations (ie your third regressand)

%# Build your matrix of regressors (including a vector of ones for the constant term)
X = [ones(length(X1), 1), X1, X2, X3];

%# Perform OLS
[Coef, CoefConfInt, e] = regress(y, X);

%# Perform a durbin watson test on the residuals
[DWpVal, DWStat] = dwtest(e, X);
if DWpVal < 0.05; fprintf('WARNING: residuals from regression appear to be serially correlated. Estimated coefficients may not be consistent'); end

Coef存储您的估计系数,并CoefConfInt存储这些估计器的置信区间。我什至结合了一个测试来检查你的残差是否通过了 Durbin-Watson 测试。显然,您需要将您的实际 RV 替换为我随机生成的 RV。如果在您的实际回归中,残差没有通过 Durbin-Watson 检验,那么您可能需要研究诸如 Feasible GLS 之类的方法,或者阅读 Greene 的“计量经济学分析”的时间序列章节 - 但希望它赢了不要这么说。

如果您认为此回答回答了问题,请随时单击它旁边的勾号。

于 2013-01-04T05:36:59.497 回答