1 Probabilidad

Extraemos una carta al azar de una baraja española de 40 cartas.

  1. Calcula la probabilidad de sacar un oro.

\(P(O)=\frac 1 4\), donde obtenemos que \(P(O)=0.25\).

  1. Calcula la probabilidad de que sea un oro o una espada \((P(O\cup E))\) suponiendo que \(P(O^c \cup E^c)=0.94\).

\(P(O\cup E) = P(O) + P(E) - P(O \cap E)\),sabemos,por el apartado anterior, que \(P(O) =0.25 = P(E)\) y que \(P(O \cap E)= 1 - P(O^c \cup E^c)=0.06\).De manera que, \(P(O\cup E)=0.25 + 0.25 - 0.06 = 0.44\).

  1. Calcula la probabilidad de extraer una espada sabiendo que anteriormente hemos extraído un oro \(P(E/O)\).

\(P(E / O)=\frac{P(E \cap O)}{P(O)}=0.06/0.25=0.24\).

  1. Demostrar que los sucesos O y E son independientes.

Para que sean independientes, debe cumplirse que \(P(O \cap E)=0.06\) debe ser igual a \(P(O)P(E)=0.25*0.25 \approx0.06\), también se podía comprobar antes porque \(P(E/O)=0.24 \approx P(E)=0.25\).


2 Variable aleatoria

1.Define la variable aleatoria X como el resultado del lanzamiento del dado. ¿Cuáles son los posibles valores que puede tomar X?

valores_X <- 1:6
valores_X
## [1] 1 2 3 4 5 6

2.Calcula la probabilidad de cada posible resultado de X y muestra la distribución de probabilidad en una tabla.

prob_X <- rep(1/6, 6)
tabla_prob_X <- data.frame(Valor_X = valores_X, Probabilidad = prob_X)
tabla_prob_X
##   Valor_X Probabilidad
## 1       1    0.1666667
## 2       2    0.1666667
## 3       3    0.1666667
## 4       4    0.1666667
## 5       5    0.1666667
## 6       6    0.1666667

3.1Calcula la media (μ) de la variable aleatoria X.

media_X <- mean(valores_X)
media_X
## [1] 3.5

3.2.Calcula la varianza (σ^2) de la variable aleatoria X.

varianza_X <- var(valores_X)
varianza_X
## [1] 3.5

4.Imagina que lanzas el dado dos veces y defines una nueva variable aleatoria Y como la suma de los resultados obtenidos en ambos lanzamientos. Define Y y enumera los posibles valores que puede tomar.

combinaciones <- expand.grid(dado1 = 1:6, dado2 = 1:6)
combinaciones
##    dado1 dado2
## 1      1     1
## 2      2     1
## 3      3     1
## 4      4     1
## 5      5     1
## 6      6     1
## 7      1     2
## 8      2     2
## 9      3     2
## 10     4     2
## 11     5     2
## 12     6     2
## 13     1     3
## 14     2     3
## 15     3     3
## 16     4     3
## 17     5     3
## 18     6     3
## 19     1     4
## 20     2     4
## 21     3     4
## 22     4     4
## 23     5     4
## 24     6     4
## 25     1     5
## 26     2     5
## 27     3     5
## 28     4     5
## 29     5     5
## 30     6     5
## 31     1     6
## 32     2     6
## 33     3     6
## 34     4     6
## 35     5     6
## 36     6     6

4.2.Calcula la probabilidad de cada posible resultado de Y y muestra la distribución de probabilidad en una tabla.

# Suma los resultados de cada combinación para obtener Y
sumas <- rowSums(combinaciones)

# Calcula la frecuencia de cada suma
frecuencias <- table(sumas)

# Convierte las frecuencias a probabilidades dividiendo por el número total de combinaciones (36)
prob_Y <- frecuencias / 36

# Crea la tabla de distribución de probabilidad
tabla_prob_Y <- data.frame(Valor_Y = as.numeric(names(prob_Y)), Probabilidad = as.numeric(prob_Y))
tabla_prob_Y
##    Valor_Y Probabilidad
## 1        2   0.02777778
## 2        3   0.05555556
## 3        4   0.08333333
## 4        5   0.11111111
## 5        6   0.13888889
## 6        7   0.16666667
## 7        8   0.13888889
## 8        9   0.11111111
## 9       10   0.08333333
## 10      11   0.05555556
## 11      12   0.02777778


3 Ejercicio de Distribuciones de probabilidades(Poisson)

