我在使用KernSmooth的BKDE2D函数时似乎无法设置range.x。例如,以下所有尝试都会导致错误:
bkde2D(cbind((1:5),(1:5)),bandwidth=c(1,1),range.x=c(0,5))
bkde2D(cbind((1:5),(1:5)),bandwidth=c(1,1),range.x=c(c(0,5),c(0,5)))
bkde2D(cbind((1:5),(1:5)),bandwidth=c(1,1),range=c(c(0,5),c(0,5)))
bkde2D(cbind((1:5),(1:5)),bandwidth=c(1,1),range=c(0,5))
对于以上所有内容,结果为
Error in seq.default(a[1L], b[1L], length = M[1L]) :
'to' must be a finite number
这也行不通:
bkde2D(cbind((1:5),(1:5)),bandwidth=c(1,1),range.x=c(0,5),range.y=c(0,5))
但是,没有尝试设置范围,没有报告错误:
bkde2D(cbind((1:5),(1:5)),bandwidth=c(1,1))
非常感谢
不幸的是,错误消息不是很有帮助。bkde2D
功能的帮助页面说
range.x
一个包含两个向量的列表,其中每个向量包含x的最小值和最大值,以计算每个方向的估计值。
唯一的问题是将参数指定为 vector ,而不是 list 。以下应该有效
est <- bkde2D(cbind((1:5),(1:5)),bandwidth = c(1,1),range.x = list(c(0,5), c(0,5)))
contour(est$x1, est$x2, est$fhat)