0

我正在尝试在相当大的区域(约 100 万公里 ^ 2)的 geoR 中进行克里金法。这是为了我的论文,所以很遗憾我不能分享数据。我已经检查了坐标和实际数据中的重复项,看看这是否是求解出现错误的原因。我尝试了不同的方式来写趋势,例如长手或“第二”。我看到过类似的错误,但它们都是回归建模示例。我的“test.geo”数据与坐标和数据一起排列,我的变异函数有效。所以我知道 .geo 数据的初始部分正在工作,我模型的克里金组件只是不想工作。

我的代码是:

    my.bdr <- map.shp2@polygons[[1]]@Polygons[[1]]@coords
    x <- my.bdr[,1]
    y <- my.bdr[,2]
    krige.grid <- expand.grid(seq(min(x), max(x), l=1000), 
                      seq(min(y), max(y), l=1000))
    test.ply <- as.matrix(cbind(x, y))   
    test <- krige.conv(test.geo, 
                 krige = krige.control(
                   type.krige = "OK",           
                   trend.d = trend.spatial(~ 1 + test.geo$coords[,1] + test.geo$coords[,2] 
                                           + I(test.geo$coords[,1]* test.geo$coords[,1]) 
                                           + I(test.geo$coords[,1]*test.geo$coords[,2])
                                           + I(test.geo$coords[,2]*test.geo$coords[,2])),    
                   trend.l = trend.spatial(~ 1 + krige.grid[,1] + krige.grid[,2] 
                                           + I(krige.grid[,1]* krige.grid[,1]) 
                                           + I(krige.grid[,1]*krige.grid[,2])
                                           + I(krige.grid[,2]*krige.grid[,2])), 
                   obj.model = test.svm),
                 locations = krige.grid, borders=test.ply)

我不断收到此错误:

    Error in solve.default(ttivtt, crossprod(ivtt, as.vector(data))) : 
    system is computationally singular: reciprocal condition number = 4.81502e-36

我将不胜感激为解决此问题而提供的任何建议或帮助!谢谢!

4

1 回答 1

0

这是一个古老的话题,但也许有人觉得有用。你用的是什么CRS?如果您使用的是 UTM,请尝试将坐标除以 1000。这是包的创建者提出的解决方案。它适用于线性趋势(不适用于第二个多项式趋势)

于 2019-01-21T12:06:44.227 回答