...

1 IDENTIFICACION Y JUSTIFICACIÓN DE LA VARIABLE

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.”

2 CARGAR DATOS

Importamos el archivo “Mundial.csv” desde una ruta local y lo almacena en el objeto datos, usando espacios o tabulaciones como separador.

# Importación de datos

## setwd("C:/Users/ronal/OneDrive/Desktop")

datos <- read.csv("Mundial.csv", header = TRUE, sep = ",", dec = ".")
View(datos)

3 EXTRAER LA VARIABLE

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

4 TABLA DE FRECUENCIA

# 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")
Tabla N°1: Tabla de frecuencia Tipo de Curvatura
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

5 GRÁFICAS: TIPO DE CURVATURA

5.1 Gráfica de distribución de frecuencia (ni)

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

5.2 Gráfica de distribución de frecuencia(hi)

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

6 MODELO DE PROBABILIDAD

# 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