1 TRABAJO 1

1.1 Probabilidad

Dos sucesos cumplen que \(P(A^c)=0.2\), \(P(B)=0.6\), \(P(A \cup B)=0.92\).

  1. Calcula la probabilidad de A.

Sabiendo que \(P(A^c)=0.2\), \(P(A)=0.8\) al haber hecho la operación 1-0.2.

  1. Calcula \(P(A\cap B)\).

Para poder calcular la intersección debemos tener en cuenta que: \(P(A\cap B)=P(A)+P(B)-P(A\cup B)\), conocemos \(P(A)=0.8\), \(P(B)=0.6\), y \(P(A\cup B)=0.92\), calculamos y obtenemos: \(P(A\cap B)=0.8+0.6-0.92=0.48\)

  1. Calcula \(P(A/B^c)\)

\(P(A / B^c)=\frac{P(A \cap B^c)}{P(B^c)}\). Sabemos que \(P(A\cap B^c)= P(A)-P(A\cap B)\), esto es: 0.8-0.48= 0.32. Ahora sí podemos calcular: \(P(A / B^c)=\frac{P(A \cap B^c)}{P(B^c)}=0.32 / (1-0.6) = 0.32 /0.4 = 0.8\)

  1. Calcula \(P(B^c/A^c)\).

\(P(B^c / A^c)=\frac{P(B^c \cap A^c)}{P(A^c)}\). Sabemos que \(P(B^c\cap A^c)= 1-P(A\cup B)\), esto es: 1-0.92= 0.08 Ahora sí podemos calcular: \(P(B^c / A^c)=\frac{P(B^c \cap A^c)}{P(A^c)}= 0.08 / 0.2 = 0.4\)


1.2 Variable aleatoria discreta

En una clase de programación varios alumnos han desarrollado un programa y lo han ejecutado muchas veces. Los alumnos han escogido 5 de estas ejecuciones para comprobar si el programa falla en la ejecución o no.

Siendo X una variable aleatoria discreta que es el número de ejecuciones fallidas con los valores posibles x = 0, 1, 2, 3, 4, 5.

Sabiendo que:

\(P(X=0)=0.8\) , \(P(X=1)=0.1\) , \(P(X=2)=0.04\) , \(P(X=3)=0.03\) , \(P(X=4)=0.02\) , \(P(X=5)=0.01\)

Cuestiones:

  1. Calcula la varianza y la media de X.

MEDIA: \(0 *P(X = 0) + 1 * P( X = 1 ) + 2* P(X = 2)+3* P(X=3)+4*P(X=4)+5*P(X=5)\)

sum(0*0.8,1*0.1,2*0.04,3*0.03,4*0.02,5*0.01)
## [1] 0.4

VARIANZA: \((0^2 *P(X = 0) + 1^2 * P( X = 1 ) + 2^2 * P(X = 2)+3^2 * P(X=3)+4^2 *P(X=4)+5^2 *P(X=5))* 0.4^2\)

sum(0^2*0.8,1^2*0.1,2^2*0.04,3^2*0.03,4^2*0.02,5^2*0.01)*sum(0*0.8,1*0.1,2*0.04,3*0.03,4*0.02,5*0.01)^2
## [1] 0.176
  1. Calcula la probabilidad de que como mínimo dos ejecuciones fallen.

\(P(X\geq 2)=1 - (P(X=0) + P(X=1))\)

1-sum(0.8,0.1)
## [1] 0.1

Otra opción es sumar todas las probabilidades mayores o iguales que X=2.

\(P(X\geq 2) = P(X=2) + P(X=3) + P(X=4) + P(X=5)\)

sum(0.04,0.03,0.02,0.01)
## [1] 0.1
  1. Calcula la probabilidad de que fallen dos o menos ejecuciones:

\(P(X\leq 2)= P(X=0) + P(X=1) + P(X=2)\)

sum(0.8,0.1, 0.04)
## [1] 0.94
  1. Calcula la probabilidad de que haya como mínimo cuatro ejecuciones fallidas si sabemos que ya hay más de una ejecución que ha fallado.

\(P(X\geq 4/X>1)=\frac{P(X\geq4)}{P(X>1)}\)

