2014-10-02 166 views
1

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

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) 

回答

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 
+0

朱利叶斯的基础上,我只是尝试了几个例子,如果你运行'density'在一个圆形的物体上并使用1或更大的“bw”,结果在密度分布中几乎没有结构。只是一个光滑的椭圆或甚至一个圆圈,根本没有密度变化。另一方面,如果在转换为圆形对象之前对相同的数据运行'density',那么示例中的函数建议的带宽是有意义的。我之前没有使用'circular'包,但似乎带宽对于圆形对象的运行方式不同。 – eipi10 2014-10-02 22:25:46

+0

谢谢@Julius。我只是R的新手。为什么这个问题投反对票?这里的人经常假设。 – Gunnerfan 2014-10-02 22:59:21

+0

@Gunnerfan,我没有降低你的问题,但可能有几个原因,包括你提到的那个。你的代码格式有点不好,但我解决了它,我不认为这是一个原因;不清楚你是否询问错误或“bw”参数的含义;询问其含义会更适合stats.stackexchange,而''density.circular'中给出了一个非常基本的想法和用法示例。 – Julius 2014-10-02 23:19:09

1

circular类的一个对象上运行density,看来你必须包括用于bw(带宽)的值显式地(作为错误消息指示)。试试这个:

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

查看下面的图表。 ylim范围是这样的情节,使剧情适合剧情区域内没有削减。有关在circular对象上运行density函数的更多信息,请参阅density.circular的帮助。 enter image description here

+0

谢谢'@ eipi10',十分赞赏 – Gunnerfan 2014-10-02 23:00:07