Enlace al vídeo: Click aquí
En un estudio realizado en la universidad de Massachusetts sobre el
uso de las redes sociales en un grupo de jóvenes, se observa que una
persona elegida al azar ha utilizado Instagram o TikTok con una
probabilidad del 85%. Además, se sabe que la probabilidad de que haya
utilizado TikTok sabiendo que utiliza Instagram es del 30%. Por último,
la probabilidad de que no haya utilizado Instagram es del 20%.
Tenemos: \(P(I
\cup T)=0.85\), \(P(T / I)=0.3\)
y \(P(I^c)=0.2\).
\(P(I \cap
T)\), sabiendo que \(P(T / I) = \frac
{P(T \cap I)} {P(I)}\), \(P(I \cap T) =
P(T / I) * P(I)\)
\(P(I) = 1 -
P(I^c) = 1 - 0.2 = 0.8\)
\(P(I
\cap T) = 0.3 * 0.8 = 0.24\)
\(P(T)\),
sabiendo que \(P(I \cup T) = P(I) + P(T) - P(I
\cap T)\)
\(P(T) = P(I \cup T) -
P(I) + P(I \cap T) = 0.85 - 0.8 + 0.24 = 0.29\)
\(P(T \cap
I^c)\), sabiendo que \(P(T) = P(T \cap
I) + P(T \cap I^c)\)
\(P(T \cap
I^c) = P(T) - P(T \cap I) = 0.29 - 0.24 = 0.05\)
\(P(T^c / I) = \frac {P(T^c \cap I)} {P(I)}\), o aplicando la regla del complementario: \(P(T^c / I) = 1 - P(T / I) = 1 - 0.3 = 0.7\)
Sea \(X\) la duración de la batería de un teléfono móvil en condiciones óptimas, la cual sigue una distribución modificada. Se sabe que la duración está entre 20 y 30 horas. La función de densidad de probabilidad \(f(x)\) viene dada por:
\[ f(x) = \begin{cases} \frac{x - 20}{52} & \text{para } 20 < x < 30 \\ 0 & \text{en otro caso} \end{cases} \]
La esperanza matemática (media) de la duración de las baterías se calcula mediante la integración de la función de densidad de probabilidad multiplicada por la variable sobre la cual se integra. Para la función dada \(f(x) = \frac{x - 20}{52}\) en el intervalo \(20 < x < 30\), procedemos de la siguiente manera:
Primero, establecemos la integral de la esperanza matemática:
\[ E[X] = \int_{20}^{30} x f(x) \, dx \]
-Para calcular esta integral directamente en R, podemos usar el siguiente comando:
# Guardamos el valor de la media en una variable para más adelante
mean_duration <- integrate(function(x) x * ((x - 20) / 52), lower = 20, upper = 30)$value
mean_duration
## [1] 25.64103
Si queremos seguir con el desarrollo, sustituimos \(f(x)\) por su función y multiplicamos por x:
\[ E[X] = \int_{20}^{30} \frac{x(x - 20)}{52} \, dx \]
\[ E[X] = \int_{20}^{30} \frac{x^2 - 20x}{52} \, dx \]
La integral se nos queda de esta forma con sus respectivas cotas.
\[ E[X] = \left[ \frac{x^3}{156} - \frac{10x^2}{52} \right]_{20}^{30} = \left( \frac{30^3}{156} - \frac{10*30^2}{52} \right) - \left( \frac{20^3}{156} - \frac{10*20^2}{52} \right) = 0 - (-25.64103) = 25.64103\]
La varianza mide cuánto se dispersan los valores alrededor de la media. Para una variable aleatoria continua con función de densidad \(f(x)\), la varianza se calcula como:
\[ \text{Var}(X) = E\left[(X - E[X])^2\right] = \int_{-\infty}^{\infty} (x - \mu)^2 f(x) \, dx \]
Donde \(\mu\) es la esperanza matemática que calculamos previamente.
En nuestro caso con \(f(x) = \frac{x - 20}{52}\), la varianza se calcula integrando \((x - \mu)^2\) multiplicado por \(f(x)\) en el intervalo \(20 < x < 30\):
\[ \text{Var}(X) = \int_{20}^{30} (x - \mu)^2 \frac{x - 20}{52} \, dx = \int_{20}^{30} x^2 \frac{x - 20}{52} \, dx - \mu^2 \]
Para calcular esta integral en R, primero necesitamos el valor de la media \(\mu\) que calculamos en el primer apartado.
# Usamos la media que calculamos previamente
mu <- mean_duration
# Definimos la función para la varianza
var_func <- function(x) { (x - mu)^2 * ((x - 20) / 52) }
# Realizamos la integral para la varianza
varianza <- integrate(var_func, lower = 20, upper = 30)$value
varianza
## [1] 6.353361
Para un valor x en el intervalo [20, 30], la función de distribución acumulada se obtiene integrando la función de densidad de probabilidad desde el punto más bajo del intervalo hasta x:
\[ F(x) = \int_{20}^{x} \frac{t - 20}{52} \, dt \] El proceso para realizar la integración es el siguiente:
· Encontrar la función antiderivada de f(t): \[ F(t) = \int \frac{t - 20}{52} \, dt \] · Aplicar el Teorema Fundamental del Cálculo para evaluar la integral definida: \[ F(x) = \left[ \frac{t^2}{104} - \frac{20t}{52} \right]_{20}^{x} \] · Sustituir el límite superior x y el límite inferior 20 en la antiderivada y restar: \[ F(x) = \left( \frac{x^2}{104} - \frac{20x}{52} \right) - \left( \frac{20^2}{104} - \frac{20 \cdot 20}{52} \right) = \left( \frac{x^2}{104} - \frac{20x}{52} \right) - \left( -\frac {50} {13} \right) \Rightarrow \] \[ \Rightarrow F(x) = \begin{cases} 0 & \text{si x $\leq$ 20} \\ \frac{x^2-40x+400}{104} & \text{para } 20 < x < 30 \\ 1 & \text{si x $\geq$ 30} \end{cases} \]
La función de distribución acumulativa \(F(x)\) se obtiene integrando la función de densidad de probabilidad \(f(x)\) desde el límite inferior de la distribución hasta \(x\). Para encontrar el valor correspondiente al 75% de la distribución, buscamos \(x\) tal que \(F(x) = 0.75\).
Primero, calculamos la función de distribución (la calculamos en el apartado anterior): \[ F(x) = \int_{20}^{x} f(t) \, dt \]
Luego, resolvemos para \(x\): \[ F(x) = 0.75 \Rightarrow \frac {x^2-40x+400} {104} = 0.75 \]
Lo calculamos en R:
# Definimos la función de densidad de probabilidad
f_x <- function(x) { ifelse(x > 20 & x < 30, (x - 20)/52, 0) }
# Calculamos la función de distribución acumulativa para un rango de valores
F_x <- Vectorize(function(t) {
integrate(f_x, 20, t)$value
})
# Buscamos el valor que corresponde al 75% de la distribución
percentil_75 <- uniroot(function(x) F_x(x) - 0.75, c(20, 30))$root
percentil_75
## [1] 28.83176
En la reconocida marca de automóviles de lujo McLaren, los fallos mecánicos producidos en sus coches siguen una distribución de Poisson con un promedio de 1.28 fallos por año. Planteemos un escenario en el que se desee determinar la probabilidad de que durante un año determinado, un vehículo McLaren experimente un cierto número de fallos mecánicos, lo que nos permitirá comprender mejor la variabilidad en la calidad de sus productos y su impacto en la satisfacción del cliente.
Por seguir una distribución de Poisson sabemos que: Media = Varianza = \(\lambda\) = 1.28, X ~ PP(1.28)
Utilizando la distribución de Poisson y la fórmula proporcionada:
\[ p(x) = \frac{e^{-\lambda} \lambda^x}{x!} \]
donde \(x\) es el número de fallos, y \(\lambda\) es la tasa promedio de fallos por intervalo, calcularemos la probabilidad de que un vehículo haya sufrido exactamente dos fallos en tres años. La tasa \(\lambda\) se ajusta a los tres años multiplicándola por 3.
La probabilidad buscada es entonces:
\[ p(2) = \frac{e^{-\lambda_{trienio}} \lambda_{trienio}^2}{2!} \]
Y para realizar el cálculo en R, usarías los siguientes comandos:
lambda_anual <- 1.28
lambda_trienio <- lambda_anual * 3
x <- 2
probabilidad_dos_fallos <- dpois(x, lambda_trienio)
probabilidad_dos_fallos
## [1] 0.158468
Para calcular la probabilidad de que un vehículo de McLaren sufra más de tres fallos mecánicos en un año, aplicaremos la distribución de Poisson. Dado que la función de masa de probabilidad de Poisson para un número de fallos \(x\) es \(P(X=x) = \frac{e^{-\lambda} \lambda^x}{x!}\), la probabilidad de tener más de tres fallos es el complemento de la suma de las probabilidades de tener 0, 1, 2, o 3 fallos.
\[ P(X > 3) = 1 - (P(X=0) + P(X=1) + P(X=2) + P(X=3)) \]
\[ P(X > 3) = 1 - \sum_{x=0}^{3} \frac{e^{-\lambda} \lambda^x}{x!} \]
Y para realizar el cálculo en R, usaríamos los siguientes comandos:
lambda_anual <- 1.28
k <- 3
probabilidad_mas_tres_fallos <- 1 - ppois(k, lambda_anual)
probabilidad_mas_tres_fallos
## [1] 0.04112572
El percentil 80 representa el valor por debajo del cual caen el 80% de las observaciones.
Para evaluar el percentil 80 del número de
fallos por año con una distribución de Poisson, buscamos el valor \(x\) tal que un 80% de las observaciones
sean iguales o menores que \(x\).
Utilizamos la función qpois para calcular el cuantil
deseado.
\[ P(X \leq x) = F(x) \geq 0.8 \]
El valor \(x\) que cumple con esta condición es el percentil 80 y se calcula como sigue:
lambda_anual <- 1.28
octavo_percentil <- qpois(0.8, lambda_anual)
octavo_percentil
## [1] 2
Para calcular la probabilidad condicional de que un vehículo haya sufrido menos de 4 fallos en un año dado que ya ha sufrido al menos 2 fallos, necesitamos considerar la suma de las probabilidades individuales de tener exactamente 2 y 3 fallos y la probabilidad de tener al menos 2 fallos.
\[ P(2 \leq X < 4) = P(X=2) + P(X=3) \]
\[ P(X \geq 2) = 1 - P(X < 2) = 1 - (P(X=0) + P(X=1)) \]
La probabilidad condicional se calcula entonces como:
\[ P(X < 4|X \geq 2) = \frac{P(2 \leq X < 4)}{P(X \geq 2)} \]
En R, podemos calcular esto con los siguientes comandos:
lambda_anual <- 1.28
probabilidad_X_menos_4 <- ppois(3, lambda_anual)
probabilidad_X_al_menos_2 <- 1 - ppois(1, lambda_anual)
probabilidad_condicional <- (probabilidad_X_menos_4 - probabilidad_X_al_menos_2) / (1 - probabilidad_X_al_menos_2)
probabilidad_condicional
## [1] 0.9351253
Sabemos que el sueldo por hora de un controlador aéreo se puede modelar con una variable aleatoria con función de densidad (k es una cte.): \[ f(x) = \begin{cases} kx^2 & \text{para } 15 < x < 20 \\ 0 & \text{en otro caso} \end{cases} \]
Para ello calcularemos la integral de \(f(x)\) entre 15 y 20, y la igualaremos a 1: \[ \int_{15}^{20} kx^2 \, dx = 1 \rightarrow \left[ \frac{kx^3}{3} \right]_{15}^{20} = 1 \rightarrow \left( \frac{k · 20^3}{3} \right) - \left( \frac{k · 15^3}{3} \right) = 1 \rightarrow k · \frac{4625}{3} = 1 \rightarrow k = 0.000648\]
Para calcular esta probabilidad calculamos la integral entre 15 y 18 de \(f(x)\), teniendo ya en cuenta el valor de k previamente calculado: \[ \int_{15}^{18} 0.000648x^2 \, dx \] Para calcular esta integral en R utilizamos los siguientes comandos:
f <- function(x)(0.000648*x^2)
prob_sueldo_18 <- integrate(f, lower=15, upper=18)$value
prob_sueldo_18
## [1] 0.530712
Para calcular estaprobabilidad debemos calcular lo siguiente: \[ \int_{25}^{+\infty} 0.000648x^2 \, dx \] Sabemos que \(f(x)\) vale \(0.000648x^2\) para \(x\) entre 15 y 20, y 0 en cualquier otro caso, es decir: \[ \int_{-\infty}^{+\infty} 0.000648x^2 \, dx = \int_{-\infty}^{15} 0.000648x^2 \, dx + \int_{15}^{20} 0.000648x^2 \, dx + \int_{20}^{+\infty} 0.000648x^2 \, dx = 0 + \int_{15}^{20} 0.000648x^2 \, dx + 0 = 1 \] Por lo tanto, la probabilidad de que el sueldo sea mayor de 25€ la hora es 0.
Tomamos X = número de sueldos menores de
18€ la hora, X ~ Bi(15, 0.530712).
Podemos calcular P(X = 4) de la
siguiente forma con R:
prob_4_sueldo_18 <- pbinom(4, 15, prob_sueldo_18)
prob_4_sueldo_18
## [1] 0.03588238
La empresa aeroespacial SpaceX quiere saber si el tiempo de vida estimado de sus satélites Starlink es de 36 meses, tal y como han sido certificados. Para saber si la certificación en la Tierra es acorde a las duras condiciones del espacio, encarga a una empresa independiente un análisis. De los 5.442 satélites en órbita, la empresa hace un estudio de 500 de ellos, mediante tecnologías de radar y análisis Doppler, para conocer su tiempo de vida (desde que son lanzados hasta que reentran a la atmósfera). En los resultados del análisis se concluye con que la media de vida útil es de 37,5 meses, con una desviación de 1,7 meses.
Para empezar, analizaremos los datos
del enunciado, definiendo hipótesis y datos relevantes para el test.
Hipótesis nula (\(H_0\)): El tiempo de vida de los
Starlink es de 36 meses \((\mu=36)\), y
por lo tanto, la certificación es válida.
Hipótesis alternativa
(\(H_1\)): El tiempo de vida de los
Starlink NO es de 36 meses \((\mu\neq36)\), y por lo tanto, la
certificación podría NO ser válida.
Tamaño de la muestra (\(n\)): 500
Media de la muestra (\(\bar{x}\)): 37,5
Desviación estándar
(\(s\)): 1,7
Estableceremos
\(\alpha\) en 0.05.
Ya que se nos da la desviación estándar de la muestra (\(s\)) y no la desviación estándar poblacional (\(\sigma\)), deberemos calcular \(t_s\), mediante la fórmula \[ t_s =\frac{\bar{x}-\mu_0}{\sigma/\sqrt{n}} \]
Lo haríamos así en R:
n <- 500
x_barra <- 37.5
s <- 1.7
mu <- 36
ts <- (x_barra - mu) / (s / sqrt(n))
ts
## [1] 19.73001
Con el valor calculado, calcularemos el p-valor, también en R:
2*(1-pt(ts,n-1))
## [1] 0
Siendo \(ts\) el valor calculado con anterioridad y
\(n-1\) el grado de libertad (\(gl = n-1 = 499\)).
Podemos
observar algo extraño: que el p-valor es 0. Esto ocurre, realmente,
porque el resultado obtenido es tan cercano a 0 que R lo redondea.
Por ende, observando un p-valor tan bajo, más bajo que \(\alpha\), podemos decir que la hipótesis
nula puede ser rechazada con un nivel de confianza muy alto. Esto indica
que la vida útil promedio real de los satélites en el espacio es
diferente de la vida útil estimada para la que fueron certificados en la
Tierra.
Como la media muestral es mayor que la media
poblacional bajo la hipótesis nula, podemos decir que los satélites
tienen, en promedio, una vida útil más larga de lo esperado.
Dato curioso: Aunque los datos de este ejercicio son ficticios,
esto tiende a suceder en la vida real. La gran mayoría de sondas y
satélites tienden a superar con creces su tiempo de vida estimado. La
intención del enunciado era “aplicarlo a algo real”. Por ejemplo, se
estimaba que el helicóptero marciano Ingenuity volaría 5 veces en Marte,
y ha terminado volando 62 veces. El rover Opportunity tenía una
estimación de vida de 90 soles (días marcianos, equivalente a 92,5 días
terrestres) y terminó funcionando durante más de 14 años.
Para empezar, definiremos nuestras
hipótesis. El resto de datos ya han sido identificados en el apartado
anterior.
Hipótesis nula (\(H_0\)): La desviación estándar de la
vida útil de los satélites es de 2 meses \((\sigma=2)\).
Hipótesis alternativa
(\(H_1\)): La desviación estándar
de la vida útil de los satélites no es de 2 meses \((\sigma\neq2)\).
Estableceremos
\(\alpha\) en 0.05, al igual que en el
ejercicio anterior.
Para probar la hipótesis, utilizaremos el test \(\chi^2\) para la varianza, dado por la fórmula: \[ \chi^2 = \frac{(n-1)s^2}{\sigma_0^2} \] Así, la calcularemos en R:
n <- 500
s <- 1.7
sigma_0 <- 2 #Desviación de la hipótesis nula
chi_2 <- ((n - 1) * s^2)/(sigma_0^2)
chi_2
## [1] 360.5275
Para calcular el p-valor, al no ser simétrica, debemos ver si el estadístico test está por encima o por debajo de la mediana de la \(\chi^2\), que es \(s-(2/3)\), y siendo \(s=n-1\),
mediana=n-1-(2/3)
mediana
## [1] 498.3333
Como el estadístico test es menor que la mediana,
pvalor=2*(pchisq(chi_2, n-1))
pvalor
## [1] 1.24198e-06
Obtenemos un p-valor mucho menor que \(\alpha\), llegando a la conclusión de que existe evidencia suficiente para rechazar la hipótesis nula, podiendo así decir que la variabilidad en la vida útil de los satélites difiere de los 2 meses esperados.
Una vez, definiremos nuestras hipótesis:
Hipótesis nula (\(H_0\)): La proporción de fallos es
cierta (o se aproxima a la realidad) \((\mu=0.2)\).
Hipótesis alternativa
(\(H_1\)): La proporción de fallos
no es cierta (no se aproxima a la realidad) \((\mu\neq0.2)\).
50 satélites
funcionan correctamente.
10 satélites no sobreviven al
lanzamiento.
Estableceremos \(\alpha\) en 0.05.
Como podemos
observar, estamos ante un ejercicio de proporción, y por ello podemos
recurrir a un test de proporción en R:
prop.test(10,60,p=0.2)
##
## 1-sample proportions test with continuity correction
##
## data: 10 out of 60, null probability 0.2
## X-squared = 0.23438, df = 1, p-value = 0.6283
## alternative hypothesis: true p is not equal to 0.2
## 95 percent confidence interval:
## 0.08701498 0.28979105
## sample estimates:
## p
## 0.1666667
prop.test(10,60,p=0.2)$p.value #manera alternativa de conocer el p-valor
## [1] 0.6282986
Con el p-valor obtenido, podemos decir que no existe evidencia estadística en contra de \(H_0\), y que los datos apoyan la afirmación de que la proporción de satélites defectuosos sobre lanzados es de 0.2.
Como siempre, definiremos nuestras
hipótesis, así como identificaremos otros valores relevantes:
Hipótesis nula (\(H_0\)): La
varianza en la vida útil de los Starlink V1 es igual o se acerca a la de
los V2 \((s_{v1}=s_{v2})\).
Hipótesis alternativa (\(H_1\)):
La varianza en la vida útil de los Starlink V1 es distinta a la de los
V2 \((s_{v1}\neq s_{v2})\).
Estableceremos \(\alpha\) en 0.05.
Claramente, estamos ante un ejercicio de varianza, y podemos usar la
función var.test de R para conocer los resultados buscados:
starlink_v1=c(36.11, 35.53, 35.20, 39.09, 36.17, 38.63, 34.03, 35.50, 33.19, 38.88)
starlink_v2=c(34.03, 38.94, 34.01, 35.81, 30.24, 35.50, 36.02, 32.16, 35.42, 35.30)
var.test(starlink_v1,starlink_v2)
##
## F test to compare two variances
##
## data: starlink_v1 and starlink_v2
## F = 0.74709, num df = 9, denom df = 9, p-value = 0.6711
## alternative hypothesis: true ratio of variances is not equal to 1
## 95 percent confidence interval:
## 0.1855663 3.0077750
## sample estimates:
## ratio of variances
## 0.7470888
var.test(starlink_v1,starlink_v2)$p.value #manera alternativa de conocer el p-valor
## [1] 0.6710763
Con el p-valor obtenido, podemos decir que no existe evidencia estadística en contra de \(H_0\), y que los datos apoyan la afirmación de que los valores de la varianza son cercanos para las dos versiones de los satélites.
En el mundo post-apocalíptico de “The Walking Dead”, hemos recopilado datos de 30 enfrentamientos (es decir, n1 = 30 y n2 = 30) liderados por Negan y otros 30 por Rick Grimes. Para Negan, la media de eliminaciones por enfrentamiento es de \(\bar{x_1}\) = 22 con una desviación típica de \({s_1}\) = 5, mientras que para Rick, la media es de \(\bar{x_2}\) = 19 con una desviacion típica de \({s_2}\) = 6. Se asume que la distribución de las eliminaciones por enfrentamiento sigue una distribucion normal.
- \(H_0\): No existe una diferencia significativa en el promedio de adversarios eliminados por Negan y Rick Grimes (\(\mu_{\text{Negan}} = \mu_{\text{Rick}}\)).
- \(H_1\): Existe una diferencia significativa en el promedio de adversarios eliminados por Negan y Rick Grimes (\(\mu_{\text{Negan}} \neq \mu_{\text{Rick}}\)).
El nivel de significancia \(\alpha\) establecido es de 0.05.
Lo primero de todo es que podemos comprobar que como los valores de las variables no estan relacionadas con el mismo sujeto, sabemos que las poblaciones son independientes.
Se pide
Para saber si existe una diferencia significativa en el promedio de adversarios eliminados por Negan y Rick Grimes, realizamos un test t para muestras independientes con un nivel de significancia (alpha) de 0.05.
# Datos para Negan y Rick
n = 30 # Tamaño de cada grupo
media_negan = 22
sd_negan = 5
media_rick = 19
sd_rick = 6
# Realizamos un test t de Welch o estadistico test (asumiendo varianzas desiguales)
test = t.test(x = rnorm(n, media_negan, sd_negan),
y = rnorm(n, media_rick, sd_rick),
alternative = "two.sided")
ancho_95 = diff(test$conf.int)
test
##
## Welch Two Sample t-test
##
## data: rnorm(n, media_negan, sd_negan) and rnorm(n, media_rick, sd_rick)
## t = 2.7135, df = 57.086, p-value = 0.008787
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## 1.061747 7.041597
## sample estimates:
## mean of x mean of y
## 22.81015 18.75847
ancho_95
## [1] 5.97985
En el propio test anterior ya hemos sacado el intervalo aunque si queremos volver a sacarlo explicitamente podemos usar:
test$conf.int
## [1] 1.061747 7.041597
## attr(,"conf.level")
## [1] 0.95
Como podemos ver, el 0 no esta contenido en el intervalo de confianza por lo que podemos asegurar que no han eliminado el mismo numero de adversarios.
Gracias al ultimo apartado de la practica 4, en el que se explica como realizar la potencia de un test, podemos hallar a partir de dicha potencia la probabilidad de cometer un error de tipo II:
# Calcular la potencia del test para la muestra dada y la diferencia observada
power_result = power.t.test(n = 30,
delta = (media_negan - media_rick),
sd = sqrt((sd_negan^2 + sd_rick^2) / 2),
sig.level = 0.05,
type = "two.sample",
alternative = "two.sided")
# Probabilidad de error Tipo II
error_tipo_II = 1 - power_result$power
power_result
##
## Two-sample t test power calculation
##
## n = 30
## delta = 3
## sd = 5.522681
## sig.level = 0.05
## power = 0.5433945
## alternative = two.sided
##
## NOTE: n is number in *each* group
error_tipo_II
## [1] 0.4566055
# Calcular intervalo de confianza del 99%
test_99 = t.test(x = rnorm(n, media_negan, sd_negan),
y = rnorm(n, media_rick, sd_rick),
alternative = "two.sided",
conf.level = 0.99)
# Ancho del intervalo de confianza al 99%
ancho_99 = diff(test_99$conf.int)
test_99$conf.int
## [1] -2.361558 5.242109
## attr(,"conf.level")
## [1] 0.99
ancho_99
## [1] 7.603667
ancho_95
## [1] 5.97985
Como podemos comprobar, si aumentamos el nivel de confianza al 99%, estamos siendo más exigentes con nuestra estimación. De esta forma queremos estar aún más seguros de que el verdadero parámetro esté dentro de nuestro intervalo. Esto significa que el intervalo de confianza del 99% siempre será más ancho que el del 95% para la misma muestra y estimación ya que para estar más seguros necesitamos cubrir más de la distribución de probabilidad.
Una empresa de tecnología quiere evaluar si el tiempo medio de resolución de problemas de software por su equipo de soporte técnico ha mejorado gracias a una nueva herramienta de diagnóstico. Antes de la implementación de la herramienta, los tiempos de resolución seguían una distribución normal con una media conocida de 30 minutos. La empresa recoge una muestra de tiempos de resolución de problemas tras la implementación de la herramienta para analizar si hay una mejora significativa.
Datos:
Tiempos de resolución post-implementación (en minutos): 25, 22, 28, 26, 20, 18, 24, 21, 23, 19.
Usaremos el nivel de significancia 0.05.
- \(H_0\): La media de los tiempos de resolución de problemas tras la implementación es igual a 30 minutos (\(\mu = 30\)). Esto indica que no hay mejora.
- \(H_1\): La media de los tiempos de resolución de problemas tras la implementación es menor que 30 minutos (\(\mu < 30\)). Esto indica una mejora debido a la nueva herramienta.
- \(\alpha = 0.05\)
- Hipótesis Nula ( \(H_0\) ): Los datos siguen una distribución normal. \[ H_0: \text{Los datos están normalmente distribuidos} \]
- Hipótesis Alternativa ( \(H_1\) ): Los datos no siguen una distribución normal. \[ H_1: \text{Los datos no están normalmente distribuidos} \]
Este test nos ayuda a determinar si una muestra proviene de una población normalmente distribuida. En R, podemos realizar este test fácilmente usando la función shapiro.test.
tiempos_tras_implementación = c(25, 22, 28, 26, 20, 18, 24, 21, 23, 19)
shapiro.test(tiempos_tras_implementación)
##
## Shapiro-Wilk normality test
##
## data: tiempos_tras_implementación
## W = 0.98088, p-value = 0.9697
El p-valor es mucho mayor que 0.05, por lo que no hay evidencia estadística suficiente para rechazar la hipótesis nula y podemos asumir que los datos están normalmente distribuidos.
Vamos a realizar un t-test para determinar si la media de los tiempos de resolución es significativamente menor que 30 minutos, lo cual indicaría una mejora debido a la implementación de la nueva herramienta.
tiempos_tras_implementación = c(25, 22, 28, 26, 20, 18, 24, 21, 23, 19)
t.test(tiempos_tras_implementación, mu = 30, alternative = "less", conf.level = 0.95)
##
## One Sample t-test
##
## data: tiempos_tras_implementación
## t = -7.3033, df = 9, p-value = 2.274e-05
## alternative hypothesis: true mean is less than 30
## 95 percent confidence interval:
## -Inf 24.45739
## sample estimates:
## mean of x
## 22.6
De esto podemos concluir lo siguiente:
El p-valor es menor que el nivel de significancia (0.05), por lo que existe evidencia estadistica para rechazar la hipótesis nula y concluir que la media de los tiempos de resolución es significativamente menor que 30 minutos, de forma que la herramienta ha mejorado los tiempos de resolución de problemas.
Esta prueba es útil para evaluar la hipótesis sobre la mediana de una distribución sin asumir que los datos provienen de una distribución normal. Vamos a verificar si la mediana de los tiempos de resolución es significativamente menor que 30 minutos.
- Hipótesis Nula ( \(H_0\) ): La mediana de los tiempos de resolución de problemas es igual a 30 minutos. \[ H_0: \text{Mediana} = 30 \]
- Hipótesis Alternativa ( \(H_1\) ): La mediana de los tiempos de resolución de problemas es menor que 30 minutos. \[ H_1: \text{Mediana} < 30 \]
Hay que cargar la libreria del BSDA
library(BSDA)
## Warning: package 'BSDA' was built under R version 4.3.3
## Loading required package: lattice
##
## Attaching package: 'BSDA'
## The following object is masked from 'package:datasets':
##
## Orange
SIGN.test(tiempos_tras_implementación, md = 30, alternative = "less")
##
## One-sample Sign-Test
##
## data: tiempos_tras_implementación
## s = 0, p-value = 0.0009766
## alternative hypothesis: true median is less than 30
## 95 percent confidence interval:
## -Inf 25.10667
## sample estimates:
## median of x
## 22.5
##
## Achieved and Interpolated Confidence Intervals:
##
## Conf.Level L.E.pt U.E.pt
## Lower Achieved CI 0.9453 -Inf 25.0000
## Interpolated CI 0.9500 -Inf 25.1067
## Upper Achieved CI 0.9893 -Inf 26.0000
El resultado de la prueba de los signos proporciona un p-valor de 0.000976, lo que indica una fuerte evidencia estadística contra la hipótesis nula de que la mediana es igual a 30 minutos. Esto sugiere que la mediana de los tiempos de resolución de problemas es significativamente menor que 30 minutos.
El intervalo de confianza también respalda esta conclusión, con un intervalo de confianza del 95% que se extiende de -Inf a aproximadamente 25.10667, lo cual no incluye el valor nulo de 30 minutos, afirmando así que la herramienta implementada ha tenido un impacto positivo en la reducción de los tiempos de resolución.
- Prueba Paramétrica (t-test): Hubo una diferencia estadísticamente significativa, indicando que los tiempos de resolución promedio son inferiores a 30 minutos. Esto sugiere una mejora debido a la implementación de la herramienta.
- Prueba No Paramétrica (Prueba de los Signos): También ha indicado una mejora significativa, mostrando que la mediana de los tiempos de resolución es menor a 30 minutos.
Ambas pruebas confirman una mejora en los tiempos de resolución, lo que nos da confianza acerca del uso de la herramienta. Elegimos entre pruebas paramétricas y no paramétricas principalmente por lo siguiente:
- Normalidad de los Datos: El test de Shapiro-Wilk ha confirmado que los datos están normalmente distribuidos, pudiendo así utilizar el t-test.
- Potencia de las Pruebas: Sabiendo que siguen una distribución normal, el t-test es más potente y efectivo en detectar diferencias verdaderas, pues es más sensible bajo condiciones normales.
- Tamaño Muestral: Aunque el tamaño muestral es pequeño, la normalidad confirmada permite usar eficazmente pruebas paramétricas.
Dada la normalidad de los datos y los resultados positivos tanto del t-test como de la prueba de los signos, la metodología paramétrica es la más adecuada para este análisis. El t-test también ha demostrado evidencia de que existe mejora, lo que sugiere que la herramienta de diagnóstico ha sido efectiva en reducir los tiempos de resolución.
Teniendo en cuenta los siguientes datos:
| Origen -> Dst. | |
| Versión de iOS | Tiempo de actualización |
|----------------|----|----|----|----|----|----|----|----|----|----|
| iOS 14 -> 15 | 15 | 14 | 15 | 16 | 13 | 17 | 16 | 14 | 15 | 15 |
| iOS 15 -> 16 | 13 | 16 | 14 | 15 | 13 | 15 | 18 | 12 | 14 | 15 |
| iOS 16 -> 17 | 14 | 14 | 15 | 17 | 10 | 13 | 14 | 16 | 15 | 14 |
Para empezar, definiremos nuestras
hipótesis.
Hipótesis nula (\(H_0\)): El tiempo de actualización es
el mismo para distintas versiones de iOS.
Hipótesis alternativa
(\(H_1\)): El tiempo de
actualización no es el mismo para distintas versiones de iOS.
Estableceremos \(\alpha\) en 0.05.
Para poder trabajar con este conjunto de datos en R, debemos de guardar dichos valores en un vector, así como crear un factor para que R sea capaz de identificar a que actualización de iOS se refiere cada tiempo.
iOS15=c(15, 14, 15, 16, 13, 17, 16, 14, 15, 15)
iOS16=c(13, 16, 14, 15, 13, 15, 18, 12, 14, 15)
iOS17=c(14, 14, 15, 17, 10, 13, 14, 16, 15, 14)
datosiOS=c(iOS15, iOS16, iOS17)
factor=c(rep("iOS15", 10), rep("iOS16", 10), rep("iOS17",10))
Como hemos mencionado, el factor ayuda a R a conocer a qué actualización de iOS se refiere cada tiempo: los 10 primeros son de la actualización a iOS 15, los 10 siguientes de la actualización a iOS 16, y los 10 últimos de la actualización a iOS 17:
factor_valores = rbind(factor, datosiOS)
print(factor_valores)
## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
## factor "iOS15" "iOS15" "iOS15" "iOS15" "iOS15" "iOS15" "iOS15" "iOS15"
## datosiOS "15" "14" "15" "16" "13" "17" "16" "14"
## [,9] [,10] [,11] [,12] [,13] [,14] [,15] [,16]
## factor "iOS15" "iOS15" "iOS16" "iOS16" "iOS16" "iOS16" "iOS16" "iOS16"
## datosiOS "15" "15" "13" "16" "14" "15" "13" "15"
## [,17] [,18] [,19] [,20] [,21] [,22] [,23] [,24]
## factor "iOS16" "iOS16" "iOS16" "iOS16" "iOS17" "iOS17" "iOS17" "iOS17"
## datosiOS "18" "12" "14" "15" "14" "14" "15" "17"
## [,25] [,26] [,27] [,28] [,29] [,30]
## factor "iOS17" "iOS17" "iOS17" "iOS17" "iOS17" "iOS17"
## datosiOS "10" "13" "14" "16" "15" "14"
Ahora, generaremos el diagrama de cajas con la función boxplot:
boxplot(datosiOS~factor, col=c("orange", "blue", "pink"), xlab="Versión de iOS", ylab="Tiempo de actualización (minutos)")
Del diagrama de cajas, podemos obtener
varias conclusiones relativas a la distribución de los datos. Podemos
ver que la mediana para iOS 15 se encuentra cerca del 15, para iOS 16,
aproximadamente en el 14.5, y para iOS 17, en el 14.
La
variabilidad de los datos es similar para iOS 15 y 17, pues podemos ver
que tenemos valores desde el 13 hasta el 17. Para iOS 16, este rango de
valores es ligeramente más grande, lo que puede suponer un problema para
la condición de homocedasticidad necesaria para realizar un Análisis de
Varianza (ANOVA - Analysis of Variance).
Las hipótesis a verificar son:
1.
Distribuciones normales: Las poblaciones de donde proceden las
muestras son normales.
2. Homocedasticidad: La desviación
típica más grande de las muestras no es mayor que el doble de la más
pequeña. Comprobable mediante diagrama de cajas y test de bartlett.test,
también se puede utilizar el test de Levene.
La primera
hipótesis es cierta ya que nos lo indica el enunciado, y por tanto no
necesitaremos comprobarla.
La segunda hipótesis sí que
necesitaremos probarla pues las conclusiones obtenidas de los diagramas
de cajas pueden llevar a ambiguedad. Para ello, reucrriremos al test de
Bartlett (bartlett.test):
bartlett.test(datosiOS~factor)
##
## Bartlett test of homogeneity of variances
##
## data: datosiOS by factor
## Bartlett's K-squared = 2.0474, df = 2, p-value = 0.3593
El test de Bartlett nos da un p-valor de 0.35, por lo que no rechazamos la hipótesis nula: verificamos la condición de Homocedasticidad.
Para realizar el test ANOVA, debemos de recurrir a la función aov de R:
summary(aov(datosiOS~factor))
## Df Sum Sq Mean Sq F value Pr(>F)
## factor 2 3.27 1.633 0.629 0.541
## Residuals 27 70.10 2.596
Tras obtener un P-valor de 0.541, y es mayor que la significancia (0.05), no rechazamos la hipótesis nula. Podemos decir que el tiempo de actualización es el mismo para distintas versiones de iOS, y que los ingenieros que piensan que la varianza en el tiempo de actualización se debe al espacio de almacenamiento libre restante en los dispositivos de los usuarios están en lo cierto.
Calcular el poder del estudio es
relativamente fácil con los datos que hemos obtenido del ANOVA.
Recurriremos a la función power.anova.test de R, con los parámetros:
groups: número de grupos
n: número de muestras
between.var:
varianza entre grupos - 1.633, obtenido del test ANOVA
within.var:
varianza dentro de grupos - 2.596, obtenido del test ANOVA
sig.level: nivel de significancia
power.anova.test(
groups = 3,
n = 30,
between.var = 1.633,
within.var = 2.596,
sig.level = 0.05
)
##
## Balanced one-way analysis of variance power calculation
##
## groups = 3
## n = 30
## between.var = 1.633
## within.var = 2.596
## sig.level = 0.05
## power = 0.9998989
##
## NOTE: n is number in each group
Con un valor de poder 0.9998989, o aproximadamente 1, podemos afirmar que el estudio tiene una probabilidad muy alta de detectar una diferencia significativa entre las versiones de iOS si es que existiera (que como hemos comprobado, no es así).
La estrategia y por ende la estadística juegan un papel clave en la más alta categoría del automovilismo, la Fórmula 1. En esta competición cientos de los ingenieros más reputados de todo el planeta tratan continuamente de anticiparse a lo que pueda acontecer en pista para así obtener una ventaja valiosa sobre sus rivales.
Por ello, el equipo de Fórmula 1 Aston Martin Aramco nos ha contratado como estrategas para esta temporada ya que el anterior fue incapaz de parar a Alonso a poner intermedios mientras llovía a mares.
Se nos proporcionan los tiempos por vuelta (en segundos) de Lance Stroll en el gran premio de China en una muestra de las primeras 10 vueltas de carrera, por lo que nuestro objetivo será hacer uso del modelo de regresión lineal e intentar predecir como evolucionará el desgaste en las próximas vueltas.
| Vuelta | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10
| Tiempo | 102.326 | 102.305 | 102.556 | 102.984 | 103.277 | 103.261 | 103.068 | 103.347 | 103.445 | 103.658
Para empezar, la variable independiente (x) será el número de vuelta, y la dependiente (y) será el tiempo por vuelta.
Para analizar el tipo e intensidad de relación debemos representar el diagrama de dispersión para la muestra proporcionada.
A continuación se muestra el procedimiento con R:
x=c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
y=c(102.326, 102.305, 102.556, 102.984, 103.277, 103.261, 103.068, 103.347, 103.445, 103.658)
plot(x, y, main="Diagrama de dispersión", xlab="Número de vuelta", ylab="Tiempo por vuelta", pch=19, col="darkgreen")
En el diagrama podemos ver como la relación es de tipo curvilínea e incluso podríamos decir que se trata de una relación fuerte, aunque esto lo analizaremos en profundidad más adelante.
Para realizar esto debemos llevar a cabo una sencilla operación en R:
lm(y~x)
##
## Call:
## lm(formula = y ~ x)
##
## Coefficients:
## (Intercept) x
## 102.2174 0.1464
# O si queremos información más detallada (no necesaria en nuestro caso)
summary(lm(y~x))
##
## Call:
## lm(formula = y ~ x)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.20524 -0.09803 -0.03978 0.11792 0.32751
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 102.21740 0.12357 827.218 < 2e-16 ***
## x 0.14642 0.01991 7.352 7.98e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.1809 on 8 degrees of freedom
## Multiple R-squared: 0.8711, Adjusted R-squared: 0.855
## F-statistic: 54.06 on 1 and 8 DF, p-value: 7.977e-05
La fórmula quedaría así: y = cte. + pdte.·x = 102.2174 + 0.1464x. Podemos extraer varias conclusiones importantes de esta simple fórmula como por ejemplo que el valor de la pendiente nos indica que por cada vuelta de carrera que pasa el tiempo de vuelta incrementa un promedio de 0.1464 segundos. Un dato que sin duda es de los más importantes a la hora de elaborar nuestra estrategia.
Por otro lado, el valor de la constante es el valor promedio de y cuando x=0 (no tiene sentido ya que el 0 no está en nuestro rango de estudio).
# Mostramos el diagrama de dispersión con la recta de mínimos cuadrados
library(car)
## Warning: package 'car' was built under R version 4.3.3
## Loading required package: carData
## Warning: package 'carData' was built under R version 4.3.3
##
## Attaching package: 'carData'
## The following objects are masked from 'package:BSDA':
##
## Vocab, Wool
scatterplot(x, y)
\(R^2\) proporciona una medida de qué tan bien se ajustan los datos a la línea de regresión. Este coeficiente puede variar entre 0 y 1, donde:
\(\rightarrow
R^2 = 0\) indica que el modelo no explica nada de la variabilidad
de los datos.
\(\rightarrow R^2 =
1\) indica que el modelo explica toda la variabilidad de los
datos.
Si toma valores próximos a 0.9, consideraremos el ajuste muy
aceptable, pero si toma valores inferiores a 0.6 que se debe buscar otro
tipo de relación si la hay.
Para calcularlo con R utilizaremos:
# Se obtiene elevando el coef. de correlación al cuadrado
cor(x, y)^2
## [1] 0.8710835
Como podemos observar obtenemos un valor muy próximo a 0.9, concretamente 0.87, por lo que podemos decir que aproximadamente el 87% de la variabilidad en la variable dependiente puede ser explicada por el modelo de regresión lineal que estamos utilizando. Esto sugiere que el modelo tiene un buen ajuste a los datos y que las variables predictoras están capturando una gran parte de la variación en la variable dependiente, y que por tanto, el modelo es bastante efectivo para explicar la relación entre las variables.
El coeficiente de correlación, denotado
como \(\rho\), es una medida
estadística que indica la fuerza y la dirección de la relación lineal
entre dos variables. Este coeficiente puede variar entre -1 y 1, donde:
\(\rightarrow \rho = 1\) indica
una correlación positiva perfecta, es decir, que a medida que una
variable aumenta, la otra también lo hace en la misma proporción.
\(\rightarrow \rho = -1\) indica una
correlación negativa perfecta, lo que significa que a medida que una
variable aumenta, la otra disminuye en la misma proporción.
\(\rightarrow \rho = 0\) indica que no hay
relación lineal entre las dos variables.
Para calcularlo en R:
# Hacemos uso del mismo comando que en el apartado anterior
cor(x, y)
## [1] 0.9333185
Como vemos obtenemos un coeficiente de correlación positivo, lógico debido al sentido de la recta que podemos apreciar en el diagrama del primer apartado, y que con un valor tan próximo a 1 nos indica una correlación muy fuerte entre las dos variables.
Con este problema hemos podido ver como el modelo de regresión lineal es aplicable a multitud de casos reales y como proporciona información importante a la hora de entender y predecir sucesos entre dos variables.