Nos encontramos en un centro de atención al cliente, en el que se recibe un promedio de 10 llamadas por hora. Se considera que el número de llamadas sigue una distribución de Poisson.

1.Probabilidad de que recibamos exactamente 8 llamadas en una hora.

lambda <- 10 # Promedio de llamadas por hora

k <- 8 # Número de llamadas de interés

pm <- dpois(k,lambda)

cat(paste("Probabilidad de", k, "llamadas:", pm, "\n"))
## Probabilidad de 8 llamadas: 0.11259903214902

2.Posibilidad de que las llamadas sean menos de 5.

k <- 4 # Llamadas de interes, ya que menos de 5 es igual a probabilidad de 4 o menos

p_menos <- ppois(k,lambda)

cat(paste("Probabilidad de menos de", k + 1, "llamadas:", p_menos, "\n"))
## Probabilidad de menos de 5 llamadas: 0.0292526880769611

3.Probabilidad de que el número de llamadas este entre 4 y 7.

k <- 3 #Llamadas  minimas, debido a que 4 esta incluido.
l <- 7 #Tope de llamadas

p_entre <- ppois(l,lambda)-ppois(k,lambda)

cat(paste("Probabilidad entre ", k + 1," y ",l, " llamadas:", p_entre, "\n"))
## Probabilidad entre  4  y  7  llamadas: 0.209884595925773

4.Posibilidad de recibir mas de 15 llamadas en una hora.

k <- 15 #Numero llamadas que hay que superar.

p_mayor <- (1-ppois(k,lambda))

cat(paste("Probabilidad mayor ", k, "llamadas:",p_mayor,"\n"))
## Probabilidad mayor  15 llamadas: 0.0487404033039788


4 Ejercicio Tema 2 En una comisaria utilizan un polígrafo para detectar.

las mentiras de los delincuentes. Se sabe que la maquina tiene una probabilidad del 95% de dar resultados positivos si el recluso miente, y una probabilidad del 5% de dar un falso positivo en reclusos que digan la verda. Se realiza la prueba a 100 reclusos, de los cuales se sabe que el 20% mienten siempre. Sea X la variable aleatoria que representa el número de reclusos con resultado positivo en el poligrafo.

1.Define la variable aleatoria.

Los valores a los que puede optar la X van desde 0 (si todos los reclusos dicen la verdad) hasta 100(donde todos los recluson mienten).

2.Probabilidad de que exactamente 80 reclusos nos esten mintiendo

n <- 100 # Total de reclusos
p1 <- 0.2 * 0.95 + 0.8 * 0.05 # Probabilidad de resultado positivo 
x <- 80 # Numero que queremos saber su probabilidad 
P <- dbinom(x, n, p1) # Uso de del comando para sacar la probabilidad de este ejercici binomial. 
cat(paste("Probabilidad exacta de ", x, "reclusos mientan:",P,"\n"))
## Probabilidad exacta de  80 reclusos mientan: 2.49570184567195e-33

3.Cual es la probabilidad de que el poligrafo diga que el recluso miente cuando esta diciendo la verdad(falso positivo)

n_sin_enfermedad <- 0.8 * n # Número de reclusos que no sabemos si mienten. 
p_falso_positivo <- 0.05 # Probabilidad de falso positivo 
x <- 1:n_sin_enfermedad # Creamos un vector con todas las posibles cantidades de falso positivo. 
P_falso_positivo <- sum(dbinom(x,n_sin_enfermedad, p_falso_positivo)) # Calculamos sus posivilidades.
cat(paste("Probabilidad de generar un falso positivo:",P_falso_positivo,"\n"))
## Probabilidad de generar un falso positivo: 0.983484625614986

4.Calcular la media de resultados positivos

media <- n * p1 #Calculamos la media con los valores antes guardados. cat(paste("Media de resultado positivos:",media,"\n"))


5 Contraste de hipótesis. Wilcoxon o test Mann-Whitney

Se pretende comparar dos métodos diferentes de estudio en distintos alumnos según las calificaciones obtenidas en “Estadística” con ambos métodos.

Para la primera técnica de estudio se han obtenido los siguientes datos: metodo1=(9.5,9.1,7.2,8.9,6.4,8.5,9.7,5.5,7.9,8.2).

Por otro lado, para la segunda técnica se han obtenido estos datos: metodo2=(3.2,7.5,6.3,8.6,9.4,8.5,9.2,9.9,8.1,7.4)

  1. Prueba la hipótesis de que los dos métodos son similares
