次の相関関係を最大化したいと思います。
corr(qhat, [0, mu_2, mu_3, mu_4]*inv(I - mu_1*A)*D),
ここで、qhat は長さ 90 の時系列です。mu_1,
mu_2 ,
mu_3 , and
mu_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; here
inv 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 でのループを回避しようとしています。
-クリス