我有一些历史数据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) 发布于 2013-01-04 13:36:59
首先要做的是:这里出现的似乎不是编程问题,而是计量经济学问题。正因为如此,它可能更适合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'); endCoef存储您估计的系数,CoefConfInt存储这些估计器的置信区间。我甚至加入了一个测试来检查您的残差是否通过了Durbin-Watson测试。显然,你需要用你的实际房车替换我随机生成的房车。如果在你的实际回归中,残差没有通过Durbin-Watson检验,那么你可能需要寻找可行的GLS等方法,或者阅读Greene的“计量经济学分析”的时间序列章节-但希望不会走到那一步。
如果您认为此回答回答了问题,请随时单击它旁边的勾号。
https://stackoverflow.com/questions/14134990
复制相似问题