0

我正在尝试使用 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

请帮忙!

4

2 回答 2

1

只是一个猜测,但在内部 kppm 函数使用求解,请参阅:

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

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

R中的马氏距离,错误:系统在计算上是奇异的

如果您将单位更改为另一个比例以避免小数字,会发生什么?

于 2016-09-04T09:32:26.617 回答
1

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

快速回答:将您的数据集从米重新缩放到千米:

pp2 <- rescale(pp2, 1000)

然后像原来的帖子一样重新安装模型。

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

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

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

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

于 2016-09-05T00:39:31.550 回答