sum(0.02,0.01) / sum(0.04,0.03,0.02,0.01)
## [1] 0.3

1.3 Distribuciones de probabilidad

Jorge acaba de abrir una cafetería cerca del parque Abelardo de Albacete y ofrece, aparte de cafés, tés e infusiones, unas hamburguesas especiales llamadas “Brutal Burguers”.La probabilidad de que exactamente a un cliente nuevo le guste la Brutal Burguer es de 0.8. Si vienen 3 nuevos clientes a su cafetería, queremos calcular las siguientes probaibilidades:

  1. ¿Cuál es la probabilidad de que exacatamente a dos de ellos les guste la hamburguesa?

¿P(x=2)?

Como dbninom(a,b,c) devuelve la probabilidad P(x=a), es decir, que una variable aleatoria X con distribución binomial(b=3, c=0.8) tome el valor a(en este caso 2)

 dbinom(2,3,0.8) 
## [1] 0.384

  1. ¿Cuál es la probabilidad de que al menos a 2 de ellos les guste la hamburguesa?

¿P(x>1)? Como pbinom(a,b,c) devuelve la probabilidad P(x<=a) y nos interesa saber la probabilidad de los valores que son mayores que 1, pues le restamos a 1(100% de probabilidad) la probabilidad de los valores sean menores o iguales a 1:

 1 - pbinom(1,3,0.8)
## [1] 0.896

  1. ¿Cuál es la probabilidad de que a menos de 3 de ellos les guste la hamburguesa?

¿P(x<3)?

Como pbinom(a,b,c) devuelve la probabilidad P(x<=a) y nos interesa saber la probabilidad de los valores que son menores que 3, pues cogemos la probabilidad de que los valores sean menores o iguales a 2:

 pbinom(2,3,0.8)
## [1] 0.488

  1. ¿Cuál es la probabilidad de que exactamente a un cliente le guste la hamburguesa?

¿P(x=1)?

Como dbninom(a,b,c) devuelve la probabilidad P(x=a), es decir, que una variable aleatoria X con distribución binomial(b=3, c=0.8) tome el valor a(en este caso 1)

 dbinom(1,3,0.8)
## [1] 0.096

Video1

Enlace al video explicando y resolviendo los ejercicios del trabajo 1: Video Trabajo 1


2 TRABAJO 2

2.1 Inferencia estadística.

Se ha creado una base de datos que recoge información acerca de las ventas de teléfonos inteligentes o smartphones llamada Smartphones, en ella vienen reflejadas algunas marcas y sus distintos dispositivos vendidos, el tamaño de cada dispositivo, su batería en mAH, su tiempo de carga, la calificación del usuario sobre 5 estrellas tras su uso y su precio de venta al público.

Aquí tenemos un resumen con los datos para que la realización del ejercicio sea lo más visual y gráfica posible, también se ha añadido una vista de toda la base de datos:

library(readxl)
## Warning: package 'readxl' was built under R version 4.3.3
Smartphones <- read_excel("Smartphones.xlsx")
View(Smartphones)
summary(Smartphones)
##      Marca         Batería     TiempodeCarga    Calificación 
##  Min.   :1.00   Min.   :3700   Min.   : 85.0   Min.   :1.00  
##  1st Qu.:2.00   1st Qu.:4025   1st Qu.:100.0   1st Qu.:3.00  
##  Median :3.00   Median :4300   Median :110.0   Median :4.00  
##  Mean   :2.84   Mean   :4338   Mean   :112.8   Mean   :3.72  
##  3rd Qu.:4.00   3rd Qu.:4600   3rd Qu.:123.8   3rd Qu.:5.00  
##  Max.   :5.00   Max.   :5000   Max.   :150.0   Max.   :5.00  
##    Pulgadas             Precio      
##  Length:50          Min.   : 690.0  
##  Class :character   1st Qu.: 842.5  
##  Mode  :character   Median : 915.0  
##                     Mean   : 914.4  
##                     3rd Qu.: 980.0  
##                     Max.   :1150.0
  1. Halla el intervalo de confianza al 97% para las diferencias de media del tiempo de carga al 100% (min) de las marcas “1” y “3”.
