在R中绘制密度时的带宽

时间:2014-10-02 21:38:47

标签: r

当我使用circular包绘制风向密度时,出现错误。错误如下所示。有人可以解释我需要的数据量的bw(带宽)吗?

plot(density(dirCir))
Error in density.circular(dirCir) : 
  argument "bw" is missing, with no default

这是我的实际代码。

library (circular)
dir <-c(308,351,330,16,3,346,345,345,287,359,345,358,336,335,346,16,325,354,5,354,322,340,6,278,354,343,261,353,288,8) 
dirCir <- circular(dir, units ="degrees", template = "geographics")
mean(dirCir)
var(dirCir)
summary(dirCir)
plot(dirCir)
plot(density(dirCir))
rose.diag(dirCir, main = 'dir Data')
points(dirCir)

2 个答案:

答案 0 :(得分:1)

当您在类density的对象上运行circular时,您似乎必须明确包含bw(带宽)的值(如错误消息所示)。试试这个:

plot(density(dirCir, kernel="wrappednormal", bw=0.02), ylim=c(-1,5))

见下图。 ylim范围是为了使绘图适合绘图区域而不进行裁剪。有关在density.circular对象上运行density函数的详细信息,请参阅circular的帮助。 enter image description here

答案 1 :(得分:1)

正如@ eipi10所说,必须明确选择bw。根据您选择的内核,此带宽参数的大小值可能会产生尖峰密度估计值以及非常平滑的密度估计值。

通常的做法是尝试多个值并选择似乎最能描述数据的值。但请注意,以下功能提供了更客观的方法来选择bw

# bw.cv.mse.circular(dirCir)
[1] 21.32236
# bw.cv.mse.circular(dirCir, kernel = "wrappednormal")
[1] 16.97266
# bw.cv.ml.circular(dirCir)
[1] 19.71197
# bw.cv.ml.circular(dirCir, kernel = "wrappednormal")
[1] 0.2280636
# bw.nrd.circular(dirCir)
[1] 14.63382