No todas las librerías están disponibles en el entorno de ejecución, por lo que es necesario instalar algunas de ellas. Para esto se utiliza el comando install.package()

install.packages("readxl") # Para leer archivos de Excel
install.packages("Hmisc") # Para obtener algunas funciones de correlación

* Sólo es un paso que se realizará una vez. Si ya se tienen instaladas las librerías, no es necesario volver a instalarlas.

1 DEFINICIÓN del directorio de trabajo

Para trabajar con R es necesario establecer un directorio de trabajo. Esto es el lugar donde se guardarán los archivos que se creen y donde se pueden leer los archivos que se tengan en el computador. Para esto se utiliza el comando setwd().

setwd("C:/User/Usuario/Desktop/R") # No correr sin establecer la
                                   # dirección correcta en cada ordenador.
                        # Nótese que la dirección debe estar entre comillas 
                      # y con las diagonales con un sentido en concreto.

2 BASE 1

Pasos previos: se recomienda cargar las librerías que se van a utilizar en el análisis. Para acceder a las funciones de una librería es necesario cargarla previamente en el entorno de trabajo. Para ello se utiliza el comando library().

library(readxl) # Para leer archivos de Excel

2.1 Lectura de tabla(s):

Base_1 <- read_excel("C:/Carpeta/Subcarpeta/Archivo_Tabla1.xlsx")

2.2 Distinción de variables

Base_1$Género = as.factor(Base_1$Género)
Base_1$`Clase social` = as.factor(Base_1$`Clase social`)

2.3 Análisis

2.3.1 T de Student

En la prueba se reportan el estadístico t, los grados de libertad (df) y el valor de probabilidad asociado al valor del estadístico (p-value); además del tipo de hipótesis planteada para esta prueba (bilateral) y el intervalo de confianza al calculado al 95% para la diferencia de medias. Así mismo se indican cuanto es el valor de los promedios para cada grupo.

t.test(Base_1$`Años en la escuela` ~ Base_1$Género)
## 
##  Welch Two Sample t-test
## 
## data:  Base_1$`Años en la escuela` by Base_1$Género
## t = -0.58977, df = 5.5015, p-value = 0.5787
## alternative hypothesis: true difference in means between group Femenino and group Masculino is not equal to 0
## 95 percent confidence interval:
##  -4.193444  2.593444
## sample estimates:
##  mean in group Femenino mean in group Masculino 
##                     5.0                     5.8

2.3.1.1 Visualización (Gráfico)

plot(Base_1$`Años en la escuela` ~ Base_1$Género)

2.3.1.2 Alternativa gráfica a t

# Antes de llamar a las librerías, asegúrate de instalarlas
library(ggplot2) 
library(dplyr)

Base_1  %>% 
  mutate(Género = factor(Género,
                       # levels = c(1,2), # Indica cuáles son los niveles de manera explícita
                       labels = c("Femenino", "Masculino"))) %>% # Nombra las categoríaso niveles de la variable
  ggplot(aes(x = Género, # La función ggplot se emplea para crar gráficos
             y = `Años en la escuela`)) + # El  argumento  aes() se utiliza para especificar las variables que se van a graficar, en este caso el eje x corresponde a la variable Género y el eje y a la variable Años en la escuela.
  geom_errorbar(stat = "summary", # La función geom_errorbar se utiliza para agregar barras de error al gráfico, indicando la variabilidad de los datos. El argumento stat = "summary" indica que se va a calcular un resumen estadístico
                fun.data = mean_se, # La función mean_se se utiliza para calcular el error estándar de la media, que se muestra como barras de error en el gráfico.
                width = 0.3, # Width se refiere al ancho de las barras de error en el gráfico
                size = 1) + # Size se refiere al grosor de las barras de error en el gráfico
  geom_point(stat = "summary", # La función geom_point se utiliza para agregar puntos al gráfico, representando los promedios de cada grupo.
             fun = mean, size = 3, 
             colour = 14) + 
  scale_y_continuous(limits = c(0, 10)) +
  stat_summary(fun = mean,
               geom = "line",
               aes(group = 1),
               size = 1) +
  theme_bw() +
  labs(x = "Género",
       y = "Años en la escuela",
       title = "Años en la escuela por género") +
  theme(plot.title = element_text(hjust = 0.5,
                                  face = "bold",
                                  color = 4,
                                  size = 16))
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once per session.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

