使用 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的帮助文件中有解释=].但这些可能不适用于您的情况。