Actividad 2.1

x = c(1,3,5,7,9) 
y = c(2,4,6,7,11,12)
x+1
## [1]  2  4  6  8 10
length(x)
## [1] 5
length(y)
## [1] 6
x + y 
## Warning in x + y: longitud de objeto mayor no es múltiplo de la longitud de uno
## menor
## [1]  3  7 11 14 20 13
sum(x>5)
## [1] 2
sum(x[x>5])
## [1] 16
sum(x>5 | x< 3) 
## [1] 3
y[2] 
## [1] 4
y[-2]
## [1]  2  6  7 11 12
y[x]
## [1]  2  6 11 NA NA
y[y>=8]
## [1] 11 12

Actividad 2.2

millas= c(65241,65665, 65998, 66014, 66547, 66857, 67025, 67447, 66958, 67002
)
factor_conversion= 1.609  
kms= millas * factor_conversion
print(kms)
##  [1] 104972.8 105655.0 106190.8 106216.5 107074.1 107572.9 107843.2 108522.2
##  [9] 107735.4 107806.2
diferencias = diff(millas)
print(diferencias)
## [1]  424  333   16  533  310  168  422 -489   44
#Las funciones que sirven para resumir 
media = mean(millas)
print(media)
## [1] 66475.4
mediana = median(millas)
print(mediana)
## [1] 66702
valor_minimo = min(millas)
valor_maximo = max(millas)
rango = valor_maximo - valor_minimo
percentil_25 = quantile(millas, 0.25)  # Cuantil del 25%
percentil_75 = quantile(millas, 0.75)  # Cuantil del 75%
hist(millas)

resumen = summary(millas)

Actividad 2.3

cantidades = c(47, 32, 40, 36, 49, 31, 49, 30, 49, 35, 48, 32)
costo_total =sum(cantidades)
print(costo_total)
## [1] 478
#B 
num_meses = length(cantidades)
costo_promedio_por_mes = costo_total / num_meses
print(costo_promedio_por_mes)
## [1] 39.83333
#c
cantidad_minima = min(cantidades)
cantidad_maxima = max(cantidades)
cat("Cantidad mínima pagada:", cantidad_minima, "euros\n")
## Cantidad mínima pagada: 30 euros
cat("Cantidad máxima pagada:", cantidad_maxima, "euros\n")
## Cantidad máxima pagada: 49 euros
#d 
meses <- c("Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio",
           "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre")
pagos_por_mes = data.frame(Mes = meses, Cantidad = cantidades)
print(pagos_por_mes)
##           Mes Cantidad
## 1       Enero       47
## 2     Febrero       32
## 3       Marzo       40
## 4       Abril       36
## 5        Mayo       49
## 6       Junio       31
## 7       Julio       49
## 8      Agosto       30
## 9  Septiembre       49
## 10    Octubre       35
## 11  Noviembre       48
## 12  Diciembre       32
#e
meses_mas_de_40 = sum(cantidades > 40)
cat("Número de meses en los que pagó más de 40 euros:", meses_mas_de_40, "\n")
## Número de meses en los que pagó más de 40 euros: 5
#f
gasto_total = sum(cantidades)
cantidades_mas_de_40 = cantidades[cantidades > 40]
gasto_total_mas_de_40 = sum(cantidades_mas_de_40)
porcentaje_gasto_mas_de_40 = (gasto_total_mas_de_40 / gasto_total) * 100
cat("El porcentaje del gasto total representado por los meses en los que pagó más de 40 euros es:", porcentaje_gasto_mas_de_40, "%\n")
## El porcentaje del gasto total representado por los meses en los que pagó más de 40 euros es: 50.62762 %

Actividad 2.4

datos = c(61, 88, 73, 49, 41, 72, 99, 7, 12, 13, 87, 91, 5, 17, 97)
porcentajes = (datos / sum(datos)) * 100
barplot(porcentajes, names.arg = datos, main = "Diagrama de Porcentual", xlab = "Valores", ylab = "Porcentaje")

