2024-10-01 22:43:29 发布
网友
sgels和利纳格?lstsq?
在对结果(即回归系数)进行数值比较时,预期误差(如6位有效数字)是多少?
看看numpy的源代码,在文件linalg.py中,lstsq依赖LAPACK的zgelsd()表示复杂,而{}表示实际。以下是sgels()的区别:
zgelsd()
sgels()
dgelsd()
double
float
dgels()
rcond
-1
如果矩阵是病态的,sgels()和{}的结果可能会有显著差异。实际上,线性回归的误差是有界的,这取决于算法和使用的rcond()的值。请参见the user guide of LAPACK on, Error Bounds for Linear Least Squares Problems以了解错误的估计值,Further Details: Error Bounds for Linear Least Squares Problems可获取技术细节。在
rcond()
结论是,sgels()和{}可以使用,如果{}中的度量是准确的并且容易与解释变量相关。例如,如果传感器安装在排气管的出口处,就很容易猜出哪个发动机在运转。但有时,污染源和测量值之间的线性联系并不精确(A术语的不确定性),或者根据测量结果对污染源进行区分变得更加困难(一些污染源远离传感器组,A条件不佳)。在这种情况下,dgelsd()和调整rcond参数可能会有所帮助。每当有疑问时,使用dgelsd()并根据LAPACK's user guide估计x的误差。
x
看看numpy的源代码,在文件linalg.py中,lstsq依赖LAPACK的}表示实际。以下是
zgelsd()
表示复杂,而{sgels()
的区别:dgelsd()
代表double
,而{float
。有不同的精度。。。在dgels()
利用矩阵A的QR分解,并假设A具有满秩。矩阵的条件数必须合理,才能得到有意义的结果。请参阅this course获取方法的逻辑。另一方面,dgelsd()
利用了A的奇异值分解,特别地,A可以是秩亏并根据附加参数rcond
或机器精度来讨论小的奇异值。请注意,numpy的rcond
的默认值是-1
:负值表示机器精度。有关逻辑,请参见this course。在dgels()
比dgelsd()
快大约5倍。在如果矩阵是病态的,}的结果可能会有显著差异。实际上,线性回归的误差是有界的,这取决于算法和使用的
sgels()
和{rcond()
的值。请参见the user guide of LAPACK on, Error Bounds for Linear Least Squares Problems以了解错误的估计值,Further Details: Error Bounds for Linear Least Squares Problems可获取技术细节。在结论是,}可以使用,如果{}中的度量是准确的并且容易与解释变量相关。例如,如果传感器安装在排气管的出口处,就很容易猜出哪个发动机在运转。但有时,污染源和测量值之间的线性联系并不精确(A术语的不确定性),或者根据测量结果对污染源进行区分变得更加困难(一些污染源远离传感器组,A条件不佳)。在这种情况下,
sgels()
和{dgelsd()
和调整rcond
参数可能会有所帮助。每当有疑问时,使用dgelsd()
并根据LAPACK's user guide估计x
的误差。相关问题 更多 >
编程相关推荐