使用kppm函数时,无法理解R中Spatstat中的此错误消息

时间:2016-09-04 06:58:49

标签: r spatial spatstat

我正在尝试使用R中kppm包中的spatstat函数来拟合集群流程模型。 现在,我收到一条错误消息:

  

系统在计算上是单数的:倒数条件数= 6.62594e-21“

以及警告信息:

  

无法计算方差:Fisher信息矩阵是单数

这是什么意思?我选择的型号错了吗?或者我应该使用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

请帮忙!

2 个答案:

答案 0 :(得分:1)

只是猜测但在内部kppm函数使用solve,请参阅:

https://github.com/cran/spatstat/blob/master/R/kppm.R#L907

如果计算中的数字非常小,求解函数的算法会导致假设奇异矩阵(如果不使用特殊函数属性来设置公差),请参阅:

Mahalonobis distance in R, error: system is computationally singular

如果您将设备更改为其他比例以避免小数字会怎样?

答案 1 :(得分:1)

这是一个经常被问到的问题,但我很抱歉在spatstat帮助中找不到答案(我会解决这个问题)。

快速回答:将数据集从米转换为千米:

  

pp2 <- rescale(pp2, 1000)

然后重新调整模型,就像在原始帖子中一样。

如果矩阵的行列式为零,则它是“奇异的”,因此它不能被反转。如果行列式非常接近于零,则它是“计算上单数的”,因此计算机不能使用其标准数值程序来反转矩阵。

Fisher信息矩阵是拟合模型的基本属性,如果我们想要计算参数估计的标准误差或置信区间等,则必须将其反转。

对您的问题最可能的解释是数据集中的坐标是非常大的数字(例如以米为单位表示),因此拟合的模型系数相应地为小数,因此Fisher信息矩阵的条目非常小,因此它在计算上是单数的。虽然可以安装模型,但是当您打印它时,软件会尝试计算标准误差,然后它就会失效。

有几种其他可能的解释来获取奇异矩阵,例如混淆或共线性,这些解释在vcov.ppmanova.ppm的帮助文件中进行了解释。但这些可能不适用于您的情况。