2014-06-23 92 views
4

我目前正在爲我正在開發的生態項目建立密度對象。在R中的density函數對我的數據擬合密度函數非常有效。從密度對象中提取概率

的我如何使用density功能的示例如下所示:

dens.iris <- density(iris$Sepal.Length, bw = "bcv") 

這工作得很好。但是,predict函數似乎不適用於density對象。有誰知道一種方法來提取特定點的密度值(例如,在iris數據集中,提取6.432的Sepal.Length)?爲此,我使用biased cross validation技術很重要。

+2

查看'str()'函數來探索R中的對象。從您的示例中我可以看到'dens'對象是隻是7個向量的列表。 'dens.iris $ y'會給你'dens.iris $ x'的每個值的密度的y值。我不確定你是否真的需要使用R的預測函數 - 由於「預測」函數只是將輸入值線性插入到'dens.iris $ x'和'dens'值之間,所以很容易實現。虹膜$ y'。 –

回答

7

您可以使用approxfun函數對由密度結果給出的點進行線性插值。因此,你可以使用

diris <- with(dens.iris, approxfun(x, y, rule=1)) 
diris(6.432) 
# [1] 0.349344 

curve(diris(x), from=4.0, to=7.9) 

enter image description here

當然,你要記住,一個密度曲線的值是不一樣的東西概率。與任何連續分佈一樣,萼片長度恰好爲6.432的概率爲0.

+0

很好的答案,就像往常@MrFlick關於概率爲零的好消息也是如此。謝謝! –