install.packages("gapminder")
## Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.2'
## (as 'lib' is unspecified)
library(gapminder)
data(gapminder)

#paso 2
# Subconjuntar los datos y eliminar las observaciones faltantes
gapminder <- gapminder[complete.cases(gapminder), ]

#paso 3
# Convertir la variable "continent" en un factor
gapminder$continent <- factor(gapminder$continent)

#paso 4
# Convertir la variable "gdpPercap" en logaritmo natural
gapminder$gdpPercap <- log(gapminder$gdpPercap)

#paso 5

# Renombrar todas las variables en español
names(gapminder) <- c("País", "Continente", "Año", "Expectativa de vida", "Población", "PIB per cápita")

#paso 6
# Filtrar países con una población mayor a mil millones de habitantes
gapminder_filtrado <- subset(gapminder, Población > 1000000000)

# Mostrar el resultado del filtro
gapminder_filtrado
## # 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 

install.packages("ggplot2")
## Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.2'
## (as 'lib' is unspecified)
library(ggplot2)

ggplot(gapminder, aes(x=Año, y=`Expectativa de vida`, color=Continente)) +
  geom_line() +
  labs(x="Año", y="Expectativa de vida", color="Continente") +
  theme_minimal()

# La expectativa de vida ha aumentado en todos los continentes pero con tasas de crecimiento diferentes. Por ejemplo Asia y África han aumentado lentamente a comparación de América y Europa. Además se puede notar un aumento pronunciado de la expectativa de vida a partit de la decada de 1950, esto se podría relacionar con los avances en la medicina. 

# Paso 8 
library(ggplot2)

# Graficar boxplot de la esperanza de vida por continente
ggplot(gapminder, aes(x=Continente, y=`Expectativa de vida`, fill=Continente)) +
  geom_boxplot() +
  labs(x="Continente", y="Esperanza de vida") +
  theme_minimal()

# Se puede notar que hay diferencias significativas en la expectativa de vida entre los continentes. Se puede observar que la mediana de la expectativa de vida es mas alta en Europa y América, seguidos por Asia y Oceanía, mientras que África tiene la mediana más baja. Los boxplots indican que los datos son más dispersos en África y Asia, en cambio en Europa y América hay mayor concentración de valores alrededor de la mediana. 

# Paso 9 

library(ggplot2)

# Graficar scatterplot de la relación entre PIB per cápita y esperanza de vida
ggplot(gapminder, aes(x=`PIB per cápita`, y=`Expectativa de vida`, color=Continente)) +
  geom_point() +
  labs(x="PIB per cápita", y="Esperanza de vida", color="Continente") +
  theme_minimal()

# Podemos observar que en general hay una relación positiva entre el PIB per cápita y la esperanza de vida, lo que sugiere que a medida que el PIB per cápita aumenta, la esperanza de vida también tiende a aumentar. También podemos ver que la mayoría de los países africanos se encuentran en la parte inferior izquierda del gráfico, lo que indica que tienen bajos niveles de PIB per cápita y esperanza de vida. Los países europeos y americanos, por otro lado, se encuentran en la parte superior derecha del gráfico, lo que indica que tienen altos niveles de PIB per cápita y esperanza de vida.

# Paso 10
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
# Fijar semilla para reproducibilidad
set.seed(123)

indices_entrenamiento <- sample(1:nrow(gapminder), round(0.7*nrow(gapminder)))
indices_prueba <- setdiff(1:nrow(gapminder), indices_entrenamiento)

# Dividir los datos en entrenamiento y prueba
datos_entrenamiento <- gapminder[indices_entrenamiento,]
datos_prueba <- gapminder[indices_prueba,]

