尝试在KernSmooth的bkde2D函数中设置range.x导致“'to'必须为有限数”

时间:2019-05-13 19:34:13

标签: r kernel-density probability-density

使用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))

非常感谢

1 个答案:

答案 0 :(得分:1)

不幸的是,错误消息不是很有帮助。 bkde2D函数的帮助页面显示

  

range.x
  一个包含两个向量的列表,其中每个向量包含x的最小值和最大值,在该值处可以计算每个方向的估计值。

唯一的问题是将参数指定为向量,而不指定为列表。以下应该可以工作

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)