使用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))
非常感谢
答案 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)