Extraemos una carta al azar de una baraja española de 40 cartas.
\(P(O)=\frac 1 4\), donde obtenemos que \(P(O)=0.25\).
\(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\).
\(P(E / O)=\frac{P(E \cap O)}{P(O)}=0.06/0.25=0.24\).
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\).
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
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
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"))
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)
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
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
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.
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.
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
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
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.
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.
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)
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 ***
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.
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
***