Это может помочь вам понять, что вертикальная ось измеряется как плотность вероятности . Таким образом, если горизонтальная ось измеряется в км, то вертикальная ось измеряется как плотность вероятности «на км». Предположим, мы нарисуем прямоугольный элемент на такой сетке, ширина которой составляет 5 км, а высота - 0,1 км / км (которую вы можете предпочесть записать как «км - 1 »). Площадь этого прямоугольника составляет 5 км х 0,1 км - 1 = 0,5. Подразделения отменяются, и у нас остается только половина вероятности.−1−1
Если вы изменили горизонтальные единицы на «метры», вам придется изменить вертикальные единицы на «на метр». Прямоугольник теперь будет шириной 5000 метров и будет иметь плотность (высоту) 0,0001 на метр. Вы все еще остались с вероятностью одной половины. Вы можете быть обеспокоены тем, как странно эти два графика будут выглядеть на странице по сравнению друг с другом (не нужно ли быть намного шире и короче другого?), Но когда вы физически рисуете графики, вы можете использовать все, что угодно. масштабировать вам нравится. Посмотрите ниже, чтобы увидеть, как мало странностей нужно задействовать.
Возможно, вам будет полезно рассмотреть гистограммы, прежде чем переходить к кривым плотности вероятности. Во многом они аналогичны. Вертикальная ось гистограммы - это плотность частоты [на единицу ],x а области представляют частоты, опять же, потому что горизонтальные и вертикальные единицы сокращаются при умножении. Кривая PDF - это своего рода непрерывная версия гистограммы с общей частотой, равной единице.
Еще более близкой аналогией является гистограмма относительной частоты - мы говорим, что такая гистограмма была «нормализована», так что элементы площади теперь представляют пропорции вашего исходного набора данных, а не необработанные частоты, и общая площадь всех столбцов равна единице. Высоты теперь представляют собой относительные плотности частот [на единицу ]x . Если гистограмма относительной частоты имеет полосу, которая проходит вдоль xзначения от 20 км до 25 км (таким образом, ширина полосы равна 5 км) и имеет относительную плотность частоты 0,1 на км, тогда эта полоса содержит 0,5 процента данных. Это в точности соответствует идее о том, что случайно выбранный элемент из вашего набора данных с вероятностью 50% лежит в этом баре. Предыдущий аргумент о влиянии изменений в единицах по-прежнему применяется: сравните пропорции данных, лежащих на полосе от 20 до 25 км, с данными на полосе от 20 000 до 25 000 метров для этих двух участков. Вы также можете арифметически подтвердить, что площади всех баров в обоих случаях равны единице.
Что я мог иметь в виду под моим утверждением, что PDF является «своего рода непрерывной версией гистограммы»? Давайте возьмем небольшую полосу под кривой плотности вероятности вдоль значений в интервале [ x , x + δ x ] , поэтому ширина полосы составляет δ x , а высота кривой приблизительно равна f ( x ) . Мы можем нарисовать полосу той высоты, площадь которой f ( x )x[x,x+δx]δxf(x) представляет приблизительную вероятность лжи в этой полосе.f(x)δx
Как мы можем найти область под кривой между и x = b ? Мы могли бы разделить этот интервал на маленькие полоски и взять сумму площадей баров, ∑ f ( x )x=ax=b , что соответствует приблизительной вероятности нахождения в интервале [ a , b ] . Мы видим, что кривая и столбцы точно не совпадают, поэтому в нашем приближении есть ошибка. Делая δ x меньше и меньше для каждого бара, мы заполняем интервал более и более узкими барами, у которых ∑ f ( x )∑f(x)δx[a,b]δx дает лучшую оценку площади.∑f(x)δx
Для того, чтобы рассчитать площадь точно, а не предполагая была постоянной по каждой полосе, мы оцениваем интеграл ∫ б в е ( х ) д х , и это соответствует истинной вероятности , лежащей в интервале [ , Ь ] , Интегрирование по всей кривой дает общую площадь (т. Е. Общую вероятность) единицу, по той же причине, что суммирование площадей всех столбцов гистограммы относительной частоты дает общую площадь (т. Е. Общую пропорцию) единицы. Интеграция сама по себе является своего рода непрерывной версией взятия суммы.f(x)∫baf(x)dx[a,b]
R код для участков
require(ggplot2)
require(scales)
require(gridExtra)
# Code for the PDF plots with bars underneath could be easily readapted
# Relative frequency histograms
x.df <- data.frame(km=c(rep(12.5, 1), rep(17.5, 2), rep(22.5, 5), rep(27.5, 2)))
x.df$metres <- x.df$km * 1000
km.plot <- ggplot(x.df, aes(x=km, y=..density..)) +
stat_bin(origin=10, binwidth=5, fill="steelblue", colour="black") +
xlab("Distance in km") + ylab("Relative frequency density per km") +
scale_y_continuous(minor_breaks = seq(0, 0.1, by=0.005))
metres.plot <- ggplot(x.df, aes(x=metres, y=..density..)) +
stat_bin(origin=10000, binwidth=5000, fill="steelblue", colour="black") +
xlab("Distance in metres") + ylab("Relative frequency density per metre") +
scale_x_continuous(labels = comma) +
scale_y_continuous(minor_breaks = seq(0, 0.0001, by=0.000005), labels=comma)
grid.arrange(km.plot, metres.plot, ncol=2)
x11()
# Probability density functions
x.df <- data.frame(x=seq(0, 1, by=0.001))
cutoffs <- seq(0.2, 0.5, by=0.1) # for bars
barHeights <- c(0, dbeta(cutoffs[1:(length(cutoffs)-1)], 2, 2), 0) # uses left of bar
x.df$pdf <- dbeta(x.df$x, 2, 2)
x.df$bar <- findInterval(x.df$x, cutoffs) + 1 # start at 1, first plotted bar is 2
x.df$barHeight <- barHeights[x.df$bar]
x.df$lastBar <- ifelse(x.df$bar == max(x.df$bar)-1, 1, 0) # last plotted bar only
x.df$lastBarHeight <- ifelse(x.df$lastBar == 1, x.df$barHeight, 0)
x.df$integral <- ifelse(x.df$bar %in% 2:(max(x.df$bar)-1), 1, 0) # all plotted bars
x.df$integralHeight <- ifelse(x.df$integral == 1, x.df$pdf, 0)
cutoffsNarrow <- seq(0.2, 0.5, by=0.025) # for the narrow bars
barHeightsNarrow <- c(0, dbeta(cutoffsNarrow[1:(length(cutoffsNarrow)-1)], 2, 2), 0) # uses left of bar
x.df$barNarrow <- findInterval(x.df$x, cutoffsNarrow) + 1 # start at 1, first plotted bar is 2
x.df$barHeightNarrow <- barHeightsNarrow[x.df$barNarrow]
pdf.plot <- ggplot(x.df, aes(x=x, y=pdf)) +
geom_area(fill="lightsteelblue", colour="black", size=.8) +
ylab("probability density") +
theme(panel.grid = element_blank(),
axis.text.x = element_text(colour="black", size=16))
pdf.lastBar.plot <- pdf.plot +
scale_x_continuous(breaks=tail(cutoffs, 2), labels=expression(x, x+delta*x)) +
geom_area(aes(x=x, y=lastBarHeight, group=lastBar), fill="steelblue", colour="black", size=.8) +
annotate("text", x=0.73, y=0.22, size=6, label=paste("P(paste(x<=X)<=x+delta*x)%~~%f(x)*delta*x"), parse=TRUE)
pdf.bars.plot <- pdf.plot +
scale_x_continuous(breaks=cutoffs[c(1, length(cutoffs))], labels=c("a", "b")) +
geom_area(aes(x=x, y=barHeight, group=bar), fill="steelblue", colour="black", size=.8) +
annotate("text", x=0.73, y=0.22, size=6, label=paste("P(paste(a<=X)<=b)%~~%sum(f(x)*delta*x)"), parse=TRUE)
pdf.barsNarrow.plot <- pdf.plot +
scale_x_continuous(breaks=cutoffsNarrow[c(1, length(cutoffsNarrow))], labels=c("a", "b")) +
geom_area(aes(x=x, y=barHeightNarrow, group=barNarrow), fill="steelblue", colour="black", size=.8) +
annotate("text", x=0.73, y=0.22, size=6, label=paste("P(paste(a<=X)<=b)%~~%sum(f(x)*delta*x)"), parse=TRUE)
pdf.integral.plot <- pdf.plot +
scale_x_continuous(breaks=cutoffs[c(1, length(cutoffs))], labels=c("a", "b")) +
geom_area(aes(x=x, y=integralHeight, group=integral), fill="steelblue", colour="black", size=.8) +
annotate("text", x=0.73, y=0.22, size=6, label=paste("P(paste(a<=X)<=b)==integral(f(x)*dx,a,b)"), parse=TRUE)
grid.arrange(pdf.lastBar.plot, pdf.bars.plot, pdf.barsNarrow.plot, pdf.integral.plot, ncol=2)