################1####################
install.packages("gapminder")
## Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.2'
## (as 'lib' is unspecified)
library(gapminder)
data("gapminder")
help("gapminder")
################2####################
# Contar el número de datos faltantes por variable
colSums(is.na(gapminder))
## country continent year lifeExp pop gdpPercap
## 0 0 0 0 0 0
# Eliminar las observaciones con datos faltantes
datos_completos <- gapminder[complete.cases(gapminder), ]
#datos_completos <- datos[complete.cases(datos), ]
# Contar el número de observaciones con datos completos
nrow(datos_completos)
## [1] 1704
################3####################
# Convertir variables categóricas a factores
gapminder$country <- as.factor(gapminder$country)
class(gapminder$country)
## [1] "factor"
gapminder$continent <- as.factor(gapminder$continent)
class(gapminder$continent)
## [1] "factor"
#########4#######
# Convertir la variable en logaritmo natural
gapminder$log_gdpPercap <- log(gapminder$gdpPercap)
# Transformar la variable gdpPercap en logaritmo natural
gapminder$log_gdpPercap <- log(gapminder$gdpPercap)
# Reemplazar la columna original con los nuevos datos
gapminder$gdpPercap <- gapminder$log_gdpPercap
# Eliminar la columna temporal
gapminder$log_gdpPercap <- NULL
# Verificar los primeros registros para confirmar la transformación
head(gapminder)
## # A tibble: 6 × 6
## country continent year lifeExp pop gdpPercap
## <fct> <fct> <int> <dbl> <int> <dbl>
## 1 Afghanistan Asia 1952 28.8 8425333 6.66
## 2 Afghanistan Asia 1957 30.3 9240934 6.71
## 3 Afghanistan Asia 1962 32.0 10267083 6.75
## 4 Afghanistan Asia 1967 34.0 11537966 6.73
## 5 Afghanistan Asia 1972 36.1 13079460 6.61
## 6 Afghanistan Asia 1977 38.4 14880372 6.67
########5#########
# Crear vector con nuevos nombres en español
nombres_espanol <- c("País", "Continente", "Año", "Expectativa_de_vida", "Población", "PIB_per_cápita")
# Renombrar todas las variables en español
names(gapminder) <- nombres_espanol
gapminder
## # A tibble: 1,704 × 6
## País Continente Año Expectativa_de_vida Población PIB_per_cápita
## <fct> <fct> <int> <dbl> <int> <dbl>
## 1 Afghanistan Asia 1952 28.8 8425333 6.66
## 2 Afghanistan Asia 1957 30.3 9240934 6.71
## 3 Afghanistan Asia 1962 32.0 10267083 6.75
## 4 Afghanistan Asia 1967 34.0 11537966 6.73
## 5 Afghanistan Asia 1972 36.1 13079460 6.61
## 6 Afghanistan Asia 1977 38.4 14880372 6.67
## 7 Afghanistan Asia 1982 39.9 12881816 6.89
## 8 Afghanistan Asia 1987 40.8 13867957 6.75
## 9 Afghanistan Asia 1992 41.7 16317921 6.48
## 10 Afghanistan Asia 1997 41.8 22227415 6.45
## # ℹ 1,694 more rows
########6#########
install.packages("dyplyr")
## Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.2'
## (as 'lib' is unspecified)
## Warning: package 'dyplyr' is not available for this version of R
##
## A version of this package for your version of R might be available elsewhere,
## see the ideas at
## https://cran.r-project.org/doc/manuals/r-patched/R-admin.html#Installing-packages
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
# Filtrar los países con una población mayor a mil millones de habitantes
paises_mayor_mil_millones <- gapminder %>% filter(Población > 1000000000)
# Verificar los primeros registros de la tabla resultante
paises_mayor_mil_millones
## # A tibble: 8 × 6
## País Continente Año Expectativa_de_vida Población PIB_per_cápita
## <fct> <fct> <int> <dbl> <int> <dbl>
## 1 China Asia 1982 65.5 1000281000 6.87
## 2 China Asia 1987 67.3 1084035000 7.23
## 3 China Asia 1992 68.7 1164970000 7.41
## 4 China Asia 1997 70.4 1230075000 7.74
## 5 China Asia 2002 72.0 1280400000 8.05
## 6 China Asia 2007 73.0 1318683096 8.51
## 7 India Asia 2002 62.9 1034172547 7.47
## 8 India Asia 2007 64.7 1110396331 7.80
########7#########
# Cargar la librería ggplot2
library(gapminder)
library(dplyr)
library(ggplot2)
# Graficar la esperanza de vida por continente
ggplot(gapminder, aes(x = Año, y = Expectativa_de_vida, color = Continente)) +
geom_line() +
labs(title = "Esperanza de vida por continente",
x = "Año",
y = "Esperanza de vida")
#Podemos observar que la esperanza de vida ha aumentado en todos los continentes desde 1950, con una tendencia general hacia un aumento constante en la mayoría de los casos. África tiene la menor esperanza de vida en comparación con otros continentes, mientras que Europa y América del Norte tienen las esperanzas de vida más altas.
########8#########
# Crear el gráfico de caja (boxplot)
ggplot(gapminder, aes(x = Continente, y = Expectativa_de_vida)) +
geom_boxplot() +
labs(title = "Esperanza de vida por continente",
x = "Continente",
y = "Esperanza de vida")
#Podemos observar que la esperanza de vida promedio varía significativamente entre los diferentes continentes, con Europa y América del Norte teniendo la esperanza de vida más alta y África teniendo la esperanza de vida más baja. Los boxplots también muestran que América del Norte, Europa y Asia tienen una distribución de esperanza de vida relativamente estrecha, mientras que América del Sur y África tienen una distribución más amplia con mayores variaciones en la esperanza de vida.
########9#########
# Crear el scatter plot
ggplot(gapminder, aes(x = PIB_per_cápita, y = Expectativa_de_vida)) +
geom_point() +
labs(title = "Relación entre PIB per cápita y Esperanza de vida",
x = "PIB per cápita",
y = "Esperanza de vida") +
theme_minimal()
#Podemos observar que existe una tendencia general de que los países con un PIB per cápita más alto tienen una esperanza de vida más alta. Sin embargo, también podemos observar que hay una gran variabilidad en la esperanza de vida para países con el mismo nivel de PIB per cápita, lo que sugiere que existen otros factores que influyen en la esperanza de vida además del PIB per cápita
########10#########
# Cargar el paquete caret
install.packages("caret")
## Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.2'
## (as 'lib' is unspecified)
library(caret)
## Loading required package: lattice
# Establecer la semilla aleatoria para reproducibilidad
set.seed(123)
# Crear índices de división para el conjunto de datos gapminder
indexes <- createDataPartition(gapminder$Expectativa_de_vida, times = 1, p = 0.8, list = FALSE)
# Crear conjunto de entrenamiento
train <- gapminder[indexes, ]
# Crear conjunto de prueba
test <- gapminder[-indexes, ]
########11#########
install.packages("stats")
## Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.2'
## (as 'lib' is unspecified)
## Warning: package 'stats' is a base package, and should not be updated
library(stats)
# Establecer semilla aleatoria para reproducibilidad
set.seed(123)
# Dividir los datos en entrenamiento y prueba
train_prop <- 0.7
train_index <- sample(nrow(gapminder), round(train_prop * nrow(gapminder)))
train_data <- gapminder[train_index, ]
test_data <- gapminder[-train_index, ]
# Entrenar el modelo de regresión lineal simple
lm_model <- lm(Expectativa_de_vida ~ PIB_per_cápita, data = train_data)
# Mostrar el resumen del modelo
summary(lm_model)
##
## Call:
## lm(formula = Expectativa_de_vida ~ PIB_per_cápita, data = train_data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -32.733 -4.071 1.098 4.845 19.399
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -9.3416 1.4923 -6.26 5.37e-10 ***
## PIB_per_cápita 8.4220 0.1805 46.65 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 7.723 on 1191 degrees of freedom
## Multiple R-squared: 0.6463, Adjusted R-squared: 0.646
## F-statistic: 2176 on 1 and 1191 DF, p-value: < 2.2e-16
########12#########
# Entrenar un modelo de regresión lineal simple
lm_model <- train(Expectativa_de_vida ~ PIB_per_cápita, data = train, method = "lm")
# Realizar predicciones en el conjunto de prueba
predictions <- predict(lm_model, newdata = test)
# Calcular el error cuadrático medio (RMSE) en el conjunto de prueba
rmse <-mean((test$Expectativa_de_vida - predictions)^2)
# Imprimir el RMSE
cat("El RMSE en el conjunto de prueba es:", rmse, "\n")
## El RMSE en el conjunto de prueba es: 55.40462