t.test(Smartphones$TiempodeCarga[(Smartphones$Marca==1)],Smartphones$TiempodeCarga[(Smartphones$Marca==3)],var.equal = FALSE, conf.level = .97)
## 
##  Welch Two Sample t-test
## 
## data:  Smartphones$TiempodeCarga[(Smartphones$Marca == 1)] and Smartphones$TiempodeCarga[(Smartphones$Marca == 3)]
## t = -0.087437, df = 17.866, p-value = 0.9313
## alternative hypothesis: true difference in means is not equal to 0
## 97 percent confidence interval:
##  -12.71105  11.80196
## sample estimates:
## mean of x mean of y 
##  115.0000  115.4545
  1. Halla el intervalo de confianza al 90% del precio (€) de la marca “4”.
t.test(Smartphones$Precio[(Smartphones$Marca==4)],var.equal = FALSE, conf.level = .90)
## 
##  One Sample t-test
## 
## data:  Smartphones$Precio[(Smartphones$Marca == 4)]
## t = 17.234, df = 8, p-value = 1.308e-07
## alternative hypothesis: true mean is not equal to 0
## 90 percent confidence interval:
##  789.0143 979.8746
## sample estimates:
## mean of x 
##  884.4444

3.Halla la media de la capacidad de la batería (mAH) de los smartphones correspondientes a la marca “2” con un nivel de confianza del 98%.

t.test(Smartphones$Batería[(Smartphones$Marca==2)],var.equal = FALSE, conf.level = .98)
## 
##  One Sample t-test
## 
## data:  Smartphones$Batería[(Smartphones$Marca == 2)]
## t = 35.897, df = 10, p-value = 6.686e-12
## alternative hypothesis: true mean is not equal to 0
## 98 percent confidence interval:
##  4027.672 4699.600
## sample estimates:
## mean of x 
##  4363.636

4.Halla el intervalo de confianza al 85% para las diferencias de calificacion (máximo 5 estrellas) de las marcas “3” y “5”.

t.test(Smartphones$Calificación[(Smartphones$Marca==3)],Smartphones$Calificación[(Smartphones$Marca==5)],var.equal = FALSE, conf.level = .85)
## 
##  Welch Two Sample t-test
## 
## data:  Smartphones$Calificación[(Smartphones$Marca == 3)] and Smartphones$Calificación[(Smartphones$Marca == 5)]
## t = -0.94841, df = 15.837, p-value = 0.3572
## alternative hypothesis: true difference in means is not equal to 0
## 85 percent confidence interval:
##  -1.3270957  0.3043684
## sample estimates:
## mean of x mean of y 
##  3.363636  3.875000

2.2 Contraste de Hipótesis

Dos empresas producen un tipo de fibra óptica para la industria de las telecomunicaciones. Este material se someterá a condiciones extremas de transmisión de datos, por lo que es crucial comparar la capacidad de transmisión de datos del material producido por cada empresa.

Se toman 45 muestras de material de cada empresa y se someten a una prueba de transmisión de datos, donde se mide la tasa de transmisión en Gigabits por segundo (Gbps) después de transmitir datos durante 24 horas.

Para la Empresa I, la media y la desviación estándar muestral de la tasa de transmisión son x1= 40 Gbps y s1= 5 Gbps, mientras que para la Empresa J, son x2= 45 Gbps y s2= 6 Gbps. Se sabe por estudios anteriores que la distribución de la tasa de transmisión sigue una distribución aproximadamente normal.

2.2.1 1.¿Existe una diferencia significativa en las medias de las tasas de transmisión de las dos empresas?

2.2.2 2.¿Cuál es el intervalo de confianza del 95% para la diferencia entre las medias de las tasas de transmisión de las dos empresas?

2.2.3 3.¿Cuál es el intervalo de confianza del 99% para la diferencia entre las medias de las tasas de transmisión de las dos empresas, asumiendo que las desviaciones estándar son iguales?

2.2.4 4.¿Las dos empresas producen material con la misma tasa promedio de transmisión de datos? Utiliza un nivel de significancia de 0.05.

Datos del ejercicio y resolución

