2014-10-02 167 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