metodo1=c(9.5,9.1,7.2,8.9,6.4,8.5,9.7,5.5,7.9,8.2)
metodo2=c(3.2,7.5,6.3,8.6,9.4,8.5,9.2,9.9,8.1,7.4)

Us = max{k1,k2}=max{51.5,48.5}=51.5

Uα/2= qwilcox(0.975,10,10) = 76

Cómo Us <= Uα/2, no hay evidencia estadística en contra de H0 y por tanto, no hay evidencia estadística de que son diferentes

#Otra manera de hacerlo
wilcox.test(metodo1,metodo2)
## Warning in wilcox.test.default(metodo1, metodo2): cannot compute exact p-value
## with ties
## 
##  Wilcoxon rank sum test with continuity correction
## 
## data:  metodo1 and metodo2
## W = 51.5, p-value = 0.9397
## alternative hypothesis: true location shift is not equal to 0

Cómo el p-valor es grande, no existe evidencia estadistíca de que son diferentes

  1. Prueba la hipótesis de que estos dos nuevos métodos son similares.
metodo3=c(9.5,9.1,7.2,8.9,6.4,8.5,9.7,5.5,7.9,8.2)
metodo4=c(7.2,6.5,6.3,6.6,7.4,2.5,4.2,5.9,6.1,4.4) 

Us = max{k3,k4}=max{87.5,12}=87.5

Uα/2= qwilcox(0.975,10,10) = 76

Cómo Us > Uα/2, hay evidencia estadística en contra de H0 y por tanto, hay evidencia estadística de que son diferentes

#Otra manera de hacerlo

wilcox.test(metodo3,metodo4)
## Warning in wilcox.test.default(metodo3, metodo4): cannot compute exact p-value
## with ties
## 
##  Wilcoxon rank sum test with continuity correction
## 
## data:  metodo3 and metodo4
## W = 87.5, p-value = 0.005142
## alternative hypothesis: true location shift is not equal to 0

Cómo el p-valor es pequeño, existe evidencia estadistíca de que son diferentes


6 Contraste de Hipótesis (Tema 5)

Un consultor financiero está analizando el rendimiento de dos fondos de inversión, Fondo Alpha y Fondo Beta, para recomendar a sus clientes. Se han recopilado los rendimientos mensuales de ambos fondos durante el último año.

Datos:

Rendimientos del Fondo Alpha: 8%, 5%, 7%, 6%, 9%, 5%, 6%, 8%, 7%, 6%, 9%, 5%

Rendimientos del Fondo Beta: 7%, 7%, 6%, 8%, 7%, 7%, 6%, 7%, 8%, 6%, 7%, 8%

Apartados:

1.Analizar si hay diferencias en los rendimientos medios entre los dos fondos.

2.Evaluar si la variabilidad de los rendimientos difiere entre los fondos.

3.Considera si hay evidencia suficiente para afirmar que el rendimiento medio del Fondo Beta es menor que 42%.

Defino las series de datos para los rendimientos de los fondos Alpha y Beta.

rendimientos_alpha <- c(8, 5, 7, 6, 9, 5, 6, 8, 7, 6, 9, 5)
rendimientos_beta <- c(7, 7, 6, 8, 7, 7, 6, 7, 8, 6, 7, 8)

1.Analiza si hay diferencias en los rendimientos medios entre los dos fondos. Calcula el estadístico t y el p-valor.

# Cálculo de medias
media_alpha <- mean(rendimientos_alpha)
media_beta <- mean(rendimientos_beta)

# Cálculo de desviaciones estándar
sd_alpha <- sd(rendimientos_alpha)
sd_beta <- sd(rendimientos_beta)

# Número de observaciones en cada grupo
n_alpha <- length(rendimientos_alpha)
n_beta <- length(rendimientos_beta)

# t-test para muestras independientes (sin suponer varianzas iguales)
t_estadistico <- (media_alpha - media_beta) / sqrt((sd_alpha^2 / n_alpha) + (sd_beta^2 / n_beta))
grados_libertad <- ((sd_alpha^2 / n_alpha + sd_beta^2 / n_beta)^2) /
                  ((sd_alpha^2 / n_alpha)^2 / (n_alpha - 1) + (sd_beta^2 / n_beta)^2 / (n_beta - 1))
