Funciones de densidad y probabilidades tiempo automóvil

Rubén Pizarro Gurrola

3/26/23

f(x)

\[ f(x) = 0.15e^{-0.15\cdot(x - 0.5)} \]

Objetivo

Generar gráficas de densidad y encontrar la probabilidad de una función de densidad para un intervalo determinado [a, b], calcular el valor esperado, la varianza y desviación estándar de la función de densidad.

Descripción

Intervalo de tiempo en el flujo de tránsito es el lapso transcurrido entre el tiempo en que un automóvil termina de pasar por un punto fijo y el instante en que el siguiente vehículo comienza a pasar por ese punto.

Sea \(x\) el intervalo de tiempo para dos automóviles consecutivos seleccionados al azar en una autopista durante un periodo de tráfico intenso.

La siguiente función de densidad de probabilidad de X es en esencia la sugerida en

Fórmula de densidad

\[ f(x) = 0.15e^{-0.15\cdot(x - 0.5)} \] # ¿Es función de densidad?

Para que \(f(x)\) sea una función de densidad de probabilidad legítima debe satisfacer las dos siguientes condiciones (Devore 2016):

\[ 1. f(x) \ge 0 \text{ para todas las x's, y} \]

\[ 2. \int_{-\infty}^{\infty}f(x)dx=\text{ área bajo toda la curva de f(x)} \]

Condiciones de esta función de densidad

X debe ser mayor a 0.5 para generar una probabilidad; para todo valor menor a 0.5, la probabilidad es cero.

\[ f(x) = 0.15e^{-0.15\cdot(x - 0.5)}\therefore \] \[ f(x) = \begin{cases} {0.15e^{-0.15\cdot(x - 0.5)}} & \text{:if } ( x \ge 0.5)\\ 0 & \text{:en cualquier otro caso} \end{cases} \]

Cargar librerías necesarias

library(ggplot2)

La función programada

f_dens <- function(x) {
  ifelse(x >= 0.5, 0.15 * exp(1)^(-0.15 * (x - 0.5)), 0) }

Probar la función de densidad

f_dens(x = -1)
[1] 0
f_dens(x = 0.01)
[1] 0
f_dens(x = 0.02)
[1] 0
f_dens(x = 0.5)
[1] 0.15
f_dens(x= 1)
[1] 0.1391615
f_dens(x= 1.5)
[1] 0.1291062
f_dens(x= 2)
[1] 0.1197774
f_dens(x= 4)
[1] 0.0887333
f_dens(x= 6)
[1] 0.06573525

Probar con varios valores

x <- seq(-0.5, 30, 0.5)
x
 [1] -0.5  0.0  0.5  1.0  1.5  2.0  2.5  3.0  3.5  4.0  4.5  5.0  5.5  6.0  6.5
[16]  7.0  7.5  8.0  8.5  9.0  9.5 10.0 10.5 11.0 11.5 12.0 12.5 13.0 13.5 14.0
[31] 14.5 15.0 15.5 16.0 16.5 17.0 17.5 18.0 18.5 19.0 19.5 20.0 20.5 21.0 21.5
[46] 22.0 22.5 23.0 23.5 24.0 24.5 25.0 25.5 26.0 26.5 27.0 27.5 28.0 28.5 29.0
[61] 29.5 30.0
y <- f_dens(x)
y
 [1] 0.000000000 0.000000000 0.150000000 0.139161523 0.129106196 0.119777433
 [7] 0.111122733 0.103093392 0.095644223 0.088733305 0.082321745 0.076373463
[13] 0.070854983 0.065735249 0.060985449 0.056578853 0.052490662 0.048697870
[19] 0.045179132 0.041914645 0.038886039 0.036076269 0.033469524 0.031051133
[25] 0.028807486 0.026725958 0.024794833 0.023003245 0.021341111 0.019799076
[31] 0.018368464 0.017041223 0.015809884 0.014667517 0.013607693 0.012624449
[37] 0.011712250 0.010865964 0.010080827 0.009352422 0.008676648 0.008049704
[43] 0.007468060 0.006928444 0.006427819 0.005963367 0.005532475 0.005132718
[49] 0.004761845 0.004417771 0.004098558 0.003802411 0.003527662 0.003272765
[55] 0.003036287 0.002816895 0.002613356 0.002424524 0.002249337 0.002086807
[61] 0.001936022 0.001796132

Construir un df con x’s e y’s

datos <- data.frame(x, y)
datos
      x           y
1  -0.5 0.000000000
2   0.0 0.000000000
3   0.5 0.150000000
4   1.0 0.139161523
5   1.5 0.129106196
6   2.0 0.119777433
7   2.5 0.111122733
8   3.0 0.103093392
9   3.5 0.095644223
10  4.0 0.088733305
11  4.5 0.082321745
12  5.0 0.076373463
13  5.5 0.070854983
14  6.0 0.065735249
15  6.5 0.060985449
16  7.0 0.056578853
17  7.5 0.052490662
18  8.0 0.048697870
19  8.5 0.045179132
20  9.0 0.041914645
21  9.5 0.038886039
22 10.0 0.036076269
23 10.5 0.033469524
24 11.0 0.031051133
25 11.5 0.028807486
26 12.0 0.026725958
27 12.5 0.024794833
28 13.0 0.023003245
29 13.5 0.021341111
30 14.0 0.019799076
31 14.5 0.018368464
32 15.0 0.017041223
33 15.5 0.015809884
34 16.0 0.014667517
35 16.5 0.013607693
36 17.0 0.012624449
37 17.5 0.011712250
38 18.0 0.010865964
39 18.5 0.010080827
40 19.0 0.009352422
41 19.5 0.008676648
42 20.0 0.008049704
43 20.5 0.007468060
44 21.0 0.006928444
45 21.5 0.006427819
46 22.0 0.005963367
47 22.5 0.005532475
48 23.0 0.005132718
49 23.5 0.004761845
50 24.0 0.004417771
51 24.5 0.004098558
52 25.0 0.003802411
53 25.5 0.003527662
54 26.0 0.003272765
55 26.5 0.003036287
56 27.0 0.002816895
57 27.5 0.002613356
58 28.0 0.002424524
59 28.5 0.002249337
60 29.0 0.002086807
61 29.5 0.001936022
62 30.0 0.001796132

Gráfica de puntos

g <- ggplot(data = datos) +
  geom_point(aes(x = x, y = y), color = 'red') 

g

Unir los puntos con linea (Polígono)

g <- g + geom_line(aes(x = x, y = y), color='blue')
g

Área de acuerdo a la f(x)

Valores de cuando el valor de la función está en el rango >= 0.5

min_x <- 0.5
max_x <- 30
datos <- cbind(datos, f = ifelse(datos$x >=min_x , 'f(x)', '0'))
datos$f <- as.factor(datos$f)
datos
      x           y    f
1  -0.5 0.000000000    0
2   0.0 0.000000000    0
3   0.5 0.150000000 f(x)
4   1.0 0.139161523 f(x)
5   1.5 0.129106196 f(x)
6   2.0 0.119777433 f(x)
7   2.5 0.111122733 f(x)
8   3.0 0.103093392 f(x)
9   3.5 0.095644223 f(x)
10  4.0 0.088733305 f(x)
11  4.5 0.082321745 f(x)
12  5.0 0.076373463 f(x)
13  5.5 0.070854983 f(x)
14  6.0 0.065735249 f(x)
15  6.5 0.060985449 f(x)
16  7.0 0.056578853 f(x)
17  7.5 0.052490662 f(x)
18  8.0 0.048697870 f(x)
19  8.5 0.045179132 f(x)
20  9.0 0.041914645 f(x)
21  9.5 0.038886039 f(x)
22 10.0 0.036076269 f(x)
23 10.5 0.033469524 f(x)
24 11.0 0.031051133 f(x)
25 11.5 0.028807486 f(x)
26 12.0 0.026725958 f(x)
27 12.5 0.024794833 f(x)
28 13.0 0.023003245 f(x)
29 13.5 0.021341111 f(x)
30 14.0 0.019799076 f(x)
31 14.5 0.018368464 f(x)
32 15.0 0.017041223 f(x)
33 15.5 0.015809884 f(x)
34 16.0 0.014667517 f(x)
35 16.5 0.013607693 f(x)
36 17.0 0.012624449 f(x)
37 17.5 0.011712250 f(x)
38 18.0 0.010865964 f(x)
39 18.5 0.010080827 f(x)
40 19.0 0.009352422 f(x)
41 19.5 0.008676648 f(x)
42 20.0 0.008049704 f(x)
43 20.5 0.007468060 f(x)
44 21.0 0.006928444 f(x)
45 21.5 0.006427819 f(x)
46 22.0 0.005963367 f(x)
47 22.5 0.005532475 f(x)
48 23.0 0.005132718 f(x)
49 23.5 0.004761845 f(x)
50 24.0 0.004417771 f(x)
51 24.5 0.004098558 f(x)
52 25.0 0.003802411 f(x)
53 25.5 0.003527662 f(x)
54 26.0 0.003272765 f(x)
55 26.5 0.003036287 f(x)
56 27.0 0.002816895 f(x)
57 27.5 0.002613356 f(x)
58 28.0 0.002424524 f(x)
59 28.5 0.002249337 f(x)
60 29.0 0.002086807 f(x)
61 29.5 0.001936022 f(x)
62 30.0 0.001796132 f(x)

Área

g <- ggplot(datos, aes(x = x, y = y)) + 
    geom_area(aes(fill = f), alpha = 0.5) +
    scale_fill_manual(values = c("white", "pink")) +
    ggtitle("F(x) = 1") +
    xlab("x") +
    ylab("f(x)")

Área

Probabilidad [a, b]

Definir un intervalo entre a y b

\[ P(a \le x \le b) \] \[ \text{intervalo entre 0.5 y 5 en x} \]

\[ a = 0.5 \]

\[ b = 5.0 \]

Intervalo

a <- 0.5
b <- 5
datos <- cbind(datos, p = ifelse(datos$x >= a & datos$x <= b & datos$f == 'f(x)', 'P(x)', as.character(datos$f)))
datos$p <- as.factor(datos$p)

datos
      x           y    f    p
1  -0.5 0.000000000    0    0
2   0.0 0.000000000    0    0
3   0.5 0.150000000 f(x) P(x)
4   1.0 0.139161523 f(x) P(x)
5   1.5 0.129106196 f(x) P(x)
6   2.0 0.119777433 f(x) P(x)
7   2.5 0.111122733 f(x) P(x)
8   3.0 0.103093392 f(x) P(x)
9   3.5 0.095644223 f(x) P(x)
10  4.0 0.088733305 f(x) P(x)
11  4.5 0.082321745 f(x) P(x)
12  5.0 0.076373463 f(x) P(x)
13  5.5 0.070854983 f(x) f(x)
14  6.0 0.065735249 f(x) f(x)
15  6.5 0.060985449 f(x) f(x)
16  7.0 0.056578853 f(x) f(x)
17  7.5 0.052490662 f(x) f(x)
18  8.0 0.048697870 f(x) f(x)
19  8.5 0.045179132 f(x) f(x)
20  9.0 0.041914645 f(x) f(x)
21  9.5 0.038886039 f(x) f(x)
22 10.0 0.036076269 f(x) f(x)
23 10.5 0.033469524 f(x) f(x)
24 11.0 0.031051133 f(x) f(x)
25 11.5 0.028807486 f(x) f(x)
26 12.0 0.026725958 f(x) f(x)
27 12.5 0.024794833 f(x) f(x)
28 13.0 0.023003245 f(x) f(x)
29 13.5 0.021341111 f(x) f(x)
30 14.0 0.019799076 f(x) f(x)
31 14.5 0.018368464 f(x) f(x)
32 15.0 0.017041223 f(x) f(x)
33 15.5 0.015809884 f(x) f(x)
34 16.0 0.014667517 f(x) f(x)
35 16.5 0.013607693 f(x) f(x)
36 17.0 0.012624449 f(x) f(x)
37 17.5 0.011712250 f(x) f(x)
38 18.0 0.010865964 f(x) f(x)
39 18.5 0.010080827 f(x) f(x)
40 19.0 0.009352422 f(x) f(x)
41 19.5 0.008676648 f(x) f(x)
42 20.0 0.008049704 f(x) f(x)
43 20.5 0.007468060 f(x) f(x)
44 21.0 0.006928444 f(x) f(x)
45 21.5 0.006427819 f(x) f(x)
46 22.0 0.005963367 f(x) f(x)
47 22.5 0.005532475 f(x) f(x)
48 23.0 0.005132718 f(x) f(x)
49 23.5 0.004761845 f(x) f(x)
50 24.0 0.004417771 f(x) f(x)
51 24.5 0.004098558 f(x) f(x)
52 25.0 0.003802411 f(x) f(x)
53 25.5 0.003527662 f(x) f(x)
54 26.0 0.003272765 f(x) f(x)
55 26.5 0.003036287 f(x) f(x)
56 27.0 0.002816895 f(x) f(x)
57 27.5 0.002613356 f(x) f(x)
58 28.0 0.002424524 f(x) f(x)
59 28.5 0.002249337 f(x) f(x)
60 29.0 0.002086807 f(x) f(x)
61 29.5 0.001936022 f(x) f(x)
62 30.0 0.001796132 f(x) f(x)

Probabilidad [a, b]

g <- ggplot(datos, aes(x = x, y = y, fill = p)) + 
  geom_area(alpha = 0.5, position = "identity") +
  scale_fill_manual(values = c("white", "pink", "blue")) +
  ggtitle("F(X) = 1; P(a <= x <= b)") +
  xlab("x") +
  ylab("f(x)")

Probabilidad [a, b]

Cuestionamientos

  • ¿Cuanto vale el área en color azul si toda el área en color rosa vale 1.0?

  • ¿Cual es la probabilidad de que el valor de x esté entre a y b, es decir entre 0.5 y 5?

\[ P(a \leq x \leq b) = \int_{a}^{b} f(x) dx = \int_{a}^{b} f(x) = 0.15e^{-0.15\cdot(x - 0.5)} dx \]

\[ \int_{0.5}^{5} f(x) = 0.15e^{-0.15\cdot(x - 0.5)} dx \]

integrate()

La función integrate() en R, utiliza un algoritmo numérico para aproximar la integral, y la aproximación puede tener un cierto grado de error.

El grado de error depende del algoritmo numérico utilizado, así como de los límites de integración y la función en sí. Por lo tanto, es posible que el valor obtenido mediante integrate() sea ligeramente diferente al valor calculado de forma analítica.

En general, se espera que el valor obtenido mediante integrate() sea una buena aproximación del valor real de la integral.

Función integrate() en acción

# Se calcula la integral de f(x) en el intervalo 
resultado <- integrate(f = f_dens, a, b)

# Se obtiene la probabilidad P(x) en el intervalo [a, b]
probabilidad <- round(resultado$value * 100, 4)
paste("La probabilidad de que x esté entre ", a , " y ", b, " es de ", probabilidad, "% aproximadamente")
[1] "La probabilidad de que x esté entre  0.5  y  5  es de  49.0844 % aproximadamente"
paste("El error absoluto es de ", resultado$abs.error)
[1] "El error absoluto es de  5.44945843330925e-15"

Valor Esperado

El valor esperado o valor medio de una variable aleatoria continua X con función de densidad de probabilidad f(x) es el valor que se espera que se de en promedio:

\[ \mu_{x} = VE(x) = \int_{-\infty}^{\infty}x\cdot f(x)dx \therefore \\ \mu_{x} = VE(x) = \int_{0.5}^{\infty}x\cdot f(x) = 0.15e^{-0.15\cdot(x - 0.5)}dx \]

(Devore 2016)

Valor Esperado

Pendiente Desarrollo de la integral

Valor Esperado

f_valor_esperado <- function(f_densidad) {
  resultado <- integrate(function(x) x * f_densidad(x), 
                        lower = -Inf, 
                        upper = Inf)
  
  resultado$value
}

VE <- round(f_valor_esperado(f_densidad = f_dens), 4)

paste("El valor esperado de x en esta función es aproximadamente de : ", VE)
[1] "El valor esperado de x en esta función es aproximadamente de :  7.1667"

Varianza

Es una medida de dispersión, se representa con \(\sigma^2\) o \(V(X)\). La varianza de una variable aleatoria continua X con función de densidad de probabilidad \(f(x)\) y valor medio \(\mu\) está dada por:

\[ varianza = \sigma^2=V(x)=\int_{-\infty}^{\infty}(x - \mu)^2\cdot f(x) dx \]

ó

\[ varianza = \sigma^2=V(x)=\int_{-\infty}^{\infty}x^2\cdot f(x)dx - \mu^2 \]

Varianza

Pendiente alguna imagen del desarrollo de la integral

Varianza

f_varianza <- function(f_densidad, VE) {
  resultado <- integrate(f = function(x) (x - VE)^2 * f_densidad(x), lower = -Inf, upper = Inf)
  
  resultado$value
}

varianza <- round(f_varianza(f_densidad = f_dens, VE = VE), 4)
paste("La varianza de x de la función de densidad es aproximadamente de ", varianza)
[1] "La varianza de x de la función de densidad es aproximadamente de  44.4444"

Desviación estándar

Es medida de dispersión representada por \(\sigma\) y es la raíz cuadrada de la varianza.

\[ Desv.Std = \sigma = \sqrt{\sigma^2} \]

desv.std <- round(sqrt(varianza), 4)
paste("La desviación estándar de x de la función de densidad es aproximadamente de ", desv.std)
[1] "La desviación estándar de x de la función de densidad es aproximadamente de  6.6667"

Bibliografía

Devore, Jay L. 2016. Fundamentos de Probabilidad y Estadística. Primera Edición. CENGAGE.