print(indices_entrenamiento)
##    [1]  415  463  179  526  195  938 1142 1323 1253 1268 1038 1398  665  602
##   [15] 1627  709 1011 1115  953  348 1017 1673 1379  840   26  519 1450 1683
##   [29]  211  932 1614  593  555  373  844 1167  544  490 1645  905  937 1047
##   [43]  923  956  309 1159 1248  166  217 1314  581   72  588 1599  141  722
##   [57]  859  153  294  277 1487   41  431   90  316 1247  528 1140 1630  774
##   [71]  747  456  598 1063 1183  752 1233  374   34  516   13   69  755  409
##   [85] 1332 1302 1113  928 1006  537  983  291 1448 1310  671  121 1134 1182
##   [99] 1088 1507 1501  480   67 1014 1109  165 1075 1098 1202 1386  236  610
##  [113]  330  726  127  212  686  814 1334  931  878  243  847 1137 1674  619
##  [127]  477  151  666  767  160 1415  155  426 1029  326 1304  789 1262 1363
##  [141]  985   39  822  986  137  455  589 1107 1563  196  680 1611  500 1564
##  [155]  344 1586  459  944 1044  872 1700 1188 1076  876  534  177  554  827
##  [169]   84  633 1416 1326  597  706 1579 1454  710  712 1452  672 1274 1453
##  [183] 1021  398 1013 1638  381   40  522  473  200 1149  265  775  186 1276
##  [197]  458 1176  831 1078  919  235 1313  185  413  627 1516 1333 1505  205
##  [211]  779  564  794 1573 1621 1370 1574  468  920 1081  457  617  357  279
##  [225]  270 1584  646  347 1153  218  618  698  337  797 1680  539  981 1661
##  [239]  724 1414 1246 1610  861  657  960 1445 1485  660  163  238  578 1592
##  [253] 1249 1413  117  648 1079 1241 1532  557 1704 1158  957  873  688  757
##  [267]  988  447 1128  821 1506  711 1234  349 1425 1282 1539  386 1165   24
##  [281]  945 1023 1154 1651 1401  170 1528 1258  422  508   64   80  548  987
##  [295]  475 1613  765 1367 1347  479 1135  791 1665 1341  807 1464 1311  292
##  [309] 1250  297  860  605  637 1631 1261 1421 1530 1057   83  866 1666 1628
##  [323] 1423   76 1118 1054 1447  946 1199 1690  323  115  850  608  682 1699
##  [337] 1120  397 1172  989  392 1677 1362  744 1583  106   11  625 1427  403
##  [351]  461 1650   31 1139   94   16  178 1428  524  924  204 1376 1671 1478
##  [365]  384 1146  315  259  494 1502 1072 1124 1016 1132 1325   10 1419 1568
##  [379]  402 1383  108    8  626  261  541 1569 1597  282 1291 1286 1344 1243
##  [393]  696  667  990 1143  452  856  622 1420 1060 1612 1264  891 1034 1692
##  [407] 1129  793 1703 1204  278  241 1430  679   37 1588  566   19  378  549
##  [421] 1695   48 1212  464  393 1163  670 1213  311  189   38 1108  319 1289
##  [435]  846  120 1527  441 1223  599 1653  714  677   81 1303  134  424  756
##  [449]    6 1152  879  668   49  193 1689 1548  303 1366  898  190  191  446
##  [463]  119 1083  817   61 1331 1373  930  950 1473 1580 1227  758  993  947
##  [477]  690  251  560  643  545 1553  162  576  168  788   78 1299  445  995
##  [491]   95  379  221 1312 1185  620  448  242  927 1587  926  407  229  785
##  [505]  699 1195 1663 1475 1449   79 1543  237  579  929 1534  493  730  209
##  [519] 1265  877  358 1065  904 1476  848  886  450  396  639 1643  201   52
##  [533] 1602 1554  577 1484 1015 1546  124  592  740   45   91  653  606 1590
##  [547] 1032  839  595 1634  499 1186 1585  902   71 1390  776 1541  896  997
##  [561] 1480 1560  673  628 1070 1465  531 1596  836 1691  331  901  502 1409
##  [575]  743  829 1504  729 1623  504 1100 1026 1179  786  855 1375 1096  449
##  [589]  888  971  335 1686 1080 1474  271  207  436 1147 1001  601  387 1092
##  [603] 1361  565  792  742 1136  523  586  256 1133   88 1358 1380 1296  700
##  [617]  842  685  280  803 1207  778  172 1488 1644 1191  741  365  591  834
##  [631] 1360  535 1297  982  112 1633 1567  631 1283  969  482  105 1211 1526
##  [645] 1625 1157  892  139  481  843  250 1523 1535 1544 1438 1697  258  635
##  [659]  262 1181 1617  206  199 1061  753 1521  818 1121 1457 1477 1463   55
##  [673] 1557 1394 1675 1073  194  460 1221  998  658  266  713  355 1365  470
##  [687]  339 1514 1193 1230 1048  380  939  893  766 1637    5  469 1405  612
##  [701]  411 1203  899  655  746  615   58  391  290  287  466  530  488 1205
##  [715] 1512 1542  913  647  478 1607  321    9  867  281  642  907  708 1517
##  [729]  148  651   18 1235 1039  963 1685 1639 1479  732 1393  383  551 1577
##  [743] 1020  471 1550 1220  161  421  444   29 1052 1293 1217   42  922   44
##  [757]  224 1049  912  964  352  833  862  826 1656 1062  683  451   56 1294
##  [771]  401 1112  611  654 1581  375 1123 1084 1086  734  520 1036 1116   74
##  [785]   86  434   17  649 1456  485 1007 1437 1604  656  820  474 1522   35
##  [799]  538  781   36  687  503 1490   28  669  812  310 1647  285  976   93
##  [813]  269  717  675  372  517  936   77  961  970  684  584  126 1190  152
##  [827]  720   75 1045 1160 1603  304  783  943  694 1378 1486  951  100   25
##  [841]  875  180  293 1469 1022 1676  547  703  343 1381 1600  433 1131 1002
##  [855] 1059  366 1626 1518 1174  815  641 1382  681  425 1556 1206 1125  215
##  [869]  103 1426  400    2  674 1218  158  156  837 1432  286 1127  423 1319
##  [883]  707  430 1200 1237  750 1226  650  540  716  754  385  949  853  958
##  [897]  164  819 1114 1122  174  864 1067 1024 1436  999 1317  420  887  515
##  [911]  940 1097   51  784 1103  230 1547  223  613  145  645 1499  806 1074
##  [925] 1371  318  419  603 1050 1105  143 1198  852  542 1222 1654  130  208
##  [939]  992 1570  885  728  275  723 1648  197 1087  968  487 1668 1066 1576
##  [953]  979  567 1444 1254  529  327 1267  869 1510 1605 1615  955  693 1519
##  [967] 1606  240 1330  942  897 1591 1019  536  830  621  702 1141  367  787
##  [981] 1316 1236 1619  239  432  984 1687 1470   46 1408  725  857 1472 1095
##  [995] 1681 1155 1279 1658  332   96 1271  467 1595  934  917  825  382  159
## [1009]  678  289  882 1403  202  884 1285 1435  763  144 1256  863   89  462
## [1023] 1214  264  171 1008  142 1117  908    4 1629 1455  210 1346  640 1439
## [1037]  798 1655  761  978  738 1018 1184   32 1601 1201  760 1126 1431 1578
## [1051]  558 1300  312    1  638  498 1173 1679  759  394 1397 1364  255 1252
## [1065] 1616 1461 1531 1164 1429 1520 1562 1012 1150 1508 1342 1355 1306  435
## [1079]  363 1493 1389  849  974  719 1417  802  346 1168  453  832  198   54
## [1093]   73  935   20  175  114  972 1320 1593  465 1594 1702 1058 1368   92
## [1107]  428  492  267 1287  790   63  356  406 1572 1662  252  390  228  506
## [1121]  813 1537 1555  389 1489 1232 1309  663 1298  572  636  918 1216  553
## [1135] 1099  721  816  510 1196  596 1270  585 1460 1170 1224  248  573 1069
## [1149] 1483  102  632  359 1177  489 1451  227  533  900 1471  154 1641 1384
## [1163]  376   12 1446 1353  749  736 1219 1340 1215   60 1119 1003  692  167
## [1177]  306  838  132 1404  916  996  484  933  925 1068 1374  213 1660 1209
## [1191] 1321 1031  845
print(indices_prueba)
##   [1]    3    7   14   15   21   22   23   27   30   33   43   47   50   53   57
##  [16]   59   62   65   66   68   70   82   85   87   97   98   99  101  104  107
##  [31]  109  110  111  113  116  118  122  123  125  128  129  131  133  135  136
##  [46]  138  140  146  147  149  150  157  169  173  176  181  182  183  184  187
##  [61]  188  192  203  214  216  219  220  222  225  226  231  232  233  234  244
##  [76]  245  246  247  249  253  254  257  260  263  268  272  273  274  276  283
##  [91]  284  288  295  296  298  299  300  301  302  305  307  308  313  314  317
## [106]  320  322  324  325  328  329  333  334  336  338  340  341  342  345  350
## [121]  351  353  354  360  361  362  364  368  369  370  371  377  388  395  399
## [136]  404  405  408  410  412  414  416  417  418  427  429  437  438  439  440
## [151]  442  443  454  472  476  483  486  491  495  496  497  501  505  507  509
## [166]  511  512  513  514  518  521  525  527  532  543  546  550  552  556  559
## [181]  561  562  563  568  569  570  571  574  575  580  582  583  587  590  594
## [196]  600  604  607  609  614  616  623  624  629  630  634  644  652  659  661
## [211]  662  664  676  689  691  695  697  701  704  705  715  718  727  731  733
## [226]  735  737  739  745  748  751  762  764  768  769  770  771  772  773  777
## [241]  780  782  795  796  799  800  801  804  805  808  809  810  811  823  824
## [256]  828  835  841  851  854  858  865  868  870  871  874  880  881  883  889
## [271]  890  894  895  903  906  909  910  911  914  915  921  941  948  952  954
## [286]  959  962  965  966  967  973  975  977  980  991  994 1000 1004 1005 1009
## [301] 1010 1025 1027 1028 1030 1033 1035 1037 1040 1041 1042 1043 1046 1051 1053
## [316] 1055 1056 1064 1071 1077 1082 1085 1089 1090 1091 1093 1094 1101 1102 1104
## [331] 1106 1110 1111 1130 1138 1144 1145 1148 1151 1156 1161 1162 1166 1169 1171
## [346] 1175 1178 1180 1187 1189 1192 1194 1197 1208 1210 1225 1228 1229 1231 1238
## [361] 1239 1240 1242 1244 1245 1251 1255 1257 1259 1260 1263 1266 1269 1272 1273
## [376] 1275 1277 1278 1280 1281 1284 1288 1290 1292 1295 1301 1305 1307 1308 1315
## [391] 1318 1322 1324 1327 1328 1329 1335 1336 1337 1338 1339 1343 1345 1348 1349
## [406] 1350 1351 1352 1354 1356 1357 1359 1369 1372 1377 1385 1387 1388 1391 1392
## [421] 1395 1396 1399 1400 1402 1406 1407 1410 1411 1412 1418 1422 1424 1433 1434
## [436] 1440 1441 1442 1443 1458 1459 1462 1466 1467 1468 1481 1482 1491 1492 1494
## [451] 1495 1496 1497 1498 1500 1503 1509 1511 1513 1515 1524 1525 1529 1533 1536
## [466] 1538 1540 1545 1549 1551 1552 1558 1559 1561 1565 1566 1571 1575 1582 1589
## [481] 1598 1608 1609 1618 1620 1622 1624 1632 1635 1636 1640 1642 1646 1649 1652
## [496] 1657 1659 1664 1667 1669 1670 1672 1678 1682 1684 1688 1693 1694 1696 1698
## [511] 1701
# Paso 11

#  Entrenar un modelo de regresión lineal simple
# Seleccionar variables para el modelo
datos_modelo <- datos_entrenamiento[, c("Expectativa de vida", "PIB per cápita")]

# Ajustar el modelo de regresión lineal simple
modelo <- lm(`Expectativa de vida` ~ `PIB per cápita`, data = datos_modelo)

# Predecir la esperanza de vida en los datos de prueba
predicciones <- predict(modelo, newdata = datos_prueba)

# Paso 12 

# Calcular el error cuadrático medio (MSE)
MSE <- mean((datos_prueba$`Expectativa de vida` - predicciones)^2)

# Calcular el coeficiente de determinación (R²)
SSR <- sum((predicciones - mean(datos_prueba$`Expectativa de vida`))^2)
SST <- sum((datos_prueba$`Expectativa de vida` - mean(datos_prueba$`Expectativa de vida`))^2)
R2 <- SSR / SST

# Imprimir los resultados
cat("MSE del modelo:", MSE, "\n")
## MSE del modelo: 54.37944
cat("R² del modelo:", R2, "\n")
## R² del modelo: 0.6756668