2.3.2 ANOVA

oneway.test(Base_1$`Años en la escuela` ~ Base_1$Género)
## 
##  One-way analysis of means (not assuming equal variances)
## 
## data:  Base_1$`Años en la escuela` and Base_1$Género
## F = 0.34783, num df = 1.0000, denom df = 5.5015, p-value = 0.5787

2.3.2.1 Visualización (Gráfico)

plot(Base_1$`Años en la escuela` ~ Base_1$Género)

2.3.2.2 Alternativa gráfica a ANOVA

Base_1  %>% 
  mutate(Género=factor(Género,levels=c(1,2),labels=c("Femenino","Masculino"))) %>%
  ggplot(aes(x=Género, y=`Años en la escuela`)) +
  geom_errorbar(stat="summary", fun.data=mean_se, width=0.3, size=1) +
  geom_point(stat="summary", fun=mean, size=3, colour=14) +
  scale_y_continuous(limits = c(0, 10)) +
  stat_summary(fun=mean,geom="line",aes(group=1),size=1) +
  theme_bw() +
  labs(x="Género",y="Años en la escuela",title="Años en la escuela por género") +
  theme(plot.title=element_text(hjust=0.5,face="bold",color=4,size=16))
Base_1  %>% 
  mutate(
    `Clase social` = factor(`Clase social`,
                            levels=c(1,2,3,4),
                            labels=c("Muy Baja","Baja","Media","Alta"))) %>%
  ggplot(aes(x = `Clase social`,
             y = `Años en la escuela`)) +
  geom_errorbar(stat = "summary",
                fun.data = mean_se,
                width=0.3,
                size=1) +
  geom_point(stat = "summary",
             fun = mean,
             size = 3, colour = 14) +
  scale_y_continuous(limits = c(0, 10)) +
  stat_summary(fun = mean,
               geom="line",
               aes(group = 1),size = 1) +
  theme_bw() +
  labs(x = "Clase social",
       y = "Años en la escuela",
       title = "Años en la escuela por clase social") +
  theme(plot.title = element_text(hjust = 0.5,
                                  face = "bold",
                                  color = 4,
                                  size = 16))


3 BASE 2

Pasos previos: se recomienda cargar las librerías que se van a # utilizar en el análisis. Para acceder a las funciones de una librería es necesario cargarla en el entorno de trabajo. Para ello se utiliza el comando library(). * NO ES NECESARIO REPETIRLO SI ÉSTO YA SE REALIZÓ ANTERIORMENTE

library(readxl) # Para leer archivos de Excel

3.1 Lectura de tabla

Base_2 <- read_excel("C:/Carpeta/Subcarpeta/Archivo_Tabla2.xlsx")

3.2 Distinción de variables

Base_2$Género = as.factor(Base_2$Género)
Base_2$`Clase social` = as.factor(Base_2$`Clase social`)

3.3 Análisis

3.3.1 T de Student

t.test(Base_2$`Años en la escuela` ~ Base_2$Género)
## 
##  Welch Two Sample t-test
## 
## data:  Base_2$`Años en la escuela` by Base_2$Género
## t = 1.2994, df = 17.707, p-value = 0.2105
## alternative hypothesis: true difference in means between group Femenino and group Masculino is not equal to 0
## 95 percent confidence interval:
##  -0.6806735  2.8806735
## sample estimates:
##  mean in group Femenino mean in group Masculino 
##                     6.4                     5.3

3.3.1.1 Visualización (Gráfico)

plot(Base_2$`Años en la escuela` ~ Base_2$Género)

3.3.1.2 Alternativa gráfica a t

library(ggplot2) 
library(dplyr)

Base_2  %>% 
  mutate(Género=factor(Género,levels=c(1,2),labels=c("Femenino","Masculino"))) %>%
  ggplot(aes(x=Género, y=`Años en la escuela`)) +
  geom_errorbar(stat="summary", fun.data=mean_se, width=0.3, size=1) +
  geom_point(stat="summary", fun=mean, size=3, colour=14) +
  scale_y_continuous(limits = c(0, 10)) +
  stat_summary(fun=mean,geom="line",aes(group=1),size=1) +
  theme_bw() +
  labs(x="Género",y="Años en la escuela",title="Años en la escuela por género") +
  theme(plot.title=element_text(hjust=0.5,face="bold",color=4,size=16))

3.3.2 ANOVA

