Ejercicio número 1
library(ggplot2)
# Data
respuestas <- c("Si", "No", "Ninguna opinion")
cantidad <- c(58, 42, 20)
datos <- data.frame(respuestas, cantidad)
# Gráfica de barras
ggplot(datos, aes(x=respuestas, y=cantidad, fill=respuestas)) +
geom_bar(stat="identity") +
labs(title="Respuestas al cuestionario", x="Respuestas", y="Cantidad") +
theme_minimal()
Ejercicio numero 2
# Crear un data frame con los datos de las compras iniciales
compras <- data.frame(
compra_inicial = c(140, 82, 265, 168, 90, 114, 172, 230, 142, 86, 125, 235, 212, 171, 149, 156, 162, 118, 139, 149,
132, 105, 162, 126, 216, 195, 127, 161, 135, 172, 220, 229, 129, 87, 128, 126, 175, 127, 149, 126, 121, 118, 172, 126)
# a. Intervalo de clase sugerido (5 clases, límite inferior 80)
intervalo_clase <- 37 # Calculado previamente
limite_inferior <- 80
# Crear los límites de las clases
limites_clases <- seq(limite_inferior, max(compras$compra_inicial) + intervalo_clase, by = intervalo_clase)
# Calcular la frecuencia de cada clase
frecuencias <- hist(compras$compra_inicial, breaks = limites_clases, plot = FALSE)$counts
# Crear un data frame con la distribución de frecuencias
distribucion_frecuencias <- data.frame(
clase = 1:length(frecuencias),
limite_inferior = limites_clases[1:(length(limites_clases) - 1)],
limite_superior = limites_clases[2:length(limites_clases)],
frecuencia = frecuencias
# Imprimir la distribución de frecuencias
print(distribucion_frecuencias)
# b. Mejor intervalo de clase (opcional)
# Puedes experimentar con diferentes tamaños de intervalo y observar cómo afecta la distribución de frecuencias
# Por ejemplo:
# intervalos_prueba <- c(30, 40)
# for (intervalo in intervalos_prueba) {
# # ... Calcular la distribución de frecuencias con el nuevo intervalo ...
# # ... Imprimir la distribución de frecuencias ...
#}
# c. Gráfica de barras en R
library(ggplot2)
ggplot(distribucion_frecuencias, aes(x = factor(clase), y = frecuencia)) +
geom_bar(stat = "identity", fill = "skyblue") +
labs(title = "Distribución de Frecuencias de Compras Iniciales", x = "Clase", y = "Frecuencia") +
theme_minimal()
Ejercicio numero 3
# Datos de la distribución
puntuaciones <- c(100, 120, 140, 160, 180)
frecuencias <- c(6, 17, 38, 15, 4)
# Crear el histograma
hist(puntuaciones, breaks = puntuaciones, freq = TRUE, main = "Histograma de Puntuaciones", xlab =
"Puntuaciones", ylab = "Frecuencia")
# Crear el polígono de frecuencias
plot(puntuaciones, frecuencias, type = "o", main = "Polígono de Frecuencias", xlab = "Puntuaciones", ylab =
"Frecuencia")
Ejercicio numero 4
# Datos de la tabla
clases <- c("10-19", "20-29", "30-39", "40-49", "50-59")
frecuencia <- c(10, 14, 17, 7, 2)
# Frecuencia acumulada
frecuencia_acumulada <- cumsum(frecuencia)
# Frecuencia relativa acumulada
frecuencia_relativa_acumulada <- cumsum(frecuencia) / sum(frecuencia)
# Crear un data frame con la distribución de frecuencia acumulada y frecuencia relativa acumulada
distribucion <- data.frame(clases, frecuencia, frecuencia_acumulada, frecuencia_relativa_acumulada)
# Imprimir la distribución
print(distribucion)
Ejercicio numero 5
# Datos de precipitación
precipitacion <- c(68, 72, 50, 70, 65, 83, 77, 78, 80, 93, 71, 74, 60, 84, 72, 84, 73, 81, 84, 92, 77, 57, 70, 59, 85, 74, 78,
79, 91, 102, 83, 67, 66, 75, 79, 82, 93, 90, 101, 80, 79, 69, 76, 94, 71, 97, 95, 83, 86, 69)
# Crear la distribución de frecuencia
# En este caso, usaremos un intervalo de clase de 10
intervalo <- 10
frecuencias <- hist(precipitacion, breaks = seq(min(precipitacion), max(precipitacion) + intervalo, by = intervalo), plot
= FALSE)$counts
# Crear un data frame con la distribución de frecuencia
distribucion_frecuencia <- data.frame(
clase = 1:length(frecuencias),
limite_inferior = seq(min(precipitacion), max(precipitacion) + intervalo, by = intervalo)[1:(length(frecuencias))],
limite_superior = seq(min(precipitacion), max(precipitacion) + intervalo, by = intervalo)[2:(length(frecuencias) + 1)],
frecuencia = frecuencias
# Imprimir la distribución de frecuencia
print(distribucion_frecuencia)
# Crear el histograma
hist(precipitacion, breaks = seq(min(precipitacion), max(precipitacion) + intervalo, by = intervalo), main =
"Histograma de Precipitacion", xlab = "Precipitacion (mm)", ylab = "Frecuencia")
# Crear el polígono de frecuencias
plot(distribucion_frecuencia$limite_superior, distribucion_frecuencia$frecuencia, type = "o", main = "Polígono de
Frecuencias", xlab = "Precipitacion (mm)", ylab = "Frecuencia")
MEDIDAS DE TENDENCIA CENTRAL O MEDIDAS DE POSICION
ejercicio 1
# Datos de la muestra
datos <- c(27, 25, 20, 15, 30, 34, 28, 25)
# Ordenar los datos de menor a mayor
datos_ordenados <- sort(datos)
# Calcular los percentiles
percentil_20 <- quantile(datos_ordenados, probs = 0.20)
percentil_25 <- quantile(datos_ordenados, probs = 0.25)
percentil_65 <- quantile(datos_ordenados, probs = 0.65)
percentil_75 <- quantile(datos_ordenados, probs = 0.75)
# Imprimir los resultados
print(paste("Percentil 20:", percentil_20))
print(paste("Percentil 25:", percentil_25))
print(paste("Percentil 65:", percentil_65))
print(paste("Percentil 75:", percentil_75))
ejercicio 2
# Datos de las participaciones de los accionistas
participaciones <- c(21.07, 23.24, 26.28, 28.55, 30.09, 29.15, 29.10, 28.92, 29.90, 30.34, 32.41)
# Calcular la media anual
media_anual <- mean(participaciones)
# Imprimir el resultado
print(paste("La media anual de las participaciones de los accionistas es:", media_anual))
ejercicio 3
# Datos de la tabla
tipo_entrega <- c("Inmediata", "El mismo día", "Dentro de cinco días")
numero_entregas <- c(100, 60, 40)
utilidad_por_entrega <- c(70, 100, 160)
# Calcular la media ponderada de la ganancia por entrega
media_ponderada <- sum(numero_entregas * utilidad_por_entrega) / sum(numero_entregas)
# Imprimir el resultado
print(paste("La media ponderada de la ganancia por entrega es:", media_ponderada))
# Calcular la nueva utilidad por entrega si se eliminan las entregas inmediatas
nueva_utilidad <- (160 * 100 + 160 * 40) / (100 + 40)
# Imprimir el resultado
print(paste("La nueva utilidad por entrega sería:", nueva_utilidad))
ejercicio 4
# Ingresos netos de la muestra
ingresos <- c(96.7, 67.1, 89.7, 96.7, 91.4, 96.7, 82.6)
# a. Ingreso neto modal
moda <- as.numeric(names(sort(table(ingresos), decreasing = TRUE)[1]))
print(paste("El ingreso neto modal es:", moda, "millones de dólares"))
# b. ¿Es la moda un promedio representativo?
print("La moda no siempre es un promedio representativo. En este caso, la moda es el valor más alto de la muestra y
no refleja el promedio general de los ingresos.")
# c. Mediana de los ingresos
mediana <- median(ingresos)
print(paste("La mediana de los ingresos es:", mediana, "millones de dólares"))
# d. Media de los ingresos
media <- mean(ingresos)
print(paste("La media de los ingresos es:", media, "millones de dólares"))
# e. Medida de tendencia central representativa
print("En este caso, la mediana parece ser la medida de tendencia central más representativa. Esto se debe a que la
moda es el valor más alto y no refleja la tendencia central, mientras que la media se ve afectada por el valor atípico
de 67.1 millones. La mediana, en este caso, proporciona una mejor representación del ingreso neto típico de la
muestra.")
ejercicio 5
# Tasas de ocupación en formato decimal
tasas_ocupacion <- c(1, 0.9, 0.8, 0.2, 0.62)
# Calcular la media geométrica
media_geometrica <- prod(tasas_ocupacion)^(1/length(tasas_ocupacion))
# Convertir a porcentaje
media_geometrica_porcentaje <- media_geometrica * 100
# Imprimir el resultado
print(paste("La media geométrica de la tasa de ocupación es:", media_geometrica_porcentaje, "%"))
ejercicio 6
# Datos de la tabla
ingresos <- c("Menores de $20000", "$20000 - $29999", "$30000 - $39999", "$40000 - $49999", "$50000 - $59999",
"$60000 y mayores")
porcentaje_lima <- c(18.3, 21.2, 18.4, 15.1, 11.3, 15.7)
# a. Mediana
mediana_index <- ceiling(length(porcentaje_lima) / 2)
mediana <- paste(ingresos[mediana_index], ingresos[mediana_index + 1], sep = " y ")
print(paste("La mediana de los ingresos en Lima se encuentra entre", mediana))
# b. Moda
moda_index <- which.max(porcentaje_lima)
moda <- ingresos[moda_index]
print(paste("El valor modal de los ingresos en Lima es", moda))
ejercicio 7
($0.51 + $0.80 + $0.75 + $1.39 + $0.51 + $1.05 + $1.05 + $1.79) / 8 = $0.98
# Datos de la tabla
ingresos_netos <- c(0.51, 0.80, 0.75, 1.39, 0.51, 1.05, 1.05, 1.79)
# a. Ingreso neto medio por acción
media <- mean(ingresos_netos)
print(paste("El ingreso neto medio por acción es:", media))
# b. Mediana del ingreso neto por acción
mediana <- median(ingresos_netos)
print(paste("La mediana del ingreso neto por acción es:", mediana))
# c. Ingreso neto modal por acción
moda <- as.numeric(names(sort(table(ingresos_netos), decreasing = TRUE)[1]))
print(paste("El ingreso neto modal por acción es:", moda))
# d. Mejor medida de tendencia central
print("La mediana es una mejor medida de tendencia central en este caso porque no se ve afectada por valores
atípicos.")
ejercicio 8
# Datos de la tabla
edad <- c("18-19", "20-24", "25-29", "30-34", "35-44", "45-54", "55-64", "65-74", "75 y mayores")
hombres <- c(5, 80, 174, 210, 385, 450, 295, 174, 56)
mujeres <- c(9, 210, 303, 315, 656, 656, 409, 200, 69)
# a. Mediana de la edad de los hombres
mediana_hombres_index <- which(cumsum(hombres) >= (sum(hombres) + 1) / 2)[1]
mediana_hombres <- edad[mediana_hombres_index]
print(paste("La mediana de la edad de los hombres se estima en el rango de", mediana_hombres))
# b. Mediana de la edad de las mujeres
mediana_mujeres_index <- which(cumsum(mujeres) >= (sum(mujeres) + 1) / 2)[1]
mediana_mujeres <- edad[mediana_mujeres_index]
print(paste("La mediana de la edad de las mujeres se estima en el rango de", mediana_mujeres))
# c. Valor modal para hombres y mujeres
moda_hombres_index <- which.max(hombres)
moda_hombres <- edad[moda_hombres_index]
print(paste("El rango modal para los hombres es", moda_hombres))
moda_mujeres_index <- which.max(mujeres)
moda_mujeres <- edad[moda_mujeres_index]
print(paste("El rango modal para las mujeres es", moda_mujeres))
ejercicio 9
Media Aritmética = (25 mph + 50 mph + 75 mph) / 3 = 50 mph
Media Armónica = 3 / ((1/25 mph) + (1/50 mph) + (1/75 mph)) = 37.5 mph
# Velocidades del automóvil
velocidades <- c(25, 50, 75)
# Media aritmética
media_aritmetica <- mean(velocidades)
print(paste("La media aritmética de las velocidades es:", media_aritmetica, "mph"))
# Media armónica
media_armonica <- 1 / mean(1 / velocidades)
print(paste("La media armónica de las velocidades es:", media_armonica, "mph"))
# Conclusión
print("La media armónica es la velocidad promedio correcta en este caso porque considera el tiempo que el
automóvil viaja a cada velocidad.")
ejercicio 10
# Datos de la tabla
salarios <- c("$250 - $259.99", "$260.00 - $269.99", "$270.00 - $279.99", "$280.00 - $289.99", "$290.00 - $299.99",
"$300.00 - $309.99", "$310.00 - $319.99")
empleados <- c(8, 10, 16, 14, 10, 5, 2)
n <- sum(empleados)
# a) Cuartiles
Q1_posicion <- (n + 1) / 4
Q2_posicion <- (n + 1) / 2
Q3_posicion <- 3 * (n + 1) / 4
Q1 <- as.numeric(substr(salarios[which(cumsum(empleados) >= Q1_posicion)[1]], 2, 6)) + (Q1_posicion -
sum(empleados[1:(which(cumsum(empleados) >= Q1_posicion)[1] - 1)])) / empleados[which(cumsum(empleados)
>= Q1_posicion)[1]] * 10
Q2 <- as.numeric(substr(salarios[which(cumsum(empleados) >= Q2_posicion)[1]], 2, 6))
Q3 <- as.numeric(substr(salarios[which(cumsum(empleados) >= Q3_posicion)[1]], 2, 6)) + (Q3_posicion -
sum(empleados[1:(which(cumsum(empleados) >= Q3_posicion)[1] - 1)])) / empleados[which(cumsum(empleados)
>= Q3_posicion)[1]] * 10
print(paste("Q1:", Q1))
print(paste("Q2:", Q2))
print(paste("Q3:", Q3))
# b) Deciles
D1_posicion <- (n + 1) / 10
D2_posicion <- 2 * (n + 1) / 10
D9_posicion <- 9 * (n + 1) / 10
D1 <- as.numeric(substr(salarios[which(cumsum(empleados) >= D1_posicion)[1]], 2, 6)) + (D1_posicion -
sum(empleados[1:(which(cumsum(empleados) >= D1_posicion)[1] - 1)])) / empleados[which(cumsum(empleados)
>= D1_posicion)[1]] * 10
D2 <- as.numeric(substr(salarios[which(cumsum(empleados) >= D2_posicion)[1]], 2, 6)) + (D2_posicion -
sum(empleados[1:(which(cumsum(empleados) >= D2_posicion)[1] - 1)])) / empleados[which(cumsum(empleados)
>= D2_posicion)[1]] * 10
D9 <- as.numeric(substr(salarios[which(cumsum(empleados) >= D9_posicion)[1]], 2, 6)) + (D9_posicion -
sum(empleados[1:(which(cumsum(empleados) >= D9_posicion)[1] - 1)])) / empleados[which(cumsum(empleados)
>= D9_posicion)[1]] * 10
print(paste("D1:", D1))
print(paste("D2:", D2))
print(paste("D9:", D9))