…
La variable Tipo de Curvatura se define como una variable cualitativa nominal, ya que categoriza los registros según la configuración geométrica o forma física que presentan. Al ser una variable nominal, no establece un orden de magnitud ni una jerarquía numérica, sino que sirve como un eje de segmentación fundamental para observar cómo varían otros factore.”
Importamos el archivo “Mundial.csv” desde una ruta local y lo almacena en el objeto datos, usando espacios o tabulaciones como separador.
Extraemos la variable Tipo de Curva, omitimos las celdas en blanco o valores iguales a cero y verificamos el tamaño muestral
# 1. Eliminar valores nulo
curvature_type <- na.omit(datos$curvature_type)
# 2. Eliminar celdas vacías
curvature_type <- curvature_type[curvature_type != ""]
# 3. Contar el total de registros válidos para esta variable
n_curvatura <- length(curvature_type)
cat("Registros válidos de curvature_type:", n_curvatura)## Registros válidos de curvature_type: 58978
# 1. Crear las frecuencias ni (absoluta) y hi (relativa %)
ni_curv <- table(curvature_type)
hi_curv <- prop.table(ni_curv) * 100
# 2. Construir la tabla base
tabla_frecuencia_curv <- data.frame(
Tipo_de_Curvatura = names(ni_curv),
ni = as.vector(ni_curv),
hi = round(as.vector(hi_curv), 2)
)
# 3. Ordenar por frecuencia de mayor a menor
tabla_frecuencia_curv <- tabla_frecuencia_curv[order(-tabla_frecuencia_curv$ni), ]
# 4. Agregar la fila de TOTAL
fila_total_curv <- data.frame(
Tipo_de_Curvatura = "**TOTAL**",
ni = sum(tabla_frecuencia_curv$ni),
hi = round(sum(tabla_frecuencia_curv$hi), 0)
)
# 5. Unir la tabla con su fila de total
tabla_final_curv <- rbind(tabla_frecuencia_curv, fila_total_curv)
# 6. Mostrar resultado final con kable
knitr::kable(tabla_final_curv,
caption = "Tabla N°1: Tabla de frecuencia Tipo de Curvatura",
col.names = c("Tipo de Curvatura", "Frecuencia (ni)", "Porcentaje (hi %)"),
align = "lcc")| Tipo de Curvatura | Frecuencia (ni) | Porcentaje (hi %) | |
|---|---|---|---|
| 3 | Superficies planas o intermedias | 47849 | 81.13 |
| 1 | Superficies cóncavas / Valles | 6323 | 10.72 |
| 2 | Superficies convexas / Crestas | 4806 | 8.15 |
| 11 | TOTAL | 58978 | 100.00 |
# 1. Filtramos el TOTAL
grafico_curv_ni <- tabla_final_curv %>%
filter(!grepl("TOTAL", Tipo_de_Curvatura, ignore.case = TRUE)) %>%
mutate(Tipo_de_Curvatura = droplevels(as.factor(Tipo_de_Curvatura)))
# 2. Generar la gráfica
ggplot(grafico_curv_ni, aes(x = reorder(Tipo_de_Curvatura, -ni), y = ni)) +
geom_bar(stat = "identity", fill = "skyblue", color = "#5D6D7E") +
labs(
title = "Gráfica N° 1: Distribución general por Tipo de Curvatura",
x = "Tipo de Curvatura",
y = "Cantidad"
) +
theme_minimal() +
theme(
axis.text.x = element_text(angle = 45, hjust = 1, size = 10),
panel.grid.minor = element_blank(),
panel.grid.major.x = element_blank()
)# 1. Filtramos el TOTAL eliminando la última fila
grafico_curv_hi <- tabla_final_curv[-nrow(tabla_final_curv), ]
# 2. Generar la gráfica de porcentajes (hi)
ggplot(grafico_curv_hi, aes(x = reorder(Tipo_de_Curvatura, -hi), y = hi)) +
geom_bar(stat = "identity", fill = "skyblue", color = "#5D6D7E") +
labs(
title = "Gráfica N° 2: Distribución Porcentual por Tipo de Curvatura",
x = "Tipo de Curvatura",
y = "Porcentaje (%)"
) +
theme_minimal() +
theme(
axis.text.x = element_text(angle = 45, hjust = 1, size = 10),
panel.grid.minor = element_blank(),
panel.grid.major.x = element_blank()
)# 1. Preparar datos y calcular proporción
grafico_curv_prop <- tabla_final_curv[-nrow(tabla_final_curv), ]
grafico_curv_prop$proporcion <- grafico_curv_prop$hi / 100
# 2. Generar la gráfica de probabilidad (escala 0 a 1 o ajustada)
ggplot(grafico_curv_prop, aes(x = reorder(Tipo_de_Curvatura, -proporcion), y = proporcion)) +
geom_bar(stat = "identity", fill = "skyblue", color = "#5D6D7E") +
# Ajustamos el eje Y (puedes cambiar 0.7 según tus datos reales)
scale_y_continuous(limits = c(0, 1), breaks = seq(0, 1, by = 0.1)) +
labs(
title = "Gráfica N° 3: Distribución de Probabilidad por Tipo de Curvatura",
x = "Tipo de Curvatura",
y = "Probabilidad"
) +
theme_minimal() +
theme(
axis.text.x = element_text(angle = 45, hjust = 1, size = 10),
panel.grid.minor = element_blank(),
panel.grid.major.x = element_blank()
)Análisis Probabilístico: Tipo de Curvatura
Pregunta A: ¿Cuál es la probabilidad de que una planta solar seleccionada al azar se encuentre en “Superficies planas o intermedias”?
fila_plana <- which(grepl("planas", tabla_final_curv$Tipo_de_Curvatura, ignore.case = TRUE))
fila_total_curv <- which(grepl("TOTAL", tabla_final_curv$Tipo_de_Curvatura, ignore.case = TRUE))
# 2. Extraemos los valores ni usando esas posiciones
ni_plana <- tabla_final_curv$ni[fila_plana]
ni_total_curv <- tabla_final_curv$ni[fila_total_curv]
# 3. Calculamos la probabilidad
p_plana <- ni_plana / ni_total_curv
# 4. Mostrar el resultado
cat("La probabilidad calculada es:", round(p_plana, 4))## La probabilidad calculada es: 0.8113
Pregunta B: ¿Cuál es la probabilidad de que la planta NO esté en una superficie plana (es decir, que esté en Valles o Crestas)?
# 1. Calculamos la suma de las frecuencias
indices_no_planas <- !grepl("planas|TOTAL", tabla_final_curv$Tipo_de_Curvatura, ignore.case = TRUE)
ni_no_planas <- sum(tabla_final_curv$ni[indices_no_planas])
# 2. Obtenemos el total de la tabla
total_gral_curv <- tabla_final_curv$ni[grepl("TOTAL", tabla_final_curv$Tipo_de_Curvatura, ignore.case = TRUE)]
# 3. Calculamos la probabilidad
p_valles_crestas <- ni_no_planas / total_gral_curv
# 4. Mostrar el resultado
cat("La probabilidad es:", round(p_valles_crestas, 4))## La probabilidad es: 0.1887