2017-04-23 240 views
4

我已經構建了密度函數,現在我想計算新數據點「落入」選定區間(比如a = 3,b = 7)的概率。所以,我在尋找:從密度函數計算概率

P(a<x<=b) 

一些樣本數據:

df<- data.frame(x=c(sample(6:9, 50, replace=TRUE), sample(18:23, 25, replace=TRUE))) 

dens<- density(df$x) 

我會很高興聽到任何解決方案,但最好是在基礎R

謝謝提前

回答

3

您需要獲得密度函數(使用approxfun),然後將函數集成到期望的極限上。

integrate(approxfun(dens), lower=3, upper=7) 
0.258064 with absolute error < 3.7e-05 

## Consistency check 
integrate(approxfun(dens), lower=0, upper=30) 
0.9996092 with absolute error < 1.8e-05 
+0

非常感謝。還有一個問題:我試圖將我的密度限制爲dens <-density(df $ x,from = 0,to = 24)'。但是,當我計算'積分(approxfun(dens),lower = 0,upper = 24)'時,我沒有得到「完全」概率(1),我期望得到。有沒有辦法限制我的密度函數,使我得到我期望得到的結果? – staove7

+1

標準帶寬對您而言可能太大。嘗試'dens < - density(df $ x,from = 0,to = 24,adjust = 0.5) ' – G5W