oneway.test(Base_2$`Años en la escuela` ~ Base_2$`Clase social`)
## 
##  One-way analysis of means (not assuming equal variances)
## 
## data:  Base_2$`Años en la escuela` and Base_2$`Clase social`
## F = 1.8621, num df = 3.0000, denom df = 8.1028, p-value = 0.2134

3.3.2.1 Visualización (Gráfico)

plot(Base_2$`Años en la escuela` ~ Base_2$`Clase social`)

3.3.2.2 Alternativa gráfica

Base_2  %>% 
  mutate(`Clase social`=factor(`Clase social`,levels=c(1,2,3,4),
                               labels=c("Muy Baja","Baja","Media","Alta"))) %>%
  ggplot(aes(x=`Clase social`,y=`Años en la escuela`)) +
  geom_errorbar(stat="summary", fun.data=mean_se, width=0.3, size=1) +
  geom_point(stat="summary",fun=mean,size=3,colour=14) +
  scale_y_continuous(limits=c(0, 10)) +
  stat_summary(fun=mean,geom="line",aes(group=1),size=1) +
  theme_bw() +
  labs(x="Clase social",y="Años en la escuela",
       title="Años en la escuela de acuerdo con la clase social") +
  theme(plot.title=element_text(hjust=0.5, face="bold", color=4,size=16))

3.3.3 Cruce de datos categóricos

table(Base_2$Género, Base_2$`Clase social`)
##            
##             Muy Baja Baja Media Alta
##   Femenino         2    2     3    3
##   Masculino        1    4     3    2
prop.table(table(Base_2$Género, Base_2$`Clase social`)) # Porcentaje del total
##            
##             Muy Baja Baja Media Alta
##   Femenino      0.10 0.10  0.15 0.15
##   Masculino     0.05 0.20  0.15 0.10
prop.table(table(Base_2$Género, Base_2$`Clase social`),
           margin = 1) # Porcentaje por filas
##            
##             Muy Baja Baja Media Alta
##   Femenino       0.2  0.2   0.3  0.3
##   Masculino      0.1  0.4   0.3  0.2
prop.table(table(Base_2$Género, Base_2$`Clase social`),
           margin = 2) # Porcentaje por columnas
##            
##              Muy Baja      Baja     Media      Alta
##   Femenino  0.6666667 0.3333333 0.5000000 0.6000000
##   Masculino 0.3333333 0.6666667 0.5000000 0.4000000

3.3.3.1 Chi-cuadrada

chisq.test(Base_2$Género, Base_2$`Clase social`)
## Warning in chisq.test(Base_2$Género, Base_2$`Clase social`): Chi-squared
## approximation may be incorrect
## 
##  Pearson's Chi-squared test
## 
## data:  Base_2$Género and Base_2$`Clase social`
## X-squared = 1.2, df = 3, p-value = 0.753

El algoritmo lanza una advertencia sobre un cálculo incorrecto. Ello se debe a que no es la técnica adecuada para aplicar en esta tabla; pero por fines didácticos se ignorará dicha advertencia.

3.3.3.2 Visualizaciones (Gráfico)

barplot(table(Base_2$Género, Base_2$`Clase social`)) # Por conteo

barplot(prop.table(table(Base_2$Género, Base_2$`Clase social`),
                   margin = 2)) # Por proporción

3.3.3.3 Alternativa gráfica

Base_2 %>%
  mutate(Género=factor(Género,levels=c(1,2),labels=c("Femenino","Masculino")),
         `Clase social`=factor(`Clase social`,levels=c(1,2,3,4),labels=c("Muy Baja","Baja","Media","Alta"))) %>%
  ggplot(aes(x=`Clase social`, fill=Género)) +
  geom_bar(position="fill") +
  scale_y_continuous(labels=scales::percent) +
  theme_bw() +
  labs(x="Clase social",y="Porcentaje",title="Distribución de género por clase social") +
  theme(plot.title=element_text(hjust=0.5, face="bold",size=16))


4 BASE 3

4.1 Lectura de tabla

Base_3 <- read_excel("C:/Carpeta/Subcarpeta/Archivo_Tabla3.xlsx")

4.2 Distinción de variables

Base_3$Género = as.factor(Base_3$Género)
Base_3$`Clase Social` = as.factor(Base_3$`Clase Social`)

4.3 Análisis

4.3.1 ANOVA

