我正在做一些替代线性回归技术的比较。
显然,这些将是相对于OLS(普通最小二乘法)的基准标记。
但我只想要一个纯OLS方法,不需要对数据进行预处理,就可以发现使用regress()时数据中的病态。
我只希望使用经典的(XX)^-1XY表达式然而,这需要使用inv()函数,但是在inv()的MATLAB指南页中,它建议您在进行最小二乘估计时使用mldivide,因为它在执行时间和数值精度方面更优越。
但是,我担心使用mldivide来找到OLS估计值是否合适作为一个操作员,我似乎无法通过在调试器中“单步执行”来查看函数正在做什么。
我是否可以假设mldivide在所有条件(包括存在)下都会产生与理论OLS相同的答案?
如果不是,在没有任何数据预处理的情况下,在MATLAB中计算纯OLS答案的最佳方法是什么?

最佳答案

The short answer是:
当系统超定时,两种算法提供相同的答案当系统欠定时,PINV将返回具有最小范数(minA*x = b)的解MLDIVIDE将选择非零元素最少的解。
至于x如何工作,MathWorks also posted a description of how the function operates
但是,在讨论的第一部分中,当矩阵是平方的时,您可能还想看看this answer与其他方法的比较。
根据矩阵的形状和组成,可以对对称正定使用Cholesky分解,对其他方阵使用LU分解,否则使用QR分解然后,您可以保留因子分解,并使用NORM(x)基本上只为您做回替换。
mldivide不是正方形(过度指定)或是正方形而是单数时,the two options will give you two of the infinitely many solutions是否优于mldivide根据这些文档,这两种解决方案都将为您提供精确的解决方案:
Alinsolve按舍入误差的顺序来看,这两个解都是精确解。

08-24 13:35