obs=log(rexp(500))
plot(density(obs))
我使用approxfun()
R函数创建捕获此分布的函数,并且能够为传递的任何y
值返回x
值(通过使用插值)。
fun=approxfun(density(obs)$y)
# create a sequence of x values
seq=round(seq(min(obs),max(obs),length.out=50),2)
# find out which y values assigned by fun are not equal to NA
seq[-which(is.na(fun(seq)))]
返回
1.11 1.27 1.43 1.60
为什么所有x
值都低于1(从-6.38 to 0.95
确切)传递给函数全部分配了NA
y
值?该函数是为-6, -2
等定义的?我希望在0, 0.13
等周围插入值,而不是NAs
...
答案 0 :(得分:1)
应该是这样的:
fun <- approxfun(density(obs))
编写fun=approxfun(density(obs)$y)
时,不提供x值。所以,你应该省略$y
。
因此:
obs <- log(rexp(500))
fun <- approxfun(density(obs))
seq <- round(seq(min(obs), max(obs), length.out = 50), 2)
seq[-which(is.na(fun(seq)))]
# numeric(0)
不产生NA
s。