Potrebbe aiutarti a capire che l'asse verticale viene misurato come densità di probabilità . Pertanto, se l'asse orizzontale viene misurato in km, l'asse verticale viene misurato come densità di probabilità "per km". Supponiamo di disegnare un elemento rettangolare su tale griglia, larga 5 "km" e alta 0,1 "per km" (che potresti preferire scrivere come "km "). L'area di questo rettangolo è di 5 km x 0,1 km = 0,5. Le unità si annullano e ci rimane solo una probabilità della metà.- 1- 1- 1
Se hai cambiato le unità orizzontali in "metri", dovresti cambiare le unità verticali in "per metro". Il rettangolo ora sarebbe largo 5000 metri e avrebbe una densità (altezza) di 0,0001 al metro. Ti rimane ancora una probabilità della metà. Potresti essere turbato da quanto strani questi due grafici appariranno sulla pagina l'uno rispetto all'altro (non è necessario che uno sia molto più ampio e più corto dell'altro?), Ma quando disegni fisicamente le trame puoi usare qualunque cosa scala che ti piace. Guarda in basso per vedere quanto deve essere coinvolta la piccola stranezza.
Potrebbe essere utile considerare gli istogrammi prima di passare alle curve di densità di probabilità. In molti modi sono analoghi. L'asse verticale di un istogramma è la densità di frequenza [per unità ]X e le aree rappresentano le frequenze, sempre perché le unità orizzontali e verticali si annullano alla moltiplicazione. La curva PDF è una sorta di versione continua di un istogramma, con una frequenza totale pari a una.
Un'analogia ancora più stretta è un istogramma di frequenza relativa : diciamo che un simile istogramma è stato "normalizzato", quindi gli elementi di area ora rappresentano le proporzioni del set di dati originale anziché le frequenze grezze, e l'area totale di tutte le barre è una. Le altezze sono ora densità di frequenza relative [per unità ]X . Se un istogramma di frequenza relativa ha una barra che corre lungoXvalori da 20 km a 25 km (quindi la larghezza della barra è 5 km) e ha una densità di frequenza relativa di 0,1 per km, quindi quella barra contiene una proporzione 0,5 dei dati. Ciò corrisponde esattamente all'idea che un elemento scelto casualmente dal tuo set di dati abbia una probabilità del 50% di trovarsi in quella barra. La precedente argomentazione sull'effetto dei cambiamenti nelle unità si applica ancora: confrontare le proporzioni dei dati che si trovano nella barra da 20 km a 25 km a quella nei bar da 20.000 metri a 25.000 metri per questi due grafici. Puoi anche confermare aritmeticamente che le aree di tutte le barre si sommano a una in entrambi i casi.
Cosa avrei potuto intendere con la mia affermazione che il PDF è una "specie di versione continua di un istogramma"? Prendiamo una piccola striscia sotto una curva di densità di probabilità, lungo i valori nell'intervallo , quindi la striscia è ampia e l'altezza della curva è una approssimativamente costante . Possiamo disegnare una barra di quell'altezza, la cui area rappresenta la probabilità approssimativa di trovarsi in quella striscia.[ x , x + δ x ] δ x f ( x ) f ( x )X[ x , x + δx ]δXf( x )f( x )δX
Come possiamo trovare l'area sotto la curva tra e ? Potremmo suddividere quell'intervallo in piccole strisce e prendere la somma delle aree delle barre, , che corrisponderebbe alla probabilità approssimativa di trovarsi nell'intervallo . Vediamo che la curva e le barre non si allineano esattamente, quindi c'è un errore nella nostra approssimazione. Rendendo il più piccolo per ogni barra, riempiamo l'intervallo con barre più e più strette, il cui fornisce una stima migliore dell'area.x = b ∑ f ( x )x = ax = b[ a , b ] δ x ∑ f ( x )∑ f( x )δX[ a , b ]δX∑ f( x )δX
Per calcolare con precisione l'area, piuttosto che supporre che fosse costante attraverso ogni striscia, valutiamo l'integrale , e ciò corrisponde alla reale probabilità di trovarsi nell'intervallo . L'integrazione sull'intera curva fornisce un'area totale (cioè la probabilità totale) una, per lo stesso motivo per cui la somma delle aree di tutte le barre di un istogramma di frequenza relativa fornisce un'area totale (cioè la proporzione totale) di una. L'integrazione è essa stessa una sorta di versione continua del prendere una somma.∫ b a f ( x ) d x [ a , b ]f( x )∫Bun'f( x ) dX[ a , b ]
Codice R per grafici
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)