#Diferencias entre summary(x) y fivenum(x):
#principal diferencia entre summary(x) y fivenum(x) radica en la información que proporcionan:

#summary(x) ofrece más estadísticas resumidas, incluyendo la media y el número de valores no faltantes. Es más completo y útil cuando se necesita una visión general de los datos, incluyendo la tendencia central y la dispersión.

resumen = summary(datos)

#fivenum(x) se enfoca específicamente en los cinco números resumidos: mínimo, primer cuartil, mediana, tercer cuartil y máximo. Proporciona una visión más simplificada de la distribución de los datos, centrándose en los valores extremos y en los cuartiles.

cinco_numeros = fivenum(datos)

Actividad 2.5

valores_normales = rnorm(100)

hist(valores_normales, main = "Histograma de Valores Normales", xlab = "Valores", ylab = "Frecuencia")

valores_normales_2 = rnorm(100)
hist(valores_normales_2, main = "Histograma de Valores Normales (2)", xlab = "Valores", ylab = "Frecuencia")

summary(valores_normales)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## -2.0265 -0.8569 -0.2001 -0.2005  0.4227  2.0418

Actividad 2.6

valores_binomiales <- rbinom(30, size = 5, prob = 0.9)
print(valores_binomiales)
##  [1] 4 5 4 3 5 5 4 5 5 5 3 4 4 5 5 5 5 5 4 5 5 5 4 4 5 5 5 5 5 5
barplot(table(valores_binomiales), main = "Diagrama de Barras de Valores Binomiales",
        xlab = "Número de Éxitos", ylab = "Frecuencia")

resumen_binomial <- summary(valores_binomiales)
print(resumen_binomial)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##     3.0     4.0     5.0     4.6     5.0     5.0

Actividad 2.7

fallos <- c(0, 1, 0, NA, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 3, 0, 0, 0, 0, 0, 2, 0, 1)
barplot(table(fallos), main = "Diagrama de Barras de Número de Fallos",
        xlab = "Número de Fallos", ylab = "Frecuencia")

fallos = fallos[!is.na(fallos)]
media_errores = mean(fallos)
print(media_errores)
## [1] 0.4545455

Actividad 2.8

#punto 2.8
#Mediante c()

P1 <- c(3, 3, 3, 4, 3, 4, 3, 4, 4, 3)
P2 <- c(5, 5, 2, 2, 5, 2, 2, 5, 5, 2)
P3 <- c(1, 3, 1, 3, 3, 3, 1, 3, 1, 1)
#data frame

data_encuesta <- data.frame(
  Estudiante = 1:10,
  P1 = c(3, 3, 3, 4, 3, 4, 3, 4, 4, 3),
  P2 = c(5, 5, 2, 2, 5, 2, 2, 5, 5, 2),
  P3 = c(1, 3, 1, 3, 3, 3, 1, 3, 1, 1)
)

#Mediante scan()
# Crear un data frame a partir de una entrada de texto
entrada <- "
Estudiante P1 P2 P3
1 3 5 1
2 3 5 3
3 3 2 1
4 4 2 3
5 3 5 3
6 4 2 3
7 3 2 1
8 4 5 3
9 4 5 1
10 3 2 1
"
data_encuesta <- read.table(text = entrada, header = TRUE)

# B

#Tabulación de los resultados de P1
tabla_p1 <- table(data_encuesta$P1)
print(tabla_p1)
## 
## 3 4 
## 6 4
#Tabulación de los resultados de P2
tabla_p2 <- table(data_encuesta$P2)
print(tabla_p2)
## 
## 2 5 
## 5 5
#Tabulación de los resultados de P3
tabla_p3 <- table(data_encuesta$P3)
print(tabla_p3)
## 
## 1 3 
## 5 5
# C