x1 <- 40; #media Empresa I 
s1 <- 5; #desviacionestandar Empresa I 
n1 <- 45 #muestras Empresa I 
x2 <- 45; #mediaEmpresa J 
s2 <- 6; #desviacion estandar Empresa J 
n2 <- 45 #muestras Empresa J

# Ejercicio 1 
t.test(x = rnorm(n1, mean = x1, sd = s1), y = rnorm(n2, mean = x2, sd = s2), alternative = "two.sided") 
## 
##  Welch Two Sample t-test
## 
## data:  rnorm(n1, mean = x1, sd = s1) and rnorm(n2, mean = x2, sd = s2)
## t = -6.1936, df = 86.46, p-value = 1.923e-08
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -10.11564  -5.20018
## sample estimates:
## mean of x mean of y 
##  38.42266  46.08057
# Ejercicio 2 
t.test(x = rnorm(n1, mean = x1, sd = s1), y = rnorm(n2, mean = x2, sd = s2), conf.level = 0.95)$conf.int 
## [1] -6.762215 -2.427969
## attr(,"conf.level")
## [1] 0.95
# Ejercicio 3 
t.test(x = rnorm(n1, mean = x1, sd = s1), y = rnorm(n2, mean = x2, sd = s2), var.equal = TRUE, conf.level = 0.99)$conf.int
## [1] -6.667933 -1.139260
## attr(,"conf.level")
## [1] 0.99
#Ejercicio 4 
t.test(x = rnorm(n1, mean = x1, sd = s1), y = rnorm(n2, mean= x2, sd = s2), alternative = "two.sided", conf.level = 0.95)
## 
##  Welch Two Sample t-test
## 
## data:  rnorm(n1, mean = x1, sd = s1) and rnorm(n2, mean = x2, sd = s2)
## t = -3.5858, df = 83.673, p-value = 0.0005642
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -6.982048 -2.000323
## sample estimates:
## mean of x mean of y 
##  39.54165  44.03283

2.3 Contraste de hipótesis

El departamento de programación de la ESII afirma que el tiempo promedio que sus alumnos tardan en completar un trabajo de la asignatura de programación es de 20 horas. Para verificar esta afirmación, se selecciona una muestra aleatoria de 28 trabajos y se registra el tiempo que tardan los alumnos en completarlos. La media de tiempo de la muestra es de 22 horas, con una desviación estándar de 4 horas.

Para determinar si la afirmación del departamento de programación sigue siendo válida, planteamos el siguiente contraste:

H0: μ = 20 (el tiempo promedio es de 20 horas)

H1: μ ≠ 20 (el tiempo promedio no es de 20 horas)

Tomamos α = 0.05

# Datos para hacer el contraste

mediaMuestra = 22 #Tenemos que la media de horas de la muestra es 22
n = 28 # Número de elementos de la muestra
desviacionEstandar = 4 
mediaHipotesis = 20


#Conocida la desviación estándar y sabiendo que n(muestra) < 30 usamos la siguiente expresión: 

zs = (mediaMuestra-mediaHipotesis)/(desviacionEstandar/sqrt(n))

zs
## [1] 2.645751
# Estamos ante un test bilateral, siendo así que p-valor se calcula como tal y como sigue:
t=abs(zs)

p_valor = 2*(1-pnorm(t))

p_valor
## [1] 0.008150972

Como p-valor es menor que 0.05 (nivel de significación) podemos decir que se rechaza la hipótesis nula (H0). Por tanto, la afirmación del departamento de programación no sigue siendo válida, ya que no se puede asegurar que la media de horas empleadas para hacer el trabajo sea de 20 horas.

Video2

Enlace al video explicando y resolviendo los ejercicios del trabajo 2: Video Trabajo 2


3 TRABAJO 3: Contraste de hipótesis, ANOVA y regresión lineal.

3.1 Contraste de hipótesis.

Una determinada marca de coches está intentando reducir el tiempo que sus coches tardan en alcanzar los 100 km/h. Las últimas mediciones indican que la media de estos coches está en 4 s, sin embargo, se han llevado a cabo una serie de modificaciones para mejorar esos registros. Para ello se han hecho 44 mediciones en las que se ha obtenido una media de 3.6 s y una desviación típica de 0.5 s. ¿Realmente se habrá reducido el tiempo para alcanzar dicha velocidad?

