1

我想最大化以下相关性:

corr(qhat, [0, mu_2, mu_3, mu_4]*inv(I - mu_1*A)*D), 

其中 qhat 是长度为 90 的时间序列;mu_1,mu_2 ,mu_3 , andmu_4 are essentially the parameters I would like to run the grid search over;I is the 4 X 4 identity matrix;A is a 4 X 4 matrix of coefficients; hereinv represents the matrix inverse operator;D` 是一个维度为 4 X 90 的矩阵(4 个变量的时间序列)。我搜索并发现了一个类似的问题,并试图破解解决方案以满足我的需求。我在 R 中尝试了以下内容(为冗余代码道歉,我想分解所有内容,所以我尝试的内容很清楚):

#Define the parameter space 
param_space = expand.grid(
  mu_1 = seq(0, 1, length.out = 11),
  mu_2 = seq(0, 1, length.out = 11),
  mu_3 = seq(0, 1, length.out = 11), 
  mu_4 = seq(0, 1, length.out = 11))

e = as.vector(param_space$mu_1)
f = as.vector(param_space$mu_2)
g = as.vector(param_space$mu_3)
h = as.vector(param_space$mu_4)
P = matrix(c(e,f,g,h),ncol=4)

J = diag(4)
J[1,1]=0
Q = P%*%J

target.val = cor(as.vector(qhat), Q%*%solve(I - param_space$mu_1*A)%*%t(varset))
solution = which.max(target.val)
param_space[solution,]

该对象的param_space最终尺寸为 14641 X 4。我使用as.vector上面的函数来避免 R 中出现的关于使用非数字对象执行矩阵运算的错误。t(varset)上面广义等式中的 D 在实际代码中已替换为此处。物体的尺寸t(varset)是 4 X 90。

这是一条可能/可能没有用的信息:当我简单地复制和粘贴时

 Q%*%solve(I - param_space$mu_1*A)%*%t(varset)  

在我的控制台中,我得到与运行上面编写的代码时相同的错误。即,

"Error in solve(I - param_space$mu_1 * A) : 
  dims [product 16] do not match the length of object [14641]

另外:警告信息:

In param_space$mu_1 * A :
  longer object length is not a multiple of shorter object length"

所以我想我不恰当地设置了网格搜索。任何帮助,将不胜感激。这实际上是我的第一篇文章,所以我也很欣赏这个资源。不要挑剔,但我试图避免在 R 中循环。

-克里斯

4

0 回答 0