#Tabla de contingencia cruzada entre P1 y P2
tabla_p1_p2 <- table(data_encuesta$P1, data_encuesta$P2)
print(tabla_p1_p2)
##    
##     2 5
##   3 3 3
##   4 2 2
#Tabla de contingencia cruzada entre P1 y P3
tabla_p1_p3 <- table(data_encuesta$P1, data_encuesta$P3)
print(tabla_p1_p3)
##    
##     1 3
##   3 4 2
##   4 1 3
#Tabla de contingencia cruzada entre P2 y P3
tabla_p2_p3 <- table(data_encuesta$P2, data_encuesta$P3)
print(tabla_p2_p3)
##    
##     1 3
##   2 3 2
##   5 2 3
#Tabla de contingencia cruzada de las tres preguntas
tabla_p1_p2_p3 <- table(data_encuesta$P1, data_encuesta$P2, data_encuesta$P3)
print(tabla_p1_p2_p3)
## , ,  = 1
## 
##    
##     2 5
##   3 3 1
##   4 0 1
## 
## , ,  = 3
## 
##    
##     2 5
##   3 0 2
##   4 2 1
# D 

#Crea un data frame con las preguntas 2 y 3
preguntas_2_3 <- data_encuesta[, c("P2", "P3")]

#Crea un diagrama de barras apiladas
barplot(as.matrix(preguntas_2_3), beside = TRUE, legend = TRUE,
        main = "Diagrama de Barras Apiladas de P2 y P3",
        xlab = "Estudiantes", ylab = "Puntuación")

# E

#Crear un data frame con las tres preguntas
preguntas_todas <- data_encuesta[, c("P1", "P2", "P3")]

#Crear un diagrama de barras
barplot(as.matrix(preguntas_todas), beside = TRUE, legend = TRUE,
        main = "Diagrama de Barras de las Tres Preguntas",
        xlab = "Estudiantes", ylab = "Puntuación")

Actividad 2.9

#punto 2.9
# Generar dos vectores de datos normalmente distribuidos
vector1 = rnorm(50)
vector2 = rnorm(50)

#Prueba Shapiro-Wilk para vector1
resultado_shapiro1 = shapiro.test(vector1)
print(resultado_shapiro1)
## 
##  Shapiro-Wilk normality test
## 
## data:  vector1
## W = 0.98979, p-value = 0.9412
#Prueba de Shapiro-Wilk para vector2
resultado_shapiro2 = shapiro.test(vector2)
print(resultado_shapiro2)
## 
##  Shapiro-Wilk normality test
## 
## data:  vector2
## W = 0.98371, p-value = 0.7151
#Test de Student 
resultado_t_test = t.test(vector1, vector2)
print(resultado_t_test)
## 
##  Welch Two Sample t-test
## 
## data:  vector1 and vector2
## t = -0.61274, df = 89.718, p-value = 0.5416
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -0.5074303  0.2682116
## sample estimates:
##   mean of x   mean of y 
## -0.17982071 -0.06021135
#Vector Rnorm
vector_normal = rnorm(50)
#Vector rbinom
vector_binomial = rbinom(50, size = 10, prob = 0.5) 

#Prueba Shapiro-Wilk vector normal
resultado_shapiro_normal <- shapiro.test(vector_normal)
print(resultado_shapiro_normal)
## 
##  Shapiro-Wilk normality test
## 
## data:  vector_normal
## W = 0.98187, p-value = 0.6332
#Prueba Shapiro-Wilk  vector binomial
resultado_shapiro_binomial <- shapiro.test(vector_binomial)
print(resultado_shapiro_binomial)
## 
##  Shapiro-Wilk normality test
## 
## data:  vector_binomial
## W = 0.93415, p-value = 0.00796
#Prueba t de Student p
resultado_t_test_mixto <- t.test(vector_normal, vector_binomial)
print(resultado_t_test_mixto)
## 
##  Welch Two Sample t-test
## 
## data:  vector_normal and vector_binomial
## t = -22.323, df = 94.647, p-value < 2.2e-16
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -5.572796 -4.662503
## sample estimates:
##   mean of x   mean of y 
## -0.01764949  5.10000000