library(gapminder)
data("gapminder")
help("gapminder")
View(gapminder)
# 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
# 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"
# Convertir variable gdpPercap a logaritmo natural
gapminder$gdpPercap <- log(gapminder$gdpPercap)
# 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
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
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.
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")
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.
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
# 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"