climate <- read_excel("C:/Users/user/Downloads/climate.xlsx")
head(climate)
nrow(climate)
## [1] 308
str(climate)
## tibble [308 × 11] (S3: tbl_df/tbl/data.frame)
## $ Year : num [1:308] 1983 1983 1983 1983 1983 ...
## $ Month : num [1:308] 5 6 7 8 9 10 11 12 1 2 ...
## $ MEI : chr [1:308] "2556.0" "2167.0" "1741.0" "1.13" ...
## $ CO2 : chr [1:308] "345.96" "345.52" "344.15" "342.25" ...
## $ CH4 : chr [1:308] "1638.59" "1633.71" "1633.22" "1631.35" ...
## $ N2O : chr [1:308] "303677.0" "303746.0" "303795.0" "303839.0" ...
## $ CFC-11 : chr [1:308] "191324.0" "192057.0" "192818.0" "193602.0" ...
## $ CFC-12 : chr [1:308] "350113.0" "351848.0" "353725.0" "355633.0" ...
## $ TSI : chr [1:308] "1.3661024E7" "1.3661208E7" "1366285.0" "1.3664202E7" ...
## $ Aerosols: chr [1:308] "863.0" "794.0" "731.0" "673.0" ...
## $ Temp : chr [1:308] "109.0" "118.0" "137.0" "176.0" ...
numeric_vars <- climate %>% select(where(is.numeric))
if (ncol(numeric_vars) > 0) {
climate_long <- pivot_longer(
data = numeric_vars,
cols = everything(),
names_to = "Variable",
values_to = "Valor"
)
ggplot(climate_long, aes(x = Valor)) +
facet_wrap(~Variable, scales = "free") +
geom_histogram(bins = 30, fill = "steelblue", color = "black") +
theme_minimal()
} else {
message("No hay variables numéricas para graficar.")
}
climate$Temp <- as.numeric(climate$Temp)
Q1 <- quantile(climate$Temp, 0.25, na.rm = TRUE)
Q3 <- quantile(climate$Temp, 0.75, na.rm = TRUE)
IQR <- Q3 - Q1
climate <- filter(climate, Temp >= (Q1 - 1.5 * IQR) & Temp <= (Q3 + 1.5 * IQR))
colSums(is.na(climate))
## Year Month MEI CO2 CH4 N2O CFC-11 CFC-12
## 0 0 1 1 2 1 1 0
## TSI Aerosols Temp
## 2 0 0
climate <- climate %>%
mutate(across(where(is.numeric), ~ ifelse(is.na(.), mean(., na.rm = TRUE), .)))
climate[which.min(climate$Temp), c("Year", "Temp")]
climate$CO2 <- as.numeric(climate$CO2)
hist(climate$CO2, col = "skyblue", main = "Histograma de CO2")
qqnorm(climate$CO2)
qqline(climate$CO2, col = "red")
shapiro.test(climate$CO2)
##
## Shapiro-Wilk normality test
##
## data: climate$CO2
## W = 0.96393, p-value = 6.493e-07
ggplot(climate, aes(x = Year, y = CO2)) +
geom_line(color = "darkgreen") +
labs(title = "Evolución del CO2", x = "Año", y = "CO2")
climate %>% group_by(Month) %>% summarise(temp_prom = mean(Temp)) %>% arrange(desc(temp_prom)) %>% slice(1)
climate %>% group_by(Month) %>% summarise(temp_prom = mean(Temp)) %>% arrange(temp_prom) %>% slice(1)
climate %>% group_by(Month) %>% summarise(co2_prom = mean(CO2)) %>% arrange(desc(co2_prom)) %>% slice(1)
climate %>% group_by(Month) %>% summarise(co2_prom = mean(CO2)) %>% arrange(co2_prom) %>% slice(1)
climate %>% group_by(Month) %>% summarise(ch4_prom = mean(CH4)) %>% arrange(desc(ch4_prom)) %>% slice(1)
climate %>% group_by(Month) %>% summarise(ch4_prom = mean(CH4)) %>% arrange(ch4_prom) %>% slice(1)
El análisis exploratorio realizado a partir del conjunto de datos climate.xlsx permitió aplicar de forma práctica los conceptos fundamentales del preprocesamiento y visualización de datos en R. A través de técnicas de limpieza, imputación y detección de valores atípicos, se preparó una base de datos confiable para su análisis. Posteriormente, mediante herramientas gráficas como histogramas, boxplots y líneas de tendencia, se identificaron patrones relevantes en variables climáticas como la temperatura, el CO₂ y el CH₄.
Los resultados evidenciaron, por ejemplo, qué meses registran los valores promedio más altos y bajos para cada variable, y permitieron evaluar la distribución de datos como el CO₂, cuya normalidad fue cuestionada estadísticamente. Asimismo, se observó una tendencia creciente en los niveles de CO₂ a lo largo del tiempo, lo que refleja un posible impacto del cambio climático.
Este trabajo no solo reforzó habilidades técnicas en R, sino también la capacidad de interpretar datos climáticos desde un enfoque crítico y aplicado. En conjunto, se alcanzaron satisfactoriamente los objetivos de la unidad, fortaleciendo las competencias analíticas necesarias para futuras aplicaciones de minería de datos en entornos reales.