p_valor_t <- 2 * pt(-abs(t_estadistico), df = grados_libertad)
t_estadistico
## [1] -0.522233
p_valor_t
## [1] 0.6086066
t.test(rendimientos_alpha,rendimientos_beta)
## 
##  Welch Two Sample t-test
## 
## data:  rendimientos_alpha and rendimientos_beta
## t = -0.52223, df = 16.129, p-value = 0.6086
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -1.2641667  0.7641667
## sample estimates:
## mean of x mean of y 
##      6.75      7.00

Un p-valor superior a alpha(0.05) sugiere que no hay evidencia estadística suficiente para rechazar la hipótesis nula de igualdad de medias entre los dos fondos. Esto significa que, basado en los datos de rendimiento recolectados, no hay diferencias significativas en el rendimiento medio entre los fondos Alpha y Beta.

2.Evalúa si la variabilidad de los rendimientos difiere entre los fondos usando el test F. Calcula el estadístico F y el p-valor.

# Test F para comparar varianzas
f_estadistico <- (sd_alpha^2) / (sd_beta^2)
# Ajustar los grados de libertad
df1 <- n_alpha - 1
df2 <- n_beta - 1

# Calcula el p-valor de dos colas
p_valor_derecha <- pf(f_estadistico, df1, df2, lower.tail = FALSE)
p_valor_izquierda <- pf(1 / f_estadistico, df2, df1, lower.tail = FALSE)
f_p_valor <- 2 * min(p_valor_derecha, p_valor_izquierda)

# Muestra los resultados ajustados
f_estadistico
## [1] 4.041667
f_p_valor
## [1] 0.02903892
var.test(rendimientos_alpha, rendimientos_beta)
## 
##  F test to compare two variances
## 
## data:  rendimientos_alpha and rendimientos_beta
## F = 4.0417, num df = 11, denom df = 11, p-value = 0.02904
## alternative hypothesis: true ratio of variances is not equal to 1
## 95 percent confidence interval:
##   1.163505 14.039534
## sample estimates:
## ratio of variances 
##           4.041667

Un p-valor menor que 0.05 (como el obtenido, 0.02903892) confirma que las diferencias en la variabilidad de los rendimientos entre los dos fondos son significativas a un nivel de confianza del 95%.

3.Considera si hay evidencia suficiente para afirmar que el rendimiento medio del Fondo Beta es menor que 42%. Realiza el test t de una muestra.

# Valor de referencia para la hipótesis
mu_referencia <- 42

# Cálculo de la media y desviación estándar del Fondo Y
media_beta <- mean(rendimientos_beta)
sd_beta <- sd(rendimientos_beta)

# Número de observaciones
n_beta <- length(rendimientos_beta)

# Cálculo del estadístico t
t_estadistico <- (media_beta - mu_referencia) / (sd_beta / sqrt(n_beta))

# Grados de libertad
df <- n_beta - 1

# Cálculo del p-valor para un test de una cola (hacia la izquierda, ya que queremos saber si es menor)
p_valor_una_cola <- pt(t_estadistico, df)

# Muestra los resultados
t_estadistico
## [1] -164.1646
p_valor_una_cola
## [1] 2.685614e-20
# Usando t.test para hacer lo mismo de forma automática
t.test(rendimientos_beta, mu = 42)
## 
##  One Sample t-test
## 
## data:  rendimientos_beta
## t = -164.16, df = 11, p-value < 2.2e-16
## alternative hypothesis: true mean is not equal to 42
## 95 percent confidence interval:
##  6.530748 7.469252
## sample estimates:
## mean of x 
##         7

Este p-valor tan bajo sugiere que es altamente improbable que el rendimiento medio del Fondo Beta sea igual o superior a 42%, lo cual podría ser de preocupación si el objetivo es alcanzar o superar este umbral.


7 Contraste de hipótesis paramétrico.

El encargado de mantenimiento de una empresa de calderas se plantea ver si la duración media de sus calderas es mayor de 13 años. Para ello toma una muestra de 30 calderas y mide sus duraciones,cuya media es de 15 años.Sabemos que la varianza muestral es de 1 año.

  1. El encargado quiere saber si la duración media es mayor a 13.Calcula el estadístico test

H0: mu=13 H1: mu>13 Se cumple la direccionalidad, pues x_barra > 13

x_barra=15
mu=13
s=1
n=sqrt(30)
Zs=(x_barra-mu)/(s/n)
Zs
## [1] 10.95445

El estadístico test es 10.95445

  1. Calcular la región crítica

