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 D`represents the matrix inverse operator;は、次元 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 は、実際のコードでは here に置き換えられています。オブジェクトの寸法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