【问题标题】:Issue with cross-validation using the automap package使用 automap 包的交叉验证问题
【发布时间】:2013-01-03 21:01:47
【问题描述】:

我想对 geoR 中的 ca20-Dataset 进行交叉验证 包裹。例如,使用 meuse 数据集,这可以正常工作,但是对于 这个数据集,我遇到了一个奇怪的问题 空间点数据帧。也许您可以自己尝试并解释 为什么 autoKrige.cv 函数不起作用(我尝试了几个 nfold-values 但这只会更改错误的位置值 消息...):

library(geoR)
library(gstat)
library(automap)
data(ca20)
east=ca20$coords[,1]
north=ca20$coords[,2]
concentration=ca20$data
frame=data.frame(east,north)
data=data.frame(concentration)
points<-SpatialPoints(data.frame(east,north),proj4string=CRS(as.character(NA)))
pointsframe<-SpatialPointsDataFrame(points,data, coords.nrs = numeric(0),proj4string = CRS(as.character(NA)), match.ID = TRUE)
krig=autoKrige(pointsframe$concentration~1,pointsframe)
plot(krig)
cv=autoKrige.cv(pointsframe$concentration~1,pointsframe)

希望有人能重现问题,我的R版本是2.15,所有包都是最新的(至少不超过一个月左右...)。

感谢您的帮助!!

【问题讨论】:

  • 请注意gstatautomap 不适用于非投影数据,因此请检查是否是这种情况。看来您的数据没有被预测...

标签: r gstat spatial-interpolation automap geor


【解决方案1】:

首先,您可以更轻松地构建 SpatialPointsDataFrame:

library(geoR)
library(gstat)
library(automap)

...并构建 SPDF:

pointsframe = data.frame(ca20$coords)
pointsframe$concentration = ca20$data
coordinates(pointsframe) = c("east", "north")

您遇到的问题在于如何使用formula 参数。您将空间对象pointsframe 添加到公式中,实质上是将向量直接放入公式中。您应该只在公式中使用列名,如下所示:

cv=autoKrige.cv(concentration~1,pointsframe)

它的工作原理:

> summary(cv)
            [,1]      
mean_error  -0.01134  
me_mean     -0.0002237
MAE         6.02      
MSE         60.87     
MSNE        1.076     
cor_obspred 0.7081    
cor_predres 0.01343   
RMSE        7.802     
RMSE_sd     0.7041    
URMSE       7.802     
iqr         9.519 

【讨论】:

    猜你喜欢
    • 2017-08-27
    • 2023-03-04
    • 2021-05-24
    • 2013-01-24
    • 2015-01-13
    • 2012-05-18
    • 2020-09-16
    • 2015-09-26
    • 1970-01-01
    相关资源
    最近更新 更多