我正在尝试估算内核平滑数据的初始带宽值,计算均方误差(函数“mse2d”),但在函数参数的多边形实现代码中遇到错误。
我在Bivand,Pebesma和Gómez-Rubio(2013年,第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”对象和矩阵而不是列表,但都没有解决。
我很感激任何评论或帮助。 提前谢谢大家。
利拉