#RESUMEN
El caso de estudio se enfoca en “Pulso Climático - Perspectivas Globales sobre la Temperatura”, explorando el análisis de las temperaturas mundiales desde 1849 hasta 2013. Este período abarca desde la limitada disponibilidad de datos en el siglo XIX hasta el desarrollo de tecnologías avanzadas para medir temperaturas en la actualidad. La investigación resalta la variabilidad temporal, evidenciando fluctuaciones naturales y tendencias a largo plazo, especialmente el calentamiento global documentado en el último siglo. Se examinan las causas del cambio climático, incluyendo la actividad humana, y se destacan los impactos ambientales derivados del aumento de las temperaturas, como el derretimiento de glaciares y cambios en patrones climáticos.
Desde una perspectiva estadística, el objetivo es analizar y comprender estas tendencias, identificando patrones y causas mediante una población de estudio representada por datos climáticos globales. La muestra seleccionada se centra en capturar la variabilidad climática global, utilizando como unidad de análisis los datos individuales de temperatura recopilados entre 1849 y 2013.
En términos de variables, se identifican aspectos clave para el análisis, incluyendo el año como variable discreta, la temperatura media como variable continua, y las variables categóricas de ciudad y país que proporcionan contexto geográfico a las mediciones. En conjunto, este enfoque estadístico busca contribuir al conocimiento científico sobre el cambio climático y facilitar información relevante para la formulación de políticas y acciones destinadas a mitigar sus efectos negativos.
###Cargar el conjunto de datos
#Cargar
temperatura <- read.csv("Temperatura_Global.csv", sep=",")
Pulso Climático - “Perspectivas globales sobre la temperatura”
El análisis de las temperaturas globales desde 1849 hasta 2013 es un tema importante en el ámbito de la climatología y la ciencia ambiental. Durante este período, se han observado cambios significativos en las temperaturas a nivel mundial, lo que ha generado un considerable interés y preocupación entre científicos, formuladores de políticas y el público en general.
Durante el siglo XIX y principios del siglo XX, la disponibilidad de datos sobre temperaturas globales era limitada, y las mediciones eran menos precisas que en la actualidad. Sin embargo, a medida que avanzaba el tiempo, se establecieron redes de estaciones meteorológicas más extensas y se desarrollaron tecnologías más avanzadas para medir y registrar las temperaturas.
Algunos de los puntos importantes a considerar al analizar las temperaturas globales durante este período incluyen:
Variabilidad temporal: Se observan fluctuaciones naturales en las temperaturas globales debido a fenómenos como El Niño y La Niña, así como a oscilaciones climáticas de largo plazo.
Tendencias a largo plazo: A pesar de la variabilidad natural, hay evidencia de un aumento significativo en las temperaturas globales a lo largo del tiempo, especialmente durante el último siglo. Este fenómeno, conocido como calentamiento global, ha sido ampliamente documentado y estudiado por la comunidad científica.
Causas del cambio climático: Existen múltiples factores que contribuyen al cambio climático y al calentamiento global, incluida la actividad humana, como la quema de combustibles fósiles, la deforestación y otras actividades que liberan gases de efecto invernadero a la atmósfera.
Impactos del cambio climático: El aumento de las temperaturas globales tiene una serie de impactos en el medio ambiente, incluidos el derretimiento de los glaciares, el aumento del nivel del mar, cambios en los patrones de precipitación y la frecuencia e intensidad de eventos climáticos extremos.
El objetivo de este estudio es analizar y comprender las tendencias de las temperaturas globales desde 1849 hasta 2013, identificando los patrones de variabilidad temporal, las tendencias a largo plazo y las posibles causas del cambio climático observado durante este período. Además, se pretende evaluar los impactos del cambio climático en el medio ambiente y en la sociedad, utilizando datos científicos confiables y metodologías de investigación rigurosas. El objetivo final es contribuir al conocimiento científico sobre el cambio climático y proporcionar información relevante para la formulación de políticas y acciones dirigidas a mitigar sus efectos negativos.
La población de estudio son los datos climáticos globales recopilados desde 1849 hasta 2013, incluyendo mediciones de temperatura de diversas fuentes como estaciones meteorológicas terrestres, registros oceánicos y mediciones satelitales. Representa una amplia variedad de regiones geográficas y condiciones climáticas, y es objeto de análisis para comprender las tendencias climáticas globales y el cambio climático.
La muestra consistiría en una selección representativa de datos climáticos recopilados entre 1849 y 2013, incluyendo mediciones de temperatura de diferentes regiones geográficas y hábitats. Su objetivo es capturar la variabilidad climática global a lo largo del tiempo.
La unidad de análisis serían los datos individuales de temperatura recopilados en diferentes momentos y lugares entre 1849 y 2013. Cada punto de datos representa una observación única de la temperatura en un lugar específico y en un momento determinado, ya sea en tierra o en el océano. Estas observaciones individuales forman la base para el análisis de las tendencias climáticas globales durante el período de estudio.
Para el análisis de las temperaturas globales entre 1849 y 2013, podemos identificar varias variables y clasificarlas según su tipo
Año: Esta variable representa el año en el que se registró la temperatura media. Es una variable numérica discreta que indica el período temporal en el que se realizó la medición.
Temperatura media: Es la temperatura promedio registrada durante un año específico en una ciudad determinada. Es una variable numérica continua que indica la magnitud promedio de la temperatura durante un período de tiempo determinado.
Ciudad: Indica la ciudad donde se registró la temperatura media. Es una variable categórica que describe la ubicación específica de la medición dentro de una ciudad.
País: Indica el país al que pertenece la ciudad donde se registró la temperatura media. Es una variable categórica que describe la ubicación geográfica a nivel nacional de la medición.
datos_temperatura <- data.frame(
Año = c("2013-01-01", "2013-02-01", "2013-03-01", "2013-04-01", "2013-05-01", "2013-06-01", "2013-07-01", "2013-08-01"),
Temperatura_Media = c(19.729, 20.519, 19.970, 17.756, 16.512, 14.491, 13.343, 13.643),
Ciudad = c("Peru", "Peru", "Peru", "Peru", "Peru", "Peru", "Peru", "Peru"),
País = c("Lima", "Lima", "Lima", "Lima", "Lima", "Lima", "Lima", "Lima")
)
# Visualizar las primeras filas de los datos
head(datos_temperatura, n = 8)
## Año Temperatura_Media Ciudad País
## 1 2013-01-01 19.729 Peru Lima
## 2 2013-02-01 20.519 Peru Lima
## 3 2013-03-01 19.970 Peru Lima
## 4 2013-04-01 17.756 Peru Lima
## 5 2013-05-01 16.512 Peru Lima
## 6 2013-06-01 14.491 Peru Lima
## 7 2013-07-01 13.343 Peru Lima
## 8 2013-08-01 13.643 Peru Lima
# Verificar el nombre de la columna
colnames(datos_temperatura)
## [1] "Año" "Temperatura_Media" "Ciudad"
## [4] "País"
# Verificar la estructura de datos
str(datos_temperatura)
## 'data.frame': 8 obs. of 4 variables:
## $ Año : chr "2013-01-01" "2013-02-01" "2013-03-01" "2013-04-01" ...
## $ Temperatura_Media: num 19.7 20.5 20 17.8 16.5 ...
## $ Ciudad : chr "Peru" "Peru" "Peru" "Peru" ...
## $ País : chr "Lima" "Lima" "Lima" "Lima" ...
# Verificar si hay valores faltantes en la columna de años
sum(is.na(datos_temperatura$Año))
## [1] 0
# Tabla de frecuencia para la variable Año
tabla_frecuencia_año <- table(datos_temperatura$Año)
print(tabla_frecuencia_año)
##
## 2013-01-01 2013-02-01 2013-03-01 2013-04-01 2013-05-01 2013-06-01 2013-07-01
## 1 1 1 1 1 1 1
## 2013-08-01
## 1
# Tabla de frecuencia para la variable Temperatura Media
tabla_frecuencia_temperatura <- table(datos_temperatura$Temperatura_Media)
print(tabla_frecuencia_temperatura)
##
## 13.343 13.643 14.491 16.512 17.756 19.729 19.97 20.519
## 1 1 1 1 1 1 1 1
# Tabla de frecuencia para la variable Ciudad
tabla_frecuencia_ciudad <- table(datos_temperatura$Ciudad)
print(tabla_frecuencia_ciudad)
##
## Peru
## 8
# Tabla de frecuencia para la variable País
tabla_frecuencia_pais <- table(datos_temperatura$País)
print(tabla_frecuencia_pais)
##
## Lima
## 8
# Cargar la biblioteca ggplot2
library(ggplot2)
# Gráfico de barras para la frecuencia de los años con colores
ggplot(data = datos_temperatura, aes(x = Año, fill = factor(Año))) +
geom_bar() +
labs(title = "Frecuencia de los Años", x = "Año", y = "Frecuencia") +
scale_fill_brewer(palette = "Set3")
# Gráfico de barras para la frecuencia de la temperatura media con colores
ggplot(data = datos_temperatura, aes(x = Temperatura_Media, fill = factor(Temperatura_Media))) +
geom_bar() +
labs(title = "Frecuencia de la Temperatura Media", x = "Temperatura Media", y = "Frecuencia") +
scale_fill_brewer(palette = "Set3")
# Gráfico de barras para la frecuencia de las ciudades con colores
ggplot(data = datos_temperatura, aes(x = Ciudad, fill = factor(Ciudad))) +
geom_bar() +
labs(title = "Frecuencia de las Ciudades", x = "Ciudad", y = "Frecuencia") +
theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1)) +
scale_fill_brewer(palette = "Set3")
# Gráfico de barras para la frecuencia de los países con colores
ggplot(data = datos_temperatura, aes(x = País, fill = factor(País))) +
geom_bar() +
labs(title = "Frecuencia de los Países", x = "País", y = "Frecuencia") +
theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1)) +
scale_fill_brewer(palette = "Set3")
# Cargar la biblioteca ggplot2
library(ggplot2)
# Gráfico circular para la frecuencia de los años con colores
ggplot(data = datos_temperatura, aes(x = factor(Año), fill = factor(Año))) +
geom_bar(stat = "count") +
coord_polar(theta = "y") +
labs(title = "Frecuencia de los Años") +
scale_fill_brewer(palette = "Set3")
# Gráfico circular para la frecuencia de la temperatura media con colores
ggplot(data = datos_temperatura, aes(x = factor(Temperatura_Media), fill = factor(Temperatura_Media))) +
geom_bar(stat = "count") +
coord_polar(theta = "y") +
labs(title = "Frecuencia de la Temperatura Media") +
scale_fill_brewer(palette = "Set3")
# Gráfico circular para la frecuencia de las ciudades con colores
ggplot(data = datos_temperatura, aes(x = factor(Ciudad), fill = factor(Ciudad))) +
geom_bar(stat = "count") +
coord_polar(theta = "y") +
labs(title = "Frecuencia de las Ciudades") +
scale_fill_brewer(palette = "Set3")
# Gráfico circular para la frecuencia de los países con colores
ggplot(data = datos_temperatura, aes(x = factor(País), fill = factor(País))) +
geom_bar(stat = "count") +
coord_polar(theta = "y") +
labs(title = "Frecuencia de los Países") +
scale_fill_brewer(palette = "Set3")
# Calcular la media de la temperatura media
media_temperatura <- mean(datos_temperatura$Temperatura_Media)
print(paste("Media de la temperatura media:", media_temperatura))
## [1] "Media de la temperatura media: 16.995375"
# Calcular la mediana de la temperatura media
mediana_temperatura <- median(datos_temperatura$Temperatura_Media)
print(paste("Mediana de la temperatura media:", mediana_temperatura))
## [1] "Mediana de la temperatura media: 17.134"
# Calcular la desviación estándar de la temperatura media
desviacion_temperatura <- sd(datos_temperatura$Temperatura_Media)
print(paste("Desviación estándar de la temperatura media:", desviacion_temperatura))
## [1] "Desviación estándar de la temperatura media: 2.93742817237412"
# Resumen estadístico básico de la temperatura media
resumen_temperatura <- summary(datos_temperatura$Temperatura_Media)
print(resumen_temperatura)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 13.34 14.28 17.13 17.00 19.79 20.52
# Calcular cuantiles para la temperatura media
cuantiles_temperatura <- quantile(datos_temperatura$Temperatura_Media, probs = c(0.25, 0.5, 0.75))
print("Cuantiles para la temperatura media:")
## [1] "Cuantiles para la temperatura media:"
print(cuantiles_temperatura)
## 25% 50% 75%
## 14.27900 17.13400 19.78925
# Calcular el valor mínimo y máximo de la temperatura media
min_temperatura <- min(datos_temperatura$Temperatura_Media)
max_temperatura <- max(datos_temperatura$Temperatura_Media)
print(paste("Valor mínimo de la temperatura media:", min_temperatura))
## [1] "Valor mínimo de la temperatura media: 13.343"
print(paste("Valor máximo de la temperatura media:", max_temperatura))
## [1] "Valor máximo de la temperatura media: 20.519"
# Calcular el rango de la temperatura media
rango_temperatura <- range(datos_temperatura$Temperatura_Media)
print(paste("Rango de la temperatura media:", rango_temperatura))
## [1] "Rango de la temperatura media: 13.343"
## [2] "Rango de la temperatura media: 20.519"
library(VIM)
library(mice)
resumen_missing <- aggr(datos_temperatura, numbres=T)
summary(resumen_missing)
##
## Missings per variable:
## Variable Count
## Año 0
## Temperatura_Media 0
## Ciudad 0
## País 0
##
## Missings in combinations of variables:
## Combinations Count Percent
## 0:0:0:0 8 100
Para determinar mejor los patrones de comportamiento de missing se puede utilizar la siguiente funcion
matrixplot(datos_temperatura)
otra presentacion
# con la libreria mice
library(mice)
md.pattern(datos_temperatura, rotate.names = TRUE)
## /\ /\
## { `---' }
## { O O }
## ==> V <== No need for mice. This data set is completely observed.
## \ \|/ /
## `-----'
## Año Temperatura_Media Ciudad País
## 8 1 1 1 1 0
## 0 0 0 0 0
La libreria visdat permite visualizar
library(visdat)
vis_dat(datos_temperatura)
Para obtener columnas
vis_miss(datos_temperatura)
# Identificar datos faltantes en la variable Temperatura_Media
datos_faltantes <- datos_temperatura[is.na(datos_temperatura$Temperatura_Media), ]
solo para este ejemplo se va a eliminar filas:
temperatura_corregido1 <- na.omit(datos_temperatura)
str(temperatura_corregido1)
## 'data.frame': 8 obs. of 4 variables:
## $ Año : chr "2013-01-01" "2013-02-01" "2013-03-01" "2013-04-01" ...
## $ Temperatura_Media: num 19.7 20.5 20 17.8 16.5 ...
## $ Ciudad : chr "Peru" "Peru" "Peru" "Peru" ...
## $ País : chr "Lima" "Lima" "Lima" "Lima" ...
which(colSums(is.na(temperatura_corregido1))!=0)
## named integer(0)
library(DMwR2)
temperatura_corregido2 <- centralImputation(datos_temperatura) #DMwR, mediana (númerico), moda(no númerico)
str(temperatura_corregido2)
## 'data.frame': 8 obs. of 4 variables:
## $ Año : chr "2013-01-01" "2013-02-01" "2013-03-01" "2013-04-01" ...
## $ Temperatura_Media: num 19.7 20.5 20 17.8 16.5 ...
## $ Ciudad : chr "Peru" "Peru" "Peru" "Peru" ...
## $ País : chr "Lima" "Lima" "Lima" "Lima" ...
which(colSums(is.na(temperatura_corregido2))!=0)
## named integer(0)
Utilizando otra libreria para imputar datos
library(VIM)
temperatura_corregido3 <- initialise(datos_temperatura, method = "median")
str(temperatura_corregido3)
## 'data.frame': 8 obs. of 4 variables:
## $ Año : Factor w/ 8 levels "2013-01-01","2013-02-01",..: 1 2 3 4 5 6 7 8
## $ Temperatura_Media: num 19.7 20.5 20 17.8 16.5 ...
## $ Ciudad : Factor w/ 1 level "Peru": 1 1 1 1 1 1 1 1
## $ País : Factor w/ 1 level "Lima": 1 1 1 1 1 1 1 1
which(colSums(is.na(temperatura_corregido3))!=0)
## named integer(0)
Gráfico de cajas y bigotes
#Gráfico de cajas y bigotes
boxplot(datos_temperatura$Temperatura_Media)
Según los resultados, la temperatura media no tiene valores atípicos
# Calcular el rango intercuartílico para la variable Temperatura_Media
Q1 <- quantile(datos_temperatura$Temperatura_Media, 0.25)
Q3 <- quantile(datos_temperatura$Temperatura_Media, 0.75)
IQR <- Q3 - Q1
# Definir los límites para identificar outliers
lower_bound <- Q1 - 1.5 * IQR
upper_bound <- Q3 + 1.5 * IQR
# Filtrar los datos para eliminar outliers
datos_sin_outliers <- datos_temperatura[datos_temperatura$Temperatura_Media >= lower_bound & datos_temperatura$Temperatura_Media <= upper_bound, ]
# Aplicar transformación logarítmica a la variable Temperatura_Media
log(datos_temperatura$Temperatura_Media)
## [1] 2.982090 3.021351 2.994231 2.876723 2.804087 2.673528 2.590992 2.613227
Graficamente
hist(log(datos_temperatura$Temperatura_Media))
# Aplicar transformación cuadrática a la variable Temperatura_Media
datos_temperatura$Temperatura_Media^2
## [1] 389.2334 421.0294 398.8009 315.2755 272.6461 209.9891 178.0356 186.1314
# Aplicar estandarización a la variable Temperatura_Media
scale(datos_temperatura$Temperatura_Media)
## [,1]
## [1,] 0.9306185
## [2,] 1.1995612
## [3,] 1.0126631
## [4,] 0.2589425
## [5,] -0.1645572
## [6,] -0.8525740
## [7,] -1.2433921
## [8,] -1.1412619
## attr(,"scaled:center")
## [1] 16.99537
## attr(,"scaled:scale")
## [1] 2.937428
# Cargar el paquete MASS
library(MASS)
# Aplicar transformación Box-Cox a la variable Temperatura_Media
bc <- boxcox(datos_temperatura$Temperatura_Media ~ 1, data = datos_temperatura)
lambda <- bc$x[which.max(bc$y)]
datos_temperatura$boxcox_Temperatura_Media <- ifelse(lambda == 0, log(datos_temperatura$Temperatura_Media), (datos_temperatura$Temperatura_Media^lambda - 1)/lambda)
# Aplicar estandarización a la variable Temperatura_Media
scale(datos_temperatura$Temperatura_Media)
## [,1]
## [1,] 0.9306185
## [2,] 1.1995612
## [3,] 1.0126631
## [4,] 0.2589425
## [5,] -0.1645572
## [6,] -0.8525740
## [7,] -1.2433921
## [8,] -1.1412619
## attr(,"scaled:center")
## [1] 16.99537
## attr(,"scaled:scale")
## [1] 2.937428
# Aplicar normalización a la variable Temperatura_Media
min_temperatura <- min(datos_temperatura$Temperatura_Media)
max_temperatura <- max(datos_temperatura$Temperatura_Media)
(datos_temperatura$Temperatura_Media - min_temperatura) / (max_temperatura - min_temperatura)
## [1] 0.88991081 1.00000000 0.92349498 0.61496656 0.44161093 0.15997770 0.00000000
## [8] 0.04180602
# Carga los datos
datos_temperatura <- data.frame(
Año = c("2013-01-01", "2013-02-01", "2013-03-01", "2013-04-01", "2013-05-01", "2013-06-01", "2013-07-01", "2013-08-01"),
Temperatura_Media = c(19.729, 20.519, 19.970, 17.756, 16.512, 14.491, 13.343, 13.643),
Ciudad = c("Peru", "Peru", "Peru", "Peru", "Peru", "Peru", "Peru", "Peru"),
País = c("Lima", "Lima", "Lima", "Lima", "Lima", "Lima", "Lima", "Lima")
)
### Convierte la columna 'Año' a formato de fecha
datos_temperatura$Año <- as.Date(datos_temperatura$Año)
#### Visualiza los datos
print(datos_temperatura)
## Año Temperatura_Media Ciudad País
## 1 2013-01-01 19.729 Peru Lima
## 2 2013-02-01 20.519 Peru Lima
## 3 2013-03-01 19.970 Peru Lima
## 4 2013-04-01 17.756 Peru Lima
## 5 2013-05-01 16.512 Peru Lima
## 6 2013-06-01 14.491 Peru Lima
## 7 2013-07-01 13.343 Peru Lima
## 8 2013-08-01 13.643 Peru Lima
Pasos para construir un modelo de regresión:
Paso 1: Determinar las variables X,Y
Paso 2: Evaluar la relación entre variables (Correlación) graficamente
# Gráfico con plot
plot(x = datos_temperatura$Año, y = datos_temperatura$Temperatura_Media,
main = "Relación entre Año y Temperatura Media",
xlab = "Año", ylab = "Temperatura Media",
col = "blue", pch = 16)
str(datos_temperatura) #para saber que datos son numericos y cuales no
## 'data.frame': 8 obs. of 4 variables:
## $ Año : Date, format: "2013-01-01" "2013-02-01" ...
## $ Temperatura_Media: num 19.7 20.5 20 17.8 16.5 ...
## $ Ciudad : chr "Peru" "Peru" "Peru" "Peru" ...
## $ País : chr "Lima" "Lima" "Lima" "Lima" ...
# Convierte la variable Año a un formato numérico
datos_temperatura$Año_Numeric <- as.numeric(datos_temperatura$Año)
# Selecciona solo las variables numéricas
datos_numericos <- datos_temperatura[, sapply(datos_temperatura, is.numeric)]
# Grafica las variables numéricas usando pairs
pairs(datos_numericos)
Interpretación: Según los resultados, hay relación lineal negativa alta
entre el año y la temperatura.
# Selecciona solo las variables numéricas
datos_numericos <- datos_temperatura[, sapply(datos_temperatura, is.numeric)]
# Calcula la matriz de correlación
correlacion_matrix <- cor(datos_numericos)
# Muestra la matriz de correlación
print(correlacion_matrix)
## Temperatura_Media Año_Numeric
## Temperatura_Media 1.0000000 -0.9551571
## Año_Numeric -0.9551571 1.0000000
Coeficiente de correlación:
r = -0.9551571
Interpretación: Existe correlación negativa muy alta entre el año y la temperatura.
Paso 3: Regresión
Modelo:
\(\hat{ingresos} = b_0 + b_1 cantidad\)
Para obtener el modelo, se va a utilizar una función de R > lm
# Ajusta un modelo de regresión lineal
modelo <- lm(Temperatura_Media ~ Año, data = datos_temperatura)
# Muestra un resumen del modelo
summary(modelo)
##
## Call:
## lm(formula = Temperatura_Media ~ Año, data = datos_temperatura)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.2626 -0.7838 0.1197 0.6867 1.2133
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 615.909561 75.797733 8.126 0.000187 ***
## Año -0.037878 0.004794 -7.902 0.000218 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.9395 on 6 degrees of freedom
## Multiple R-squared: 0.9123, Adjusted R-squared: 0.8977
## F-statistic: 62.43 on 1 and 6 DF, p-value: 0.0002179
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 615.909561 75.797733 8.126 0.000187 ***
## Año -0.037878 0.004794 -7.902 0.000218 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.9395 on 6 degrees of freedom
## Multiple R-squared: 0.9123, Adjusted R-squared: 0.8977
## F-statistic: 62.43 on 1 and 6 DF, p-value: 0.0002179
Modelo final con los resultados:
Modelo:
\(\hat{Temperatura_Media} = 615.909561 + -0.037878 Año\)