我在R中有一个计算大量最小二乘解决方案(> 10,000:通常为100,000+)的程序,并且在分析之后,这些是该程序的当前瓶颈.我有一个矩阵A,其列向量对应于生成向量和解决方案b.我试图求解最小二乘解x的Ax=b.矩阵的大小通常为4xj - 其中很多都不是正方形(j <4),因此对于欠定系统的一般解决方案正是我所寻求的.
主要问题:在R中解决欠定系统的最快方法是什么?我有很多利用Normal Equation的解决方案,但我在R中寻找比下面任何一种方法更快的例程.
例如:x通过Ax = b给定以下约束来解决给定的系统:
ncol (A) <= length(b)无效,因为求解需要方阵.solve(A,b)(等效于t(A) %*% A)是非单数的 - 在程序的早期检查它crossprod(A)合理地为10x10,零元素很少发生 - A通常非常密集两个随机矩阵用于测试......
A = matrix(runif(12), nrow = 4)
b = matrix(runif(4), nrow = 4)
Run Code Online (Sandbox Code Playgroud)
以下所有功能均已分析.它们转载于此:
f1 = function(A,b)
{
solve(t(A) %*% A, t(A) %*% b)
}
f2 = function(A,b)
{
solve(crossprod(A), …Run Code Online (Sandbox Code Playgroud)