使用 kppm 函数时无法理解 R 中 Spatstat 中的此错误消息
Cannot comprehend this error message in Spatstat in R while using kppm function
我正在尝试使用 R 中 spatstat
包中的 kppm
函数来拟合集群过程模型。
现在,我收到一条错误消息:
system is computationally singular: reciprocal condition number = 6.62594e-21"
连同一条警告消息:
Cannot compute variance: Fisher information matrix is singular
这是什么意思?我选择的模型是错误的吗?或者我应该只使用 ppm 模型吗?这是错误消息的屏幕截图:-
#Inhomogeneous cluster point process model Fitted to point pattern dataset
#Fitted by minimum contrast
# Summary statistic:
# inhomogeneous K-function
#Error in solve.default(M) : system is computationally singular: reciprocal condition number = 6.62594e-21
#Error in solve.default(M) : system is computationally singular:
#reciprocal condition number = 6.62594e-21 In addition: Warning
# message: Cannot compute variance: Fisher information matrix is
# singular Log intensity: ~x + y
# Fitted trend coefficients: (Intercept) -1.037242e+03
# x 4.144605e-06
# y 1.353254e-04
# Cluster model: Thomas process Fitted cluster parameters:
# kappa 4.024328e-09
# Scale 6.245828e+02
#Mean cluster size: [pixel image]
#Warning message: Cannot compute variance: Fisher information matrix is singular
请帮忙!
只是一个猜测,但 kppm 函数在内部使用求解,请参阅:
https://github.com/cran/spatstat/blob/master/R/kppm.R#L907
如果计算中的数字非常小,求解函数的算法会导致奇异矩阵的假设(如果不使用特殊的函数属性来设置容差),请参阅:
Mahalonobis distance in R, error: system is computationally singular
如果您将单位更改为另一个比例以避免小数字,会发生什么情况?
这是一个常见问题,但很抱歉在 spatstat
帮助中不太容易找到答案(我会修复)。
快速回答:将您的数据集从米重新调整为公里:
pp2 <- rescale(pp2, 1000)
然后按照原来的方式重新拟合模型 post。
如果矩阵的行列式为零,则矩阵为 'singular',因此无法求逆。如果行列式非常接近于零,则为 'computationally singular',因此计算机无法使用其标准数值程序对矩阵求逆。
Fisher 信息矩阵是拟合模型的基础属性,如果我们要计算参数估计的标准误差或置信区间等,则必须反转它
对您的问题最可能的解释是数据集中的坐标是非常大的数字(例如以米表示),因此拟合模型系数相应地是较小的数字,因此 Fisher 信息矩阵的条目非常小, 所以它在计算上是奇异的。虽然模型可以拟合,但当你打印它时,软件会尝试计算标准误差,然后它就会失败。
得到奇异矩阵有几种其他可能的解释,例如混杂或共线性,这些在vcov.ppm
或[=13的帮助文件中有解释=].但这些可能不适用于您的情况。
我正在尝试使用 R 中 spatstat
包中的 kppm
函数来拟合集群过程模型。
现在,我收到一条错误消息:
system is computationally singular: reciprocal condition number = 6.62594e-21"
连同一条警告消息:
Cannot compute variance: Fisher information matrix is singular
这是什么意思?我选择的模型是错误的吗?或者我应该只使用 ppm 模型吗?这是错误消息的屏幕截图:-
#Inhomogeneous cluster point process model Fitted to point pattern dataset
#Fitted by minimum contrast
# Summary statistic:
# inhomogeneous K-function
#Error in solve.default(M) : system is computationally singular: reciprocal condition number = 6.62594e-21
#Error in solve.default(M) : system is computationally singular:
#reciprocal condition number = 6.62594e-21 In addition: Warning
# message: Cannot compute variance: Fisher information matrix is
# singular Log intensity: ~x + y
# Fitted trend coefficients: (Intercept) -1.037242e+03
# x 4.144605e-06
# y 1.353254e-04
# Cluster model: Thomas process Fitted cluster parameters:
# kappa 4.024328e-09
# Scale 6.245828e+02
#Mean cluster size: [pixel image]
#Warning message: Cannot compute variance: Fisher information matrix is singular
请帮忙!
只是一个猜测,但 kppm 函数在内部使用求解,请参阅:
https://github.com/cran/spatstat/blob/master/R/kppm.R#L907
如果计算中的数字非常小,求解函数的算法会导致奇异矩阵的假设(如果不使用特殊的函数属性来设置容差),请参阅:
Mahalonobis distance in R, error: system is computationally singular
如果您将单位更改为另一个比例以避免小数字,会发生什么情况?
这是一个常见问题,但很抱歉在 spatstat
帮助中不太容易找到答案(我会修复)。
快速回答:将您的数据集从米重新调整为公里:
pp2 <- rescale(pp2, 1000)
然后按照原来的方式重新拟合模型 post。
如果矩阵的行列式为零,则矩阵为 'singular',因此无法求逆。如果行列式非常接近于零,则为 'computationally singular',因此计算机无法使用其标准数值程序对矩阵求逆。
Fisher 信息矩阵是拟合模型的基础属性,如果我们要计算参数估计的标准误差或置信区间等,则必须反转它
对您的问题最可能的解释是数据集中的坐标是非常大的数字(例如以米表示),因此拟合模型系数相应地是较小的数字,因此 Fisher 信息矩阵的条目非常小, 所以它在计算上是奇异的。虽然模型可以拟合,但当你打印它时,软件会尝试计算标准误差,然后它就会失败。
得到奇异矩阵有几种其他可能的解释,例如混杂或共线性,这些在vcov.ppm
或[=13的帮助文件中有解释=].但这些可能不适用于您的情况。