несогласованные аргументы с трехмерным матричным (тензорным) умножением в R - PullRequest
0 голосов
/ 16 июня 2020

У меня есть 3D-матрица $ X $ размерности $ T $ x $ N $ x $ k $ , и я пытаюсь написать уравнение для решения вектор коэффициентов.

X <-array(rnorm(T_*N*k),dim=c(T_,N,k)) # I used T_ to denote T 

, и я пытаюсь сделать

b <-solve((aperm(X,c(3,2,1))) %*% M %*% X)%*%(aperm(X,c(3,2,1))) %*% M %*% Y

, где $ b $ должно быть $ k $ x $ N $ , поскольку $ Y $ - это $ T $ x $ N $ , а $ M $ - это матрица $ T $ x $ T $ . Выдает ошибку

Error in (aperm(X, c(3, 2, 1))) %*% M : non-conformable arguments

Просто начальная проверка

dim(aperm(X,c(3,2,1)))

дает $ k $ x $ N $ x $ T $ что и есть Я хотел, чтобы это было. Поэтому я считаю, что могу с уверенностью заключить, что %*% не достигает того, о чем я думал.

Думаю, одно из решений - преобразовать $ X $ в 2 измерения с блоками, чтобы оно стало $ \ tilde {X} $ с размерами $ NT $ x $ k $ или, может быть, мне нужно l oop по одному из измерений, чтобы структура не изменилась? Я надеюсь найти решение этой проблемы с такой размерной структурой. Любые мысли / помощь приветствуются ...

...