3.1.1 a) ¿Cuál es el valor del estadístico test?

# Primero debemos establecer cuál es la hipótesis nula H0, en este caso sería que la tardanza hasta alcanzar los 100 km/h es de 4 segundos. Por tanto H1: el tiempo es menor de 4 segundos.

# Ahora debemos establecer todos los datos:
x = 3.6
mu = 4
s = 0.5
n = 44

zs = (x-mu)/(s/sqrt(n))
zs
## [1] -5.3066

3.1.2 b) ¿Cuál es el p-valor?

# p-valor = P(z < zs)
zs = -5.3066
p_valor = pnorm(zs)
p_valor
## [1] 5.584445e-08

3.1.3 c) ¿Se podría decir que se reduce el tiempo para alcanzar 100 km/h con esa nueva modificación?

p_valor < 0.05, por lo que rechazamos la hipótesis nula de que el
tiempo = 4 segundos. Por tanto, podemos afirmar que se reduce el tiempo
para alcanzar dicha velocidad

3.1.4 d) En caso de que cada medición pueda aumentar o reducir el tiempo previo con igual probabilidad, ¿cúal es la probabilidad de que en 13 de estas mediciones en 5 se reduzca el tiempo?

# Estamos ante una binomial, debemos tener en cuenta de que si hay la misma probabilidad de aumentar que de reducir, el parametro será 0.5

dbinom(5,13,0.5)
## [1] 0.1571045

4 ANOVA

Se ha llevado a cabo un estudio para comparar la efectividad de cuatro métodos de enseñanza diferentes en un colegio. Se seleccionaron al azar cuatro grupos de estudiantes y a cada grupo se le aplicó un método de enseñanza distinto durante un semestre. Al final del semestre, se evaluó el rendimiento de los estudiantes con una prueba estandarizada.

Datos recogidos (puntuaciones en la prueba):

Metodo A: 78, 85, 82, 88, 75, 80

Metodo B: 90, 92, 91, 89, 87, 88

Metodo C: 70, 72, 68, 75, 70, 69

Metodo D: 83, 80, 84, 86, 85, 82

  1. Prueba de normalidad
  2. Análisis exploratorio
  3. ANOVA de un factor

Primero introducimos en un datraframe los datos del ejercicio y creamos dos columnas(una con el metodo y otra con el valor)

metodo_A <- c(78, 85, 82, 88, 75, 80)
metodo_B <- c(90, 92, 91, 89, 87, 88)
metodo_C <- c(70, 72, 68, 75, 70, 69)
metodo_D <- c(83, 80, 84, 86, 85, 82)

datos <- data.frame(
  Valor = c(metodo_A, metodo_B, metodo_C, metodo_D),
  Metodo = factor(rep(c('A', 'B', 'C', 'D'), each=6))
)
print(datos)
##    Valor Metodo
## 1     78      A
## 2     85      A
## 3     82      A
## 4     88      A
## 5     75      A
## 6     80      A
## 7     90      B
## 8     92      B
## 9     91      B
## 10    89      B
## 11    87      B
## 12    88      B
## 13    70      C
## 14    72      C
## 15    68      C
## 16    75      C
## 17    70      C
## 18    69      C
## 19    83      D
## 20    80      D
## 21    84      D
## 22    86      D
## 23    85      D
## 24    82      D

4.1 Apartado 1: Verificar la normalidad de las puntuaciones en cada grupo

shapiro.test(datos$Valor[datos$Metodo == "A"]);
## 
##  Shapiro-Wilk normality test
## 
## data:  datos$Valor[datos$Metodo == "A"]
## W = 0.99029, p-value = 0.9899
shapiro.test(datos$Valor[datos$Metodo == "B"]);
## 
##  Shapiro-Wilk normality test
## 
## data:  datos$Valor[datos$Metodo == "B"]
## W = 0.98189, p-value = 0.9606
shapiro.test(datos$Valor[datos$Metodo == "C"]);
## 
##  Shapiro-Wilk normality test
## 
## data:  datos$Valor[datos$Metodo == "C"]
## W = 0.91107, p-value = 0.4435
shapiro.test(datos$Valor[datos$Metodo == "D"]);
## 
##  Shapiro-Wilk normality test
## 
## data:  datos$Valor[datos$Metodo == "D"]
## W = 0.98259, p-value = 0.9637

