Рассчитайте плотность отдельно и постройте ее для начала. Затем вы можете использовать базовую арифметику, чтобы получить оценку. Интеграция аппроксимируется суммированием площади множества маленьких квадратов. Я использую средний метод для этого. длина - это разница между двумя значениями x, высота - это среднее значение y в начале и в конце интервала. Я использую функцию rollmeans в пакете zoo, но это можно сделать и с помощью базового пакета.
require(zoo)
X <- rnorm(100)
# calculate the density and check the plot
Y <- density(X) # see ?density for parameters
plot(Y$x,Y$y, type="l") #can use ggplot for this too
# set an Avg.position value
Avg.pos <- 1
# construct lengths and heights
xt <- diff(Y$x[Y$x<Avg.pos])
yt <- rollmean(Y$y[Y$x<Avg.pos],2)
# This gives you the area
sum(xt*yt)
Это дает хорошее приближение до 3 цифр за десятичным знаком. Если вы знаете функцию плотности, взгляните на ?integrate