El valor del umbral o región crítica es el valor a partir del cual rechazo. Como alpha = 0.05

qnorm(0.95)
## [1] 1.644854

La región crítica es 1.6448

  1. El encargado quiere saber si la duración media es mayor a 13.Calcula el p-valor

Para ello calculamos la probabilidad de que Z sea mayor que el estadístico test P(Z > 10.95445).Esto lo calculamos a partir de:

1 - pnorm(10.95445)
## [1] 0

Y así,obtenemos que la probabilidad es prácticamente 0.

  1. El encargado quiere saber si hay evidencia estadística de que la duración media es mayor a 13

Como el p-valor es menor que alpha(0 < 0.05), rechazo H0 y podemos decir que hay evidencia estadística para rechazar H0 y que la duración media es mayor a 13.

7.1 Contraste de hipótesis no paramétrico. Wilcoxon o test Mann-Whitney

Se pretende comparar dos trayectos diferentes para llegar de un punto A a un punto B.Se han tomado los minutos tardados según cada trayecto.

Para el primer trayecto se han obtenido los siguientes datos: trayecto1=(12.5,11.1,13.4,10.9,11.4,12.3,11.4,13.0,11.5,11.6).

Por otro lado, para el segundo se han obtenido estos datos: trayecto2=(9.9,14,12.8,15.1,9.4,11.1,12.2,13.7,10.8,10.2)

  1. Prueba la hipótesis de que los dos métodos son similares
trayecto1=c(12.5,11.1,13.4,10.9,11.4,12.3,11.4,13.0,11.5,11.6)
trayecto2=c(9.9,14,12.8,15.1,9.4,11.1,12.2,13.7,10.8,10.2)
wilcox.test(trayecto1,trayecto2)
## Warning in wilcox.test.default(trayecto1, trayecto2): cannot compute exact
## p-value with ties
## 
##  Wilcoxon rank sum test with continuity correction
## 
## data:  trayecto1 and trayecto2
## W = 54.5, p-value = 0.7622
## alternative hypothesis: true location shift is not equal to 0

Ya que el p-valor es grande(mayor que 0.05), no existe evidencia estadistíca de que son diferentes ***

8 Anova

Supongamos que estamos llevando a cabo un estudio para determinar el efecto de tres diferentes métodos de estudio en el desempeño académico de los estudiantes. Se recopilaron las calificaciones finales de tres grupos de estudiantes que utilizaron los métodos A, B y C respectivamente.

Datos:

Grupo A: Calificaciones: 85, 88, 90, 84, 87

Grupo B: Calificaciones: 82, 80, 85, 86, 81

Grupo C: Calificaciones: 88, 85, 82, 87, 89

Apartados:

1.Análisis de diferencias en las calificaciones medias entre los tres grupos.

2.Evaluación de la homogeneidad de las varianzas entre los grupos.

3.Comparación visual de las calificaciones medias entre los tres grupos.

4.Post hoc test para identificar diferencias significativas entre grupos.

Definimos los datos

grupo_A <- c(85, 88, 90, 84, 87)
grupo_B <- c(82, 80, 85, 86, 81)
grupo_C <- c(88, 85, 82, 87, 89)

grupo <- rep(c("A", "B", "C"), each = 5)
calificaciones <- c(grupo_A, grupo_B, grupo_C)

1.Análisis de diferencias en las calificaciones medias entre los tres grupos.

Para analizar si existen diferencias significativas en las calificaciones medias entre los tres métodos de estudio, utilizaremos un ANOVA de un factor.

# ANOVA de un factor para comparar las calificaciones medias de los tres grupos
resultado_anova <- aov(calificaciones ~ grupo)

# Resumen del ANOVA
summary(resultado_anova)
##             Df Sum Sq Mean Sq F value Pr(>F)  
## grupo        2  46.53   23.27   3.473 0.0646 .
## Residuals   12  80.40    6.70                 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

El análisis ANOVA revela que existe una tendencia hacia la diferencia en las calificaciones medias entre los tres grupos, aunque la diferencia no alcanza significación estadística con un p-valor de 0.0646. Esto sugiere que hay indicios de que al menos un grupo podría tener una calificación media diferente, pero se necesita más evidencia para confirmar esta diferencia.

2.Evaluación de la homogeneidad de las varianzas entre los grupos

En este paso, evaluaremos si las varianzas de las calificaciones entre los tres grupos son homogéneas, lo cual es un supuesto importante para el ANOVA.