4.2 Apartado 2 Resumen estadístico

summary(datos$Valor);
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   68.00   75.00   82.50   81.21   87.25   92.00

Gráfico de caja

boxplot(Valor ~ Metodo, data = datos, main="Gráficos de Caja por Método de Enseñanza");

4.3 Apartado 3: ANOVA de un factor.

resultado_anova <- aov(Valor ~ Metodo, data = datos)

summary(resultado_anova);
##             Df Sum Sq Mean Sq F value   Pr(>F)    
## Metodo       3 1106.5   368.8    40.2 1.17e-08 ***
## Residuals   20  183.5     9.2                     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

5 REGRESIÓN LINEAL

En un laboratorio de investigación de materiales, se ha realizado un experimento para estudiar la velocidad de corrosión del hierro. Se midió el grosor de la capa de corrosión (en micrómetros) de las muestras de hierro a diferentes tiempos de exposición (medido en días).

Los datos recolectados son:

tiempo_de_exposicion <- c(1,1.5,2,2.5,3,3.5,4,4.5,5,5.5)
grosor_de_capa <- c(10,15,22,30,38,45,50,55,60,65)

5.0.1 1. Determina la recta de regresión.

summary(lm(grosor_de_capa~tiempo_de_exposicion))
## 
## Call:
## lm(formula = grosor_de_capa ~ tiempo_de_exposicion)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.4182 -1.1848 -0.1848  1.2636  2.8424 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)           -2.0485     1.4586  -1.404    0.198    
## tiempo_de_exposicion  12.6303     0.4105  30.767 1.35e-09 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.864 on 8 degrees of freedom
## Multiple R-squared:  0.9916, Adjusted R-squared:  0.9906 
## F-statistic: 946.6 on 1 and 8 DF,  p-value: 1.353e-09

La recta de regresión es: \(-2.0485 + 12.6303 * T\)

Asumiendo T como el tiempo de exposición

5.0.2 2. ¿Cual es el valor que predice el modelo para tiempo de exposición con valores 6, 7 y 8?

nuevo_tiempo <- data.frame(tiempo_de_exposicion = seq(6,8))
predict(lm(grosor_de_capa~tiempo_de_exposicion),nuevo_tiempo)
##        1        2        3 
## 73.73333 86.36364 98.99394

5.0.3 3. Demuestra la existencia o no de una relación lineal entre ambos parametros medidos en el experimento realizado en el laboratorio.

correlacion_lineal = cor(tiempo_de_exposicion, grosor_de_capa)
correlacion_lineal
## [1] 0.995801
plot(tiempo_de_exposicion, grosor_de_capa)

El coeficiente de correlación (0.996) está muy próximo a 1 por tanto se puede afirmar que entre ambos parámetros existe una correlación lineal fuerte. Analizando la gráfica de la relación también podemos llegar a esa conclusión puesto que los valores se ajustan a una recta de pendiente positiva.

5.0.4 4. ¿Existe evidencia estadística para demostrar que la pendiente de la recta de regresión no sea 0?

El p-valor obtenido del analísis realizado en el apartado 1 es: 1.353e-09

Cómo el p-valor es menor que el nivel de significación (0.05), podemos afirmar con evidencia estadísitica que la pendiente de la recta SÍ es distinta de 0.


6 BANCO DE DATOS

6.1 INTRODUCCIÓN Y ANALISIS

library(readr)
## Warning: package 'readr' was built under R version 4.3.3
netflix_titles <- read_csv("C:/Users/alexg/Downloads/archive/netflix_titles.csv")
## New names:
## Rows: 8809 Columns: 26
## ── Column specification
## ──────────────────────────────────────────────────────── Delimiter: "," chr
## (11): show_id, type, title, director, cast, country, date_added, rating,... dbl
## (1): release_year lgl (14): ...13, ...14, ...15, ...16, ...17, ...18, ...19,
## ...20, ...21, ......
## ℹ Use `spec()` to retrieve the full column specification for this data. ℹ
## Specify the column types or set `show_col_types = FALSE` to quiet this message.
## • `` -> `...13`
## • `` -> `...14`
## • `` -> `...15`
## • `` -> `...16`
## • `` -> `...17`
## • `` -> `...18`
## • `` -> `...19`
## • `` -> `...20`
## • `` -> `...21`
## • `` -> `...22`
## • `` -> `...23`
## • `` -> `...24`
## • `` -> `...25`
## • `` -> `...26`
View(netflix_titles)
#Visualizamos las primeras filas de la base de datos: 
head(netflix_titles)
## # A tibble: 6 × 26
##   show_id type    title    director cast  country date_added release_year rating
##   <chr>   <chr>   <chr>    <chr>    <chr> <chr>   <chr>             <dbl> <chr> 
## 1 s1      Movie   Dick Jo… Kirsten… <NA>  United… September…         2020 PG-13 
## 2 s2      TV Show Blood &… <NA>     Ama … South … September…         2021 TV-MA 
## 3 s3      TV Show Ganglan… Julien … Sami… <NA>    September…         2021 TV-MA 
## 4 s4      TV Show Jailbir… <NA>     <NA>  <NA>    September…         2021 TV-MA 
## 5 s5      TV Show Kota Fa… <NA>     Mayu… India   September…         2021 TV-MA 
## 6 s6      TV Show Midnigh… Mike Fl… Kate… <NA>    September…         2021 TV-MA 
## # ℹ 17 more variables: duration <chr>, listed_in <chr>, description <chr>,
## #   ...13 <lgl>, ...14 <lgl>, ...15 <lgl>, ...16 <lgl>, ...17 <lgl>,
## #   ...18 <lgl>, ...19 <lgl>, ...20 <lgl>, ...21 <lgl>, ...22 <lgl>,
## #   ...23 <lgl>, ...24 <lgl>, ...25 <lgl>, ...26 <lgl>
local({r <- getOption("repos")
       r["CRAN"] <- "https://cran.rstudio.com/" 
       options(repos=r)
})
install.packages(c("dplyr", "ggplot2"))
## Installing packages into 'C:/Users/alexg/AppData/Local/R/win-library/4.3'
## (as 'lib' is unspecified)
## package 'dplyr' successfully unpacked and MD5 sums checked
## Warning: cannot remove prior installation of package 'dplyr'
## Warning in file.copy(savedcopy, lib, recursive = TRUE): problema al copiar
## C:\Users\alexg\AppData\Local\R\win-library\4.3\00LOCK\dplyr\libs\x64\dplyr.dll
## a C:\Users\alexg\AppData\Local\R\win-library\4.3\dplyr\libs\x64\dplyr.dll:
## Permission denied
## Warning: restored 'dplyr'
## package 'ggplot2' successfully unpacked and MD5 sums checked
## 
## The downloaded binary packages are in
##  C:\Users\alexg\AppData\Local\Temp\Rtmp8exsc0\downloaded_packages
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.3.3
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.3.3
# Filtramos los datos para obtener solo shows de TV de Estados Unidos y España
shows_us_spain <- netflix_titles %>%
  filter(type == "TV Show" & (country == "United States" | country == "Spain"))

# Gráfico de barras comparativo de shows de TV entre Estados Unidos y España
ggplot(shows_us_spain, aes(x = country, fill = country)) +
  geom_bar() +
  labs(title = "Comparación de shows de TV entre Estados Unidos y España",
       x = "País",
       y = "Número de shows de TV") +
  scale_fill_manual(values = c("United States" = "skyblue", "Spain" = "orange"))

6.2 CONTRASTE DE HIPÓTESIS

Compararemos el número de TV Shows que se han realizado en diferentes paises europeos escogidos al azar en diferentes años. Con esta comparacion estudiaremos si hay alguna diferencia significativa entre las cantidades de TV Shows realizados en estos paises en el año 2019 y 2020 para ver cuanto pudo afectar o benfeficiar la pandemia a estas producciones y su popularidad.

Teniendo en cuenta que la cantidad de TV Shows por año no sigue una distribucion normal, que las muestras son de 10 paises europeos aleatorios y que se trata de dos muestras emparejadas, utilizamos un test no parametrico, la prueba de los signos.

A continuacion vamos a representar la cantidad de TV Shows por pais y año en una tabla:

library(knitr)

# Insertamos los valores obtenidos del banco de datos.

data<- data.frame( 
  Pais = c("España","Francia","Italia","Alemania","Austria","Noruega","Suecia","Dinamarca","Belgica","Polonia"), 
  Año_2019 = c(17,15,1,5,10,1,3,3,3,2), 
  Año_2020 = c(17,23,20,9,20,0,2,7,2,2)
  )

tabla<-kable(data, caption = "Número de TV Shows presentados en cada País en NETFLIX") 

tabla
Número de TV Shows presentados en cada País en NETFLIX
Pais Año_2019 Año_2020
España 17 17
Francia 15 23
Italia 1 20
Alemania 5 9
Austria 10 20
Noruega 1 0
Suecia 3 2
Dinamarca 3 7
Belgica 3 2
Polonia 2 2

Las hipotesis que se plantean son las siguientes:

Hipótesis nula: La mediana de las diferencias es igual a 0. (H0 = 0)

Hipótesis alternativa: La mediana de las diferencias es diferente a 0. (H1 ≠ 0)

Utilizamos un nivel de significacion con valor de 0.05. (α = 0.05)

Calculamos el valor del estadístico, para ello comprobamos cuantos positivos y cuantos negativos hay, y nos quedamos con el valor maximo:

  Año_2019 = c(17,15,1,5,10,1,3,3,3,2)
  Año_2020 = c(17,23,20,9,20,0,2,7,2,2)

Positivos <- sum((Año_2019-Año_2020)>0)

Negativos <- sum((Año_2019-Año_2020)<0)

print("Positivos")
## [1] "Positivos"
Positivos
## [1] 3
print("-------------")
## [1] "-------------"
print("")
## [1] ""
print("Negativos")
## [1] "Negativos"
Negativos
## [1] 5
print('-------------')
## [1] "-------------"
print("")
## [1] ""
print("Máximo entre ambos")
## [1] "Máximo entre ambos"
max(Positivos,Negativos)
## [1] 5

Las funciones “sum” nos indican que hay 3 positivos y 5 negativos, y la funcion “max” nos indica que el máximo es 5. Por lo tanto, nuestro “Bs”(valor estadístico) es 5.

Ahora calculamos el umbral para compararlo con el valor del estadistico y poder tomar una decision:

# Calcular el umbral (Bα/2)
qbinom(1-(0.05/2),10,0.5)
## [1] 8

Con la función anterior hemos calculado el ubmral (Bα/2) que en concreto es 8.

Tenemos finalmente (Bs) < (Bα/2), siendo así que no hay suficiente evidencia estadística para rechazar la hipotesis nula.

No se ha encontrado una diferencia significativa entre la cantidad de TV Shows en la muestra de 10 paises aleatorios entre 2019 y 2020.

6.3 CONCLUSIÓN

Vamos a realizar un gráfico que permita comparar de forma visual los datos con los que hemos realizado el contraste.

# Cargamos la biblioteca
library(ggplot2)

# Datos
x <- c("España","Francia","Italia","Alemania","Austria","Noruega","Suecia","Dinamarca","Belgica","Polonia")
y <- data.frame( 
  Año_2019 = c(17,15,1,5,10,1,3,3,3,2), 
  Año_2020 = c(17,23,20,9,20,0,2,7,2,2)
)

# Convertimos los datos a formato largo
datos_largos <- tidyr::pivot_longer(y, everything(), names_to = "Año", values_to = "Valor")

# Añadimos la columna de países
datos_largos$País <- rep(x, each = 2)

# Creamos el gráfico
ggplot(datos_largos, aes(fill=Año, y=Valor, x=País)) + 
  geom_bar(position="dodge", stat="identity") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
  labs(x = "País", y = "Valor", fill = "Año")

Gracias a este gráfico podemos deducir los países que han aumentado significativamente su aportación a Netflix y los que han disminuido su aportación.

En general los países han mantenido su aportación a Netflix a pesar de la pandemia aunque hay algunos que han aumentado su aportación

VIDEO: https://youtu.be/KSfxArQ1fY4