Расчет площади под непрерывным графиком плотности - PullRequest
4 голосов
/ 06 октября 2010

У меня есть две кривые плотности, построенные с использованием этого:

Network <- Mydf$Networks
quartiles <-  quantile(Mydf$Avg.Position,  probs=c(25,50,75)/100)
density <- ggplot(Mydf, aes(x = Avg.Position, fill = Network))
d <- density + geom_density(alpha = 0.2) + xlim(1,11) + opts(title = "September 2010") + geom_vline(xintercept = quartiles, colour = "red")
print(d)

Я бы хотел вычислить площадь под каждой кривой для данного диапазона Avg.Position.Вроде как pnorm для нормальной кривой.Есть идеи?

Ответы [ 2 ]

10 голосов
/ 07 октября 2010

Рассчитайте плотность отдельно и постройте ее для начала. Затем вы можете использовать базовую арифметику, чтобы получить оценку. Интеграция аппроксимируется суммированием площади множества маленьких квадратов. Я использую средний метод для этого. длина - это разница между двумя значениями 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

4 голосов
/ 07 октября 2010

Три возможности:

Пакет logspline предоставляет другой метод оценки кривых плотности, но он включает в себя функции стиля pnorm для результата.

Вы также можете аппроксимировать площадь путем подачиПеременные x и y возвращаются функцией плотности функции приближения и используют результат с функцией интегрирования.Если вас не интересуют точные оценки небольших участков хвоста (или очень малых интервалов), то это, вероятно, даст разумное приближение.

Оценки плотности - это просто суммы ядер, центрированных по данным, одно такое ядро ​​простонормальное распределение.Вы можете усреднить области из pnorm (или других ядер) с sd, определяемой пропускной способностью и центрированной по вашим данным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...