我正在尝试估计内核平滑数据的初始带宽值,计算均方误差(函数“mse2d”),但在函数参数的多边形实现代码中遇到错误。
我在 Bivand、Pebesma 和 Gómez-Rubio (2013, pg. 186) 中使用了 spatstat Redwood 数据集的示例,效果很好:
library(spatstat)
library(splancs)
data(redwood)
spred<-as(redwood, "SpatialPoints")
#this is the function that computes the Mean Squared Error of the points
#distribution: mse2d(pts,poly,nsmse, range)
mserwq <- mse2d(as.points(coordinates(spred)), as.points(list(x = c(0,1, 1, 0), y = c(0, 0, 1, 1))), 100, 0.15)
bwq <- mserwq$h[which.min(mserwq$mse)]
bwq
好的。我使用我的数据集复制了这段代码。这是我的代码,其中包含返回相同错误的点子样本:
m23.Xs<-c(17349,13212,11551,16659,9461,12062,12802,9638,9835,9803)
m23.Ys<-c(576,13600,6372,11763,11081,5462,15802,11667,11552,11121)
# matrix of coordinates
loc23<-matrix(c(m23.Xs,m23.Ys),nrow=10,byrow=FALSE)
MSEm23<-mse2d(as.points(coodinates(loc.m23),as.points(list(x=c(0,20000,20000,0),y=c(0,0,20000,20000))),100,0.15))
Error in storage.mode(poly) <- "double" : argument "poly" missing, without pattern
其实,我把错误信息翻译成英文,不知道是不是完全一样。
如您所见,我的代码复制了书中的结构,但我不断收到这个“poly”参数的错误。我试图学习在 splancs 包中构造多边形,但无法弄清楚如何并且没有找到任何关于此的文档。在网上搜索后,我还尝试在“poly”参数处放置“owin”对象和矩阵而不是列表,但都没有成功。
我将不胜感激任何评论或帮助。谢谢大家。
莱拉