# Levene test para evaluar la homogeneidad de las varianzas

# Cargar la librería car
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
# Realizar Levene test
levene_test <- leveneTest(calificaciones, grupo)
## Warning in leveneTest.default(calificaciones, grupo): grupo coerced to factor.
levene_test
## Levene's Test for Homogeneity of Variance (center = median)
##       Df F value Pr(>F)
## group  2   0.026 0.9744
##       12

El resultado del levene test muestra un p-valor de 0.9744, lo que indica que no hay evidencia significativa para rechazar la hipótesis nula de homogeneidad de varianzas entre los grupos. Esto sugiere que el supuesto de homogeneidad de varianzas para el ANOVA parece ser válido en este caso.

3.Comparación visual de las calificaciones medias entre los tres grupos.

Podemos comparar visualmente las calificaciones medias de los tres grupos mediante un gráfico de barras.

# Gráfico de barras de los promedios de calificaciones por grupo
promedios <- c(mean(grupo_A), mean(grupo_B), mean(grupo_C))
barplot(promedios, names.arg = c("Grupo A", "Grupo B", "Grupo C"), xlab = "Grupos", ylab = "Calificación media", col = "skyblue", ylim = c(0, max(promedios) + 5))

Este gráfico nos permite observar de manera sencilla las diferencias en las calificaciones medias entre los tres grupos. Un grupo con una barra más alta indicaría un promedio de calificaciones más alto.

4.Post hoc test para identificar diferencias significativas entre grupos.

Después de encontrar una diferencia global en el ANOVA, es común realizar un post hoc test para identificar qué grupos difieren significativamente entre sí. Utilizaremos un Tukey test para esto.

# Tukey test para identificar diferencias significativas entre grupos
tukey_test <- TukeyHSD(resultado_anova)
tukey_test
##   Tukey multiple comparisons of means
##     95% family-wise confidence level
## 
## Fit: aov(formula = calificaciones ~ grupo)
## 
## $grupo
##     diff       lwr      upr     p adj
## B-A -4.0 -8.367481 0.367481 0.0738985
## C-A -0.6 -4.967481 3.767481 0.9290601
## C-B  3.4 -0.967481 7.767481 0.1365801

El tukey test revela que no hay diferencias significativas entre los grupos A y B, ni entre los grupos A y C. La diferencia más grande en las calificaciones medias se encuentra entre los grupos A y B, con una diferencia de 4 puntos y un p-valor de 0.074.


9 Regresion Lineal

Desarrollar un modelo de regresión lineal para predecir las notas del examen final de los estudiantes en base a sus notas en dos exámenes parciales.

IDAlumno = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
Parcial1 = c(78, 82, 69, 90, 75, 85, 88, 72, 67, 71)
Parcial2 = c(83, 84, 73, 95, 78, 89, 92, 76, 70, 74)
Final = c(84, 87, 74, 97, 81, 91, 95, 79, 72, 76)

1.Explora los datos obtenidos

datos_estudiantes <- data.frame(IDAlumno = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10),Parcial1 = c(78, 82, 69, 90, 75, 85, 88, 72, 67, 71),Parcial2 = c(83, 84, 73, 95, 78, 89, 92, 76, 70, 74),Final = c(84, 87, 74, 97, 81, 91, 95, 79, 72, 76))
#Los comprimimos.

# Visualiza la estructura del marco de datos
str(datos_estudiantes)
## 'data.frame':    10 obs. of  4 variables:
##  $ IDAlumno: num  1 2 3 4 5 6 7 8 9 10
##  $ Parcial1: num  78 82 69 90 75 85 88 72 67 71
##  $ Parcial2: num  83 84 73 95 78 89 92 76 70 74
##  $ Final   : num  84 87 74 97 81 91 95 79 72 76
# Comprueba si hay valores faltantes
summary(datos_estudiantes)
##     IDAlumno        Parcial1        Parcial2         Final      
##  Min.   : 1.00   Min.   :67.00   Min.   :70.00   Min.   :72.00  
##  1st Qu.: 3.25   1st Qu.:71.25   1st Qu.:74.50   1st Qu.:76.75  
##  Median : 5.50   Median :76.50   Median :80.50   Median :82.50  
##  Mean   : 5.50   Mean   :77.70   Mean   :81.40   Mean   :83.60  
##  3rd Qu.: 7.75   3rd Qu.:84.25   3rd Qu.:87.75   3rd Qu.:90.00  
##  Max.   :10.00   Max.   :90.00   Max.   :95.00   Max.   :97.00
# Visualiza la relación entre variables
plot(Parcial1, Final, main = "Parcial 1 vs. Final")