oneway.test(Base_3$`Años en la escuela` ~ Base_3$Género)
## 
##  One-way analysis of means (not assuming equal variances)
## 
## data:  Base_3$`Años en la escuela` and Base_3$Género
## F = 2.8497, num df = 2.000, denom df = 11.979, p-value = 0.0972

4.3.1.1 Visualización (Gráfico)

plot(Base_3$`Años en la escuela` ~ Base_3$Género)

4.3.1.2 Alternativa gráfica

library(ggplot2)
library(dplyr)
Base_3  %>% 
  mutate(Género=factor(Género,
                       levels = c(1,2,3),
                       labels = c("Femenino",
                                  "Masculino",
                                  "Neutro"))) %>%
  ggplot(aes(x = Género, y = `Años en la escuela`)) +
  geom_errorbar(stat = "summary", fun.data = mean_se,
                width = 0.3, size = 1) +
  geom_point(stat = "summary", fun = mean, size = 3, colour = 14) +
  scale_y_continuous(limits = c(0, 10)) +
  stat_summary(fun = mean,
               geom = "line",
               aes(group = 1),size = 1) +
  theme_bw() +
  labs(x = "Género",
       y = "Años en la escuela",
       title = "Años en la escuela por género") +
  theme(plot.title = element_text(hjust = 0.5,
                                  face = "bold",
                                  size=16))

4.3.2 ANOVA

oneway.test(Base_3$`Años en la escuela` ~ Base_3$`Clase Social`)
## 
##  One-way analysis of means (not assuming equal variances)
## 
## data:  Base_3$`Años en la escuela` and Base_3$`Clase Social`
## F = 0.11329, num df = 3.0000, denom df = 8.7356, p-value = 0.9501

4.3.2.1 Visualización (Gráfico)

plot(Base_3$`Años en la escuela` ~ Base_3$`Clase Social`)

4.3.2.2 Alternativa gráfica

Base_3  %>% 
  mutate(`Clase Social` = factor(`Clase Social`,
                                 levels=c(1,2,3,4),
                                 labels=c("Muy Baja","Baja",
                                          "Media","Alta"))) %>%
  ggplot(aes(x = `Clase Social`, y = `Años en la escuela`)) +
  geom_errorbar(stat = "summary", fun.data = mean_se, 
                width = 0.3, size = 1) +
  geom_point(stat = "summary",
             fun = mean,
             size = 3,
             colour = 14) +
  scale_y_continuous(limits = c(0, 10)) +
  stat_summary(fun=mean,geom = "line",
               aes(group = 1), size = 1) +
  theme_bw() +
  labs(x = "Clase Social",
       y = "Años en la escuela",
       title = "Años en la escuela por clase social") +
  theme(plot.title=element_text(hjust = 0.5,
                                face = "bold", size = 16))

4.3.3 Cruce de datos categóricos

table(Base_3$Género,
      Base_3$`Clase Social`)
##            
##             Muy Baja Baja Media Alta
##   Femenino         2    2     1    2
##   Masculino        1    1     2    3
##   Neutro           1    2     3    1
prop.table(table(Base_3$Género,
                 Base_3$`Clase Social`),
           margin = 2)
##            
##              Muy Baja      Baja     Media      Alta
##   Femenino  0.5000000 0.4000000 0.1666667 0.3333333
##   Masculino 0.2500000 0.2000000 0.3333333 0.5000000
##   Neutro    0.2500000 0.4000000 0.5000000 0.1666667

4.3.3.1 Chi-cuadrada

chisq.test(Base_3$Género,
           Base_3$`Clase Social`)
## Warning in chisq.test(Base_3$Género, Base_3$`Clase Social`): Chi-squared
## approximation may be incorrect
## 
##  Pearson's Chi-squared test
## 
## data:  Base_3$Género and Base_3$`Clase Social`
## X-squared = 2.9, df = 6, p-value = 0.8213

4.3.3.2 Visualización (Gráfico)

barplot(prop.table(table(Base_3$Género,
                         Base_3$`Clase Social`),
                   margin = 2))

4.3.3.3 Alternativa gráfica

