Paso 1

library(gapminder)
data("gapminder")
help("gapminder")
View(gapminder)

Paso 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
gapminder <- gapminder[complete.cases(gapminder), ]
# Contar el número de observaciones con datos completos
nrow(gapminder)
## [1] 1704

Paso 3

# Convertir variables categóricas a factores
#primero hacerlos con los nombres sin cambiar 
gapminder$country <- as.factor(gapminder$country)
class(gapminder$country)
## [1] "factor"
gapminder$continent <- as.factor(gapminder$continent)
class(gapminder$continent)
## [1] "factor"

Paso 4

# Convertir variable gdpPercap a logaritmo natural
gapminder$gdpPercap <- log(gapminder$gdpPercap)

Paso 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

Paso 6

poblacion_mayor_mil_millones <- gapminder[gapminder$Población > 1000000000, ]
poblacion_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

Paso 7

library(ggplot2)
ggplot(gapminder, aes(x = Año, y = Expectativa_de_vida, color = Continente)) +
  geom_line() +
  labs(title = "Esperanza de vida por año y continente", x = "Año", y = "Esperanza de vida")

#Interpretando los resultados, se puede ver que la esperanza de vida ha aumentado a lo largo de los años en todos los continentes. Sin embargo, hay una gran variabilidad entre los diferentes continentes, con Europa y América del Norte teniendo las mayores esperanzas de vida y África teniendo las menores. También se puede ver que la mayoría de los continentes experimentaron una disminución en la esperanza de vida durante la década de 1990, probablemente debido a la epidemia de VIH/SIDA en África. En general, este gráfico proporciona una buena visualización de cómo la esperanza de vida ha cambiado a lo largo del tiempo en diferentes partes del mundo.

Paso 8

ggplot(gapminder, aes(x = Continente, y = Expectativa_de_vida, fill = Continente)) +
  geom_boxplot() +
  scale_fill_manual(values = c("#1f77b4", "#ff7f0e", "#2ca02c", "#d62728", "#9467bd")) +
  labs(title = "Esperanza de vida por continente", x = "Continente", y = "Esperanza de vida")

En el gráfico, podemos ver que la esperanza de vida ha aumentado en todos los continentes a lo largo de los años, pero el rango intercuartil y los valores atípicos varían entre los continentes. Podemos observar que en África, la esperanza de vida tiene el rango intercuartil más bajo y también hay más valores atípicos. Mientras que en Europa, la esperanza de vida tiene el rango intercuartil más alto y hay menos valores atípicos. La leyenda del gráfico muestra la codificación de color utilizada para distinguir entre los diferentes continentes.

Paso 9

library(ggplot2)
ggplot(gapminder, aes(x = PIB_per_cápita, y = Expectativa_de_vida)) +
  geom_point(aes(color = Continente)) +
  labs(x = "PIB per cápita", y = "Esperanza de vida",
       title = "Relación entre PIB per cápita y Esperanza de vida")

#El gráfico generado muestra la relación entre el PIB per cápita y la esperanza de vida para los países incluidos. Cada punto representa un país y está coloreado según el continente al que pertenece. La posición del punto en el eje x indica el PIB per cápita y la posición en el eje y indica la esperanza de vida. El gráfico sugiere que hay una correlación positiva entre el PIB per cápita y la esperanza de vida, lo que indica que a medida que aumenta el PIB per cápita de un país, también lo hace la esperanza de vida. Además, se observa una separación en la posición de los puntos según el continente, lo que sugiere que la relación entre el PIB per cápita y la esperanza de vida puede variar según el continente. Por ejemplo, los países de América del Norte y Europa tienden a tener un mayor PIB per cápita y una mayor esperanza de vida en comparación con los países de Asia y África.

Paso 10

set.seed(123)  # establecer semilla aleatoria para reproducibilidad
train_indices <- sample(nrow(gapminder), round(0.8 * nrow(gapminder)))
train_data <- gapminder[train_indices, ]
test_data <- gapminder[-train_indices, ]

#Paso 11

# Cargar la librería de regresión lineal
library(stats)
# Establecer semilla aleatoria para reproducibilidad
set.seed(123)
# Obtener los índices de entrenamiento para el 80% de los datos
train_indices <- sample(nrow(gapminder), round(0.8 * nrow(gapminder)))
# Crear un conjunto de entrenamiento y uno de prueba
train_data <- gapminder[train_indices, ]
test_data <- gapminder[-train_indices, ]
# Crear el modelo de regresión lineal simple usando la función lm
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.780  -4.201   1.238   4.814  19.342 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     -9.2665     1.3948  -6.644 4.41e-11 ***
## PIB_per_cápita   8.4195     0.1691  49.780  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 7.743 on 1361 degrees of freedom
## Multiple R-squared:  0.6455, Adjusted R-squared:  0.6452 
## F-statistic:  2478 on 1 and 1361 DF,  p-value: < 2.2e-16

Paso 12

# Predecir la esperanza de vida en el conjunto de prueba
test_pred <- predict(lm_model, newdata = test_data)
# Calcular el MSE
mse <- mean((test_data$Expectativa_de_vida - test_pred)^2)
print(paste("MSE:", mse))
## [1] "MSE: 50.5200182261931"
# Calcular el R²
r_squared <- cor(test_data$Expectativa_de_vida, test_pred)^2
print(paste("R-squared:", r_squared))
## [1] "R-squared: 0.68101257789999"