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