Base_3 %>% 
  mutate(Género = factor(Género,
                         levels = c(1,2,3),
                         labels = c("Femenino",
                                    "Masculino",
                                    "Neutro")),
         `Clase Social` = factor(`Clase Social`,
                                 levels = c(1,2,3,4),
                                 labels = c("Muy Baja",
                                            "Baja",
                                            "Media","Alta"))) %>%
  ggplot(aes(x = `Clase Social`,
             fill=Género)) +
  scale_fill_manual(values = c("Femenino" = 2,
                               "Masculino" = 3,
                               "Neutro" = 4)) +
  geom_bar(position = "fill") +
  scale_y_continuous(labels = scales::percent) +
  theme_bw() +
  labs(x = "Clase Social",
       y = "Porcentaje",
       title = "Distribución de género por clase social") +
  theme(plot.title = element_text(hjust = 0.5,
                                  face = "bold", size = 16))


5 BASE 4

Previo: Carga de librerías

library(readxl) # Para leer archivos de Excel
library(Hmisc) # Para obtener algunas funciones de correlación

5.1 Lectura de tabla:

Base_4 <- read_excel("C:/Carpeta/Subcarpeta/Archivo_Tabla4.xlsx")

5.2 Análisis

5.2.1 Correlación

La primera opción para obtener los coeficientes de correlación de Pearson (o los especificados) se utiliza la función cor()

cor(Base_4[,2:9]) # Se seleccionan las columnas de variables cuantitativas para calcular la matriz de correlación.
##                  IDS          IPG         IM       PIBpc          ID
## IDS      1.000000000  0.001590034  0.1017738 -0.01062051 -0.19761566
## IPG      0.001590034  1.000000000  0.3030425 -0.32219905 -0.26916668
## IM       0.101773778  0.303042522  1.0000000 -0.41330777 -0.60165384
## PIBpc   -0.010620506 -0.322199051 -0.4133078  1.00000000  0.16946048
## ID      -0.197615655 -0.269166682 -0.6016538  0.16946048  1.00000000
## TFpc     0.190329754  0.006273896  0.3237949  0.17571896 -0.03710451
## DPpc     0.031286184 -0.218243928 -0.2030766  0.08978427  0.05659398
## Pobreza -0.074774116  0.389580430  0.8506781 -0.50855135 -0.57740127
##                 TFpc        DPpc     Pobreza
## IDS      0.190329754  0.03128618 -0.07477412
## IPG      0.006273896 -0.21824393  0.38958043
## IM       0.323794898 -0.20307659  0.85067809
## PIBpc    0.175718958  0.08978427 -0.50855135
## ID      -0.037104514  0.05659398 -0.57740127
## TFpc     1.000000000  0.00205794  0.08381783
## DPpc     0.002057940  1.00000000 -0.27300269
## Pobreza  0.083817827 -0.27300269  1.00000000

La segunda alternativa es utilizar la función rcor() de la librería Hmisc para obtener los coeficientes y los valores de probabilidad de las correlaciones.

rcorr(as.matrix(Base_4[,2:9])) # se utiliza, de manera previa la función "as.matrix()" para convertir el subconjunto de datos en una matriz, que es el formato requerido por la función "rcorr()". La función "rcorr()" calcula la matriz de correlación y los valores p asociados a cada correlación.
##           IDS   IPG    IM PIBpc    ID  TFpc  DPpc Pobreza
## IDS      1.00  0.00  0.10 -0.01 -0.20  0.19  0.03   -0.07
## IPG      0.00  1.00  0.30 -0.32 -0.27  0.01 -0.22    0.39
## IM       0.10  0.30  1.00 -0.41 -0.60  0.32 -0.20    0.85
## PIBpc   -0.01 -0.32 -0.41  1.00  0.17  0.18  0.09   -0.51
## ID      -0.20 -0.27 -0.60  0.17  1.00 -0.04  0.06   -0.58
## TFpc     0.19  0.01  0.32  0.18 -0.04  1.00  0.00    0.08
## DPpc     0.03 -0.22 -0.20  0.09  0.06  0.00  1.00   -0.27
## Pobreza -0.07  0.39  0.85 -0.51 -0.58  0.08 -0.27    1.00
## 
## n= 32 
## 
## 
## P
##         IDS    IPG    IM     PIBpc  ID     TFpc   DPpc   Pobreza
## IDS            0.9931 0.5794 0.9540 0.2783 0.2968 0.8650 0.6842 
## IPG     0.9931        0.0918 0.0721 0.1363 0.9728 0.2301 0.0275 
## IM      0.5794 0.0918        0.0187 0.0003 0.0706 0.2650 0.0000 
## PIBpc   0.9540 0.0721 0.0187        0.3538 0.3361 0.6251 0.0030 
## ID      0.2783 0.1363 0.0003 0.3538        0.8402 0.7583 0.0005 
## TFpc    0.2968 0.9728 0.0706 0.3361 0.8402        0.9911 0.6483 
## DPpc    0.8650 0.2301 0.2650 0.6251 0.7583 0.9911        0.1306 
## Pobreza 0.6842 0.0275 0.0000 0.0030 0.0005 0.6483 0.1306

