我想解决以下问题。我编写了一个代码,其中使用带宽构造了时间序列中某个时间点附近的数据以执行OLS。对于每个时间点,我们使用一个本地窗口,该窗口是内核加权的数据窗口,并对此进行OLS。在代码中,它看起来非常棘手,但是构造的矩阵是每个时间点周围的数据,并用于回归。但是,由于下一个目标是找到最佳带宽,因此最佳带宽是使SSR最小的带宽。因此,应该对h进行调整以使其做到这一点。由于我不知道执行此操作的任何有效方法,因此我陷入了这个问题。 有人知道找到使SSR最小的h值的有效方法吗?
PS:这段代码可能效率很低或看起来很复杂,对不起,我不知道该怎么办。
h = 0.01 #Bandwidth
T = 1045
y = runif(T-1, min=0, max=100)
X = runif(T-1, min=0, max=100)
K <- function(u, h) {
0.75*(1-(u/(T*h))^2)}
k = 800
#Create empty arrays
Y_1 = matrix(data = 0, nrow = length((k-T*h):(k+T*h)), ncol = T-1-(2*T*h))
X_1 = matrix(data = 0, nrow = length((k-T*h):(k+T*h)), ncol = T-1-(2*T*h))
gamma_1 = matrix(data = NA, nrow = 2, ncol = T-1-(2*T*h))
e_1 = matrix(data = NA, nrow = T-1-(2*T*h), ncol = 1)
CCAPM_1 = matrix(data = NA, nrow = T-1-(2*T*h), ncol = 1)
##Fill the empty matrices such that the OLS regression can be performed
for (i in (T*h):(T-2-(T*h))){
Y_1[,(i-1-(T*h))] = (K(((i-T*h):(i+T*h))-i, h)^(.5))*y[((i-T*h)+1):((i+T*h)+1)]
X_1[,(i+1-(T*h))] = (K(((i-T*h):(i+T*h))-i, h)^(.5))*X[((i-T*h)+1):((i+T*h)+1)]
}
for (s in (1:(T-1-(2*T*h)))){ #Only this interval such that boundary regrions are avoided
gamma_1[,s] = coefficients(lm(Y_1[,s] ~ X_1[,s])) #OLS regression within small time window
CCAPM_1[s] = gamma_1[1,s] + gamma_1[2,s]*t(X[s+1])
e_1[s] = y[s] - CCAPM_1[s]
SSR_1 = sum(e_1^2, na.rm = TRUE)
}
我个人唯一想到的就是为h构造很多值,并检查SSR最小的h,但这会花费很多计算时间。