plot(Parcial2, Final, main = "Parcial 2 vs. Final")

2.Ajustamos el modelo

# Ajusta el modelo de regresión lineal
modelo <- lm(Final ~ Parcial1 + Parcial2, data = datos_estudiantes)
print(modelo)
## 
## Call:
## lm(formula = Final ~ Parcial1 + Parcial2, data = datos_estudiantes)
## 
## Coefficients:
## (Intercept)     Parcial1     Parcial2  
##      0.6570       0.6043       0.4421

3.Evaluamos el modelo

# Resumen del modelo ajustado
summary(modelo)
## 
## Call:
## lm(formula = Final ~ Parcial1 + Parcial2, data = datos_estudiantes)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -0.6288 -0.3656 -0.1866  0.3554  1.2320 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)  
## (Intercept)   0.6570     2.0939   0.314   0.7628  
## Parcial1      0.6043     0.2573   2.349   0.0512 .
## Parcial2      0.4421     0.2461   1.797   0.1154  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.6574 on 7 degrees of freedom
## Multiple R-squared:  0.9956, Adjusted R-squared:  0.9943 
## F-statistic: 792.9 on 2 and 7 DF,  p-value: 5.627e-09
# Visualiza los residuos
plot(modelo, main = "Residuos vs. Valores Ajustados")

# Evalúa el desempeño predictivo del modelo
predicciones <- predict(modelo)
ecm <- mean((predicciones - datos_estudiantes$Final)^2)  # Error Cuadrático Medio
recm <- sqrt(ecm)  # Raíz Cuadrada del Error Cuadrático Medio
print(paste0("ECM:", ecm))
## [1] "ECM:0.302541508208886"
print(paste0("RECM:", recm))
## [1] "RECM:0.550037733440976"

4.Validación del modelo

# Dividimos los datos en un 80% para entrenamiento y un 20% para prueba
set.seed(123)  # Fijar semilla para reproducibilidad
indice <- sample(1:nrow(datos_estudiantes), nrow(datos_estudiantes), replace = FALSE)

# Conjunto de entrenamiento
datos_entrenamiento <- datos_estudiantes[indice[1:(nrow(datos_estudiantes) * 0.8)], ]
datos_prueba <- datos_estudiantes[indice[(nrow(datos_estudiantes) * 0.2 + 1):nrow(datos_estudiantes)], ]

# Ajustamos el modelo de regresión lineal en el conjunto de entrenamiento
modelo_entrenamiento <- lm(Final ~ Parcial1 + Parcial2, data = datos_entrenamiento)

# Predecir las notas del examen final en el conjunto de prueba
predicciones_prueba <- predict(modelo_entrenamiento, newdata = datos_prueba)

# Calcular el error cuadrático medio (MSE) en el conjunto de prueba
ecm_prueba <- mean((predicciones_prueba - datos_prueba$Final)^2)

# Imprimir el ECM en el conjunto de prueba
print(ecm_prueba)
## [1] 0.3429444

***

10 Banco de Datos

install.packages("datasets")
## Warning: package 'datasets' is in use and will not be installed

10.1 Descripcion/Resumen general de los datos

Usaremos el comando sumary para ver los datos de la base de datos y ver si falta alguno.

summary(mtcars)
##       mpg             cyl             disp             hp       
##  Min.   :10.40   Min.   :4.000   Min.   : 71.1   Min.   : 52.0  
##  1st Qu.:15.43   1st Qu.:4.000   1st Qu.:120.8   1st Qu.: 96.5  
##  Median :19.20   Median :6.000   Median :196.3   Median :123.0  
##  Mean   :20.09   Mean   :6.188   Mean   :230.7   Mean   :146.7  
##  3rd Qu.:22.80   3rd Qu.:8.000   3rd Qu.:326.0   3rd Qu.:180.0  
##  Max.   :33.90   Max.   :8.000   Max.   :472.0   Max.   :335.0  
##       drat             wt             qsec             vs        
##  Min.   :2.760   Min.   :1.513   Min.   :14.50   Min.   :0.0000  
##  1st Qu.:3.080   1st Qu.:2.581   1st Qu.:16.89   1st Qu.:0.0000  
##  Median :3.695   Median :3.325   Median :17.71   Median :0.0000  
##  Mean   :3.597   Mean   :3.217   Mean   :17.85   Mean   :0.4375  
##  3rd Qu.:3.920   3rd Qu.:3.610   3rd Qu.:18.90   3rd Qu.:1.0000  
##  Max.   :4.930   Max.   :5.424   Max.   :22.90   Max.   :1.0000  
##        am              gear            carb      
##  Min.   :0.0000   Min.   :3.000   Min.   :1.000  
##  1st Qu.:0.0000   1st Qu.:3.000   1st Qu.:2.000  
##  Median :0.0000   Median :4.000   Median :2.000  
##  Mean   :0.4062   Mean   :3.688   Mean   :2.812  
##  3rd Qu.:1.0000   3rd Qu.:4.000   3rd Qu.:4.000  
##  Max.   :1.0000   Max.   :5.000   Max.   :8.000