5.2.1.1 Visualización (Gráfico)

plot(Base_4[,2:9])

5.2.1.2 Alternativa gráfica

library(dplyr)
library(ggplot2)
library(car) # Para obtener funciones gráficas
Base_4 %>% 
  select(-c(`Estados 2018`)) %>%
  scatterplotMatrix(pch = 16,
                    cex = 0.7,
                    cex.main = 1,
                    main = "Matriz de dispersión de variables cuantitativas",
                    diagonal = FALSE)

5.2.1.3 Otras alternativas gráficas

5.2.2 Regresión lineal

summary(lm(Base_4$Pobreza~ Base_4$IPG + Base_4$IM + Base_4$PIBpc + Base_4$ID))
## 
## Call:
## lm(formula = Base_4$Pobreza ~ Base_4$IPG + Base_4$IM + Base_4$PIBpc + 
##     Base_4$ID)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -14.0980  -4.9909  -0.9581   4.3714  14.5530 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   4.208e+01  9.149e+00   4.599 8.95e-05 ***
## Base_4$IPG    1.664e+01  1.737e+01   0.959    0.346    
## Base_4$IM     1.055e+01  1.949e+00   5.415 1.00e-05 ***
## Base_4$PIBpc -3.006e-05  1.778e-05  -1.691    0.102    
## Base_4$ID    -2.157e-01  2.260e-01  -0.954    0.348    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 7.97 on 27 degrees of freedom
## Multiple R-squared:  0.7714, Adjusted R-squared:  0.7376 
## F-statistic: 22.78 on 4 and 27 DF,  p-value: 2.535e-08

5.2.2.1 Visualización (Gráfico)

___*Debido a la versión de RStudio, la línea de regresión puede no mostrarse en el gráfico.___ Este problema no se presentará en entornos locales anteriores a cierta versión.

plot(Base_4$IM, Base_4$Pobreza)
abline(lm(IM ~ Pobreza,
          data = Base_4))

5.2.2.2 Alternativa gráfica

Base_4 %>%
  ggplot(aes(x = Pobreza,
             y = IM)) +
  geom_point(color = 4, 
             size = 3) +
  geom_smooth(method = "lm",
              se = FALSE) +
  theme_bw() +
  labs(y = "Índice de Marginación", 
       x = "Pobreza",
       title = "Relación entre Índice de Marginación y Pobreza") +
  theme(plot.title=element_text(hjust = 0.5,
                                face = "bold",
                                size = 16))
## `geom_smooth()` using formula = 'y ~ x'

5.2.2.3 Alternativas gráficas de mayor complejidad

## `geom_smooth()` using formula = 'y ~ x'

5.2.2.4 Evaluación del modelo

par(mfrow = c(2, 2))
plot(lm(Base_4$Pobreza~ Base_4$IPG + Base_4$IM + Base_4$PIBpc + Base_4$ID))

(Fox and Weisberg 2019) (Wickham et al. 2023) (Wickham and Bryan 2025) (Harrell Jr 2026) (Wickham 2016)

Referencias

Fox, John, and Sanford Weisberg. 2019. An r Companion to Applied Regression. https://www.john-fox.ca/Companion/.
Harrell Jr, Frank E. 2026. Hmisc: Harrell Miscellaneous. https://CRAN.R-project.org/package=Hmisc.
Wickham, Hadley. 2016. Ggplot2: Elegant Graphics for Data Analysis. https://ggplot2.tidyverse.org.
Wickham, Hadley, and Jennifer Bryan. 2025. Readxl: Read Excel Files. https://CRAN.R-project.org/package=readxl.
Wickham, Hadley, Romain François, Lionel Henry, Kirill Müller, and Davis Vaughan. 2023. Dplyr: A Grammar of Data Manipulation. https://CRAN.R-project.org/package=dplyr.

  1. ↩︎

  2. Profr. Titular de la Materia↩︎