0% encontró este documento útil (0 votos)
22 vistas8 páginas

Análisis Estadístico en R: Ejercicios

BUENAAAA
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
22 vistas8 páginas

Análisis Estadístico en R: Ejercicios

BUENAAAA
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

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))

También podría gustarte