【发布时间】:2014-06-13 14:15:34
【问题描述】:
我需要加快计算 R 中 WLS 中 beta 的平均估计值 - 我能够加快协方差计算 thanks to SO,现在我想知道是否还有另一个技巧可以加快平均计算(或者如果我正在做的已经足够有效)。
n = 10000
y = rnorm(n, 3, 0.4)
X = matrix(c(rnorm(n,1,2), sample(c(1,-1), n, replace = TRUE), rnorm(n,2,0.5)), nrow = n, ncol = 3)
Q = diag(rnorm(n, 1.5, 0.3))
wls.cov.matrix = crossprod(X / sqrt(diag(Q)))
Q.inv = diag(1/diag(Q))
wls.mean = wls.cov.matrix%*%t(X)%*%Q.inv%*%y
system.time(wls.cov.matrix%*%t(X)%*%Q.inv%*%y)
是否有另一个类似 wls.cov.matrix crossprod 的技巧来加速整个平均计算,还是不需要?谢谢!
【问题讨论】:
-
您的代码无法正常运行。此外,性能问题应包括基准和性能要求规范。
-
@Roland 感谢您的发现,错误已修复。在性能要求方面,我只是在寻找潜在的改进(或证明无法改进的答案),我更需要知道是否可以加快速度。
标签: r performance matrix regression