2014-04-01 39 views
1

我目前使用optim在R中估计模型,但它真的很慢,大约30分钟,如果我用零初始化它。当我分析整个事情时,我发现应用程序占用了大部分时间,这是有道理的。所以这导致我到我的问题:R中3D阵列的类矩阵运算?

x.arr <- array(1:9, c(3, 10, 3)) 
b <- 1:3 

f <- function(x, b) { 
    exp(x%*%b) 
} 

u.mat <- apply(x.arr, 2, f, b = b) 

有没有更有效的方法来做到这一点? x.arr是一个3D数组,所以看起来应该有某种方法来使用矩阵操作来解决同一个目标。另外,我运行Linux,所以我认为我也可以轻松地做些什么,但是每次我做了这个尝试,我都设法挂起我的整个R会话。

还有一个包tensor但是我迄今为止尝试过的所有东西都与我实际所寻找的相差甚远,我甚至不确定我要回来的是什么。

我线性代数是不是最好的,但直觉告诉我,就必须有某种好的选择,而无需使用申请。

回答

0

由于这些事情,我发现,其加速相当使用张量封装解决方案。 (我花了4个小时本昨天,但显然今天的事情就点击。)

require(tensor) 

x.arr <- array(1:9, c(3, 10, 3)) 
b  <- 1:3 

u.mat <- exp(tensor(x.arr, b, alongA = 3, alongB = 1)) 

现在把我从一个时间约30分钟左右〜10分钟的时间。

我,如果任何人对如何使其更快,当然,一个想法仍然有兴趣,但是也许如果别人发现了这个问题,这将至少是他们一个满意的答复。