首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用自动映射包进行交叉验证的问题

使用自动映射包进行交叉验证的问题
EN

Stack Overflow用户
提问于 2013-01-21 02:46:46
回答 1查看 400关注 0票数 1

我想对geoR包中的ca20数据集进行交叉验证。例如,对于meuse-dataset,这可以很好地工作,但是对于这个数据集,我遇到了一个关于SpatialPointsDataFrame的尺寸的奇怪问题。也许你可以自己试一试,解释为什么autoKrige.cv函数不能工作(我尝试了几个nfold value,但这只改变了错误消息的locations-value ...):

代码语言:javascript
复制
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,所有的包都是最新的(至少不会超过一个月……)。

谢谢你的帮助!!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-21 03:23:43

首先,构建SpatialPointsDataFrame的方式可以更容易地完成:

代码语言:javascript
复制
library(geoR)
library(gstat)
library(automap)

...and构建SPDF:

代码语言:javascript
复制
pointsframe = data.frame(ca20$coords)
pointsframe$concentration = ca20$data
coordinates(pointsframe) = c("east", "north")

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

代码语言:javascript
复制
cv=autoKrige.cv(concentration~1,pointsframe)

而且它是有效的:

代码语言:javascript
复制
> 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 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14427941

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档