Kako pogosto vozijo avtobusi

Avtobusi ob nedeljah vozijo le dvakrat ali trikrat na dan. Ob delavnikih pa na pet ali deset minut. Kako je s čakalnimi časi do prihoda prvega avtobusa? Najmanj koliko časa bomo preživeli na postaji?

Eksponentna porazdelitev

Čakalne čase opusuje eksponentna porazdelitev. Če je \(\lambda\) število dogodkov v enoti časa (npr ura) je gostota verjetnosti:

\[f(T)= \lambda e^{-\lambda T}\]

kumulativna verjetnost pa

\[ F(t) = P(T \le t)= 1-e^{-\lambda t}\]

Čakam, čakam, čakam,

čakam kot …

dt <- 5  # minut
t <- seq(0,60,dt)/60 # v urah
hgrid <- c(0.25,0.5,0.75)

lm <- c(5,10,20,30)# na koliko minut pride avtobus
lambdas <- 60/lm  # avtobusov na uro
m <- length(lambdas)
F <- function(l,t) 1-exp(-l*t)
#
ts <- sapply(lambdas,F,t=t)
plot(t*60,F(12,t),ylab="Verjetnost, da bus pride čez nekaj minut ...",xlab="Minute čakanja",type="n",bty="n") 
segments(t*60,apply(ts,1,min),t*60,apply(ts,1,max),col=8,lwd=3)
segments(t*60,0,t*60,apply(ts,1,max),col=8,lwd=1,lty=2)
segments(0,hgrid,approx(apply(ts,1,min),t,hgrid)$y*60,hgrid,lwd=1,lty=2)
segments(approx(apply(ts,1,max),t,hgrid)$y*60,hgrid,approx(apply(ts,1,min),t,hgrid)$y*60,hgrid,lwd=2,col=8)
legend("bottomright",bty="n",lty=1,legend=paste("na" ,lm,"minut"),col=1:m)
for (i in 1:length(lambdas)) lines(t*60,F(lambdas[i],t),col=i,type="b",lwd=3)

… že dolgo stojim na postaji …

Verjetnost, da bomo čakalu več kot t minut imenujemo preživetje

\[ S(t) = P(T > t) = 1-F(t) = e^{-\lambda t}\]

dt <- 5  # minut
t <- seq(0,60,dt)/60 # v urah
lambdas <- c(12,6,3,2) # avtobusov na uro
m <- length(lambdas)
S <- function(l,t) 1-F(l,t)
ts <- sapply(lambdas,S,t=t)
#
plot(t*60,S(12,t),ylab="Verjetnost, da bomo čakali vsaj toliko minut",xlab="Minute čakanja",type="n",bty="n") 
segments(t*60,apply(ts,1,min),t*60,apply(ts,1,max),col=8,lwd=3)
segments(t*60,0,t*60,apply(ts,1,max),col=8,lwd=1,lty=2)
segments(0,hgrid,approx(apply(ts,1,max),t,hgrid)$y*60,hgrid,lwd=1,lty=2)
segments(approx(apply(ts,1,max),t,hgrid)$y*60,hgrid,approx(apply(ts,1,min),t,hgrid)$y*60,hgrid,lwd=2,col=8)
legend("topright",bty="n",lty=1,legend=paste("na" ,lm,"minut"),col=1:m)
for (i in 1:length(lambdas)) lines(t*60,1-F(lambdas[i],t),col=i,type="b",lwd=3)