# 1.DESCARGA LOS DATOS GAPMINDER
library(gapminder)
data(gapminder)
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 779.
## 2 Afghanistan Asia 1957 30.3 9240934 821.
## 3 Afghanistan Asia 1962 32.0 10267083 853.
## 4 Afghanistan Asia 1967 34.0 11537966 836.
## 5 Afghanistan Asia 1972 36.1 13079460 740.
## 6 Afghanistan Asia 1977 38.4 14880372 786.
# 2.SOLUCIONES EL PROBLEMA DE DATOS FALTANTES
if (sum(is.na(gapminder)) > 0) {
cat("El conjunto de datos de Gapminder tiene datos faltantes.")
} else {
cat("El conjunto de datos de Gapminder no tiene datos faltantes.")
}
## El conjunto de datos de Gapminder no tiene datos faltantes.
# 3.CONVIERTA LAS VARIABLES CATEGORICAS A FACTOR
## Convertir la variable "continent" en un factor
gapminder$continent <- factor(gapminder$continent)
## Imprimir el resultado
head(gapminder$continent)
## [1] Asia Asia Asia Asia Asia Asia
## Levels: Africa Americas Asia Europe Oceania
## Convertir la variable "country" en un factor
gapminder$country <- factor(gapminder$country)
## Imprimir el resultado
head(gapminder$country)
## [1] Afghanistan Afghanistan Afghanistan Afghanistan Afghanistan Afghanistan
## 142 Levels: Afghanistan Albania Algeria Angola Argentina Australia ... Zimbabwe
# 4. CONVIERTA LA VARIALE "gdpPercap" EN LOGARITMO NATURAL
## Transforma la variable gdpPercap en logaritmo natural y guárdala en una nueva variable
gapminder$log_gdpPercap <- log(gapminder$gdpPercap)
# 5. RENOMBRE TODAS LAS VARIABLES Y DEJELAS EN ESPAÑOL
## Define una lista de nombres en español
nombres_espanol <- c("País", "Continente", "Año", "Expectativa_vida", "Población", "PIB_per_cápita","log_PIB_per_cápita")
## Usa la función setNames() para renombrar las variables
names(gapminder) <- setNames(nombres_espanol, names(gapminder))
# 6. FILTRE AQUELLOS PAISES QUE TENGAN UNA POBLACION MAYOR A MIL HABITANTES
# Filtra los países con población mayor a mil millones de habitantes
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
gapminder_filtrado <- gapminder %>% filter(Población > 1e9)
head(gapminder_filtrado)
## # A tibble: 6 × 7
## País Continente Año Expectativa_vida Población PIB_per_cápita
## <fct> <fct> <int> <dbl> <int> <dbl>
## 1 China Asia 1982 65.5 1000281000 962.
## 2 China Asia 1987 67.3 1084035000 1379.
## 3 China Asia 1992 68.7 1164970000 1656.
## 4 China Asia 1997 70.4 1230075000 2289.
## 5 China Asia 2002 72.0 1280400000 3119.
## 6 China Asia 2007 73.0 1318683096 4959.
## # ℹ 1 more variable: log_PIB_per_cápita <dbl>
# 7. GRAFIQUE LA ESPERANZA DE VIDA
library(ggplot2)
ggplot(gapminder, aes(x=Año, y=Expectativa_vida, color=Continente)) + geom_line() + labs(x="Año", y="Esperanza de vida (años)", color="Continente") + theme_classic()

### INTERPRETACION : Este gráfico muestra cómo ha evolucionado la esperanza de vida en distintos continentes a lo largo de los años. Se puede observar que la esperanza de vida ha aumentado significativamente en comparación con los años anteriores, aunque cada continente ha tenido su propio ritmo y manera de hacerlo. Es interesante destacar que Oceanía es el único continente que ha mantenido un aumento constante de la esperanza de vida durante todos los años estudiados. Por otro lado, África es el continente con la menor esperanza de vida, aunque ha ido en aumento, sigue siendo la más baja. Finalmente, Europa es el continente con la esperanza de vida más alta en los últimos años
# 8. REALIZAR UNA BOXPLOT DE LA ESPERANZA DE VIDA POR CONTINENTE
## Crear el boxplot
ggplot(gapminder, aes(x=Continente, y=Expectativa_vida)) +
geom_boxplot() +
labs(x = "Continente", y = "Esperanza de vida", title = "Boxplot de la esperanza de vida por continente")

### INTERPETRACION : En este gráfico, podemos observar características similares al anterior, pero con datos más precisos. Europa tiene la esperanza de vida más alta, con una media de 75 años. En cambio, Asia presenta la esperanza de vida más baja, con una media cercana a los 50 años, lo que representa una gran diferencia entre ambos continentes. Los otros continentes se sitúan en un punto intermedio en cuanto a esperanza de vida se refiere
# 9. GRAFICO STATTERPLOT DE LA RELACION ENTRE EL PIB PER CAPITA Y LA ESPERANZA DE VIDA
## Crear el scatterplot
ggplot(gapminder, aes(x=PIB_per_cápita, y=Expectativa_vida)) +
geom_point(alpha=0.5) +
scale_x_log10(labels=scales::dollar_format()) +
labs(x = "PIB per cápita", y = "Esperanza de vida", title = "Relación entre PIB per cápita y esperanza de vida")

### INTERPRETACION : Existe una correlación entre el PIB per cápita y la esperanza de vida: a medida que el PIB aumenta, también lo hace la esperanza de vida. Esto demuestra cómo el desarrollo económico y social de los países puede revelar patrones y tendencias a lo largo del tiempo
# 10. DIVIDA LOS DATOS EN CONJUNTOS DE ENTRENAMIENTO Y PRUEBA
library(caret)
## Loading required package: lattice
set.seed(123)
train_index <- createDataPartition(gapminder$Expectativa_vida, p = 0.8, list = FALSE)
train_data <- gapminder[train_index, ]
test_data <- gapminder[-train_index, ]
# 11. ENTRENE UN MODELO DE REGRESION LINEAL SIMPLE PARA PREDECIR LA ESPERANZA DE VIDA EN FUNCION DEL INGRESO PER CAPITA
# Entrenamos el modelo de regresión lineal simple
model <- lm(Expectativa_vida ~ PIB_per_cápita, data = train_data)
# Mostramos los resultados del modelo
summary(model)
##
## Call:
## lm(formula = Expectativa_vida ~ PIB_per_cápita, data = train_data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -83.423 -7.818 2.166 8.254 18.376
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 5.399e+01 3.534e-01 152.77 <2e-16 ***
## PIB_per_cápita 7.704e-04 2.953e-05 26.09 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 10.53 on 1362 degrees of freedom
## Multiple R-squared: 0.3332, Adjusted R-squared: 0.3327
## F-statistic: 680.6 on 1 and 1362 DF, p-value: < 2.2e-16
# 12. EVALUE EL RENDIMIENTO DEL MODELO EN EL CONJUNTO DE PRUEBA
# Calculamos las predicciones del modelo para el conjunto de prueba
predictions <- predict(model, newdata = test_data)
# Calculamos el coeficiente de determinación R cuadrado para el modelo
r_squared <- cor(test_data$Expectativa_vida, predictions)^2
print(paste0("R cuadrado del modelo: ", round(r_squared, 3)))
## [1] "R cuadrado del modelo: 0.371"
# Calculamos el RMSE para el modelo
rmse <- sqrt(mean((test_data$Expectativa_vida - predictions)^2))
print(paste0("RMSE del modelo: ", round(rmse, 3)))
## [1] "RMSE del modelo: 10.337"