2

假设我有如下数据:

val <- .65
set.seed(1)
distr <- replicate(1000, jitter(.5, amount = .2))
d <- density(distr)

由于stats::density使用特定的bw,它不包括区间中的所有可能值(因为它们是无限的):

d$x[ d$x > .64 & d$x < .66 ]

[1] 0.6400439 0.6411318 0.6422197 0.6433076 0.6443955 0.6454834 0.6465713 0.6476592 0.6487471
[10] 0.6498350 0.6509229 0.6520108 0.6530987 0.6541866 0.6552745 0.6563624 0.6574503 0.6585382
[19] 0.6596261

我想找到一种方法来提供val密度函数,以便它返回它的d$y估计值(然后我将用它来为密度图的区域着色)。

我猜不出这个问题有多愚蠢,但我找不到快速的解决方案。

d$y我想通过对应于d$x更接近的两个值的线性插值来获得它val。有更快的方法吗?

4

1 回答 1

1

这说明了使用approxfun

> Af <- approxfun(d$x, d$y)
> Af(val)
[1] 2.348879
> plot(d(
+ 
> plot(d)
> points(val,Af(val) )
> png();plot(d); points(val,Af(val) ); dev.off()

在此处输入图像描述

于 2014-12-01T16:03:09.313 回答