我正在尝试使用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
请帮忙!
答案 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.ppm
或anova.ppm
的帮助文件中进行了解释。但这些可能不适用于您的情况。