Se analiza un conjunto de datos de automóviles que incluye variables como el consumo de combustible (mpg), la potencia del motor (hp), el número de cilindros (cyl), entre otros. Se observa que la media de consumo de combustible es de aproximadamente 20.09 mpg y la media de potencia del motor es de alrededor de 146.7 hp.

10.2 Gráficos

10.2.1 Gráfico de dispersión de mpg (millas por galón) entre hp(caballos de fuerza)

plot(mtcars$hp, mtcars$mpg, xlab = "Caballos", ylab = "Millas por Gallon", main = "Gráfico de dispersión: Hp entre MPG")
abline(lm(mtcars$mpg~mtcars$hp))

10.2.2 Histograma del consumo de combustible (mpg)

hist(mtcars$mpg, xlab = "Millas por Gallon", main = "Histogram: MPG Distribucion")

10.2.3 Boxplot de mpg por número de cilindros

boxplot(mpg ~ cyl, data = mtcars, xlab = "Numero de Cilindros", ylab = "Millas por Gallon", main = "Boxplot: MPG por Nº de cilindros")

10.3 Definición de Objetivos

Investiga la relacion que hay entre el combustible y la potencia del motor. Basado en el análisis descriptivo inicial, nuestro objetivo principal es investigar la relación entre el consumo de combustible (mpg) y la potencia del motor (hp).

10.4 Filtrado de Datos

mtcars_filtered <- mtcars[mtcars$cyl == 6, ]
mtcars_filtered
##                 mpg cyl  disp  hp drat    wt  qsec vs am gear carb
## Mazda RX4      21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4
## Mazda RX4 Wag  21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4
## Hornet 4 Drive 21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1
## Valiant        18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1
## Merc 280       19.2   6 167.6 123 3.92 3.440 18.30  1  0    4    4
## Merc 280C      17.8   6 167.6 123 3.92 3.440 18.90  1  0    4    4
## Ferrari Dino   19.7   6 145.0 175 3.62 2.770 15.50  0  1    5    6

La salida presenta los detalles de los automóviles de 6 cilindros, incluyendo el consumo de combustible, la potencia del motor y otras características relevantes. Esto permite un análisis más específico.

10.5 Planteamiento de Hipótesis

Nuestra hipótesis inicial es que existe una relación negativa entre el consumo de combustible y la potencia del motor en los automóviles estudiados.

10.6 Contrastar Hipótesis Mediante Test Estadísticos

correlacion <- cor.test(mtcars_filtered$mpg, mtcars_filtered$hp, method = "pearson")
print(correlacion)
## 
##  Pearson's product-moment correlation
## 
## data:  mtcars_filtered$mpg and mtcars_filtered$hp
## t = -0.28645, df = 5, p-value = 0.786
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  -0.8032622  0.6922293
## sample estimates:
##        cor 
## -0.1270678

Se realiza un test de correlación de Pearson entre el consumo de combustible y la potencia del motor en los automóviles de 6 cilindros. El resultado sugiere una correlación negativa, aunque no estadísticamente significativa (p-value = 0.786).

10.7 Conclusiones

El análisis exploratorio de datos revela una correlación negativa significativa (-0.804) entre el consumo de combustible (mpg) y la potencia del motor (hp) en los automóviles de 6 cilindros. Esto respalda nuestra hipótesis inicial de que los automóviles con motores más potentes tienden a tener un menor rendimiento de combustible, es decir, que usa mas combustible para recorrer la misma distancia comparado con uno que tenga mayor rendimiento de combustible.