1 Contextualización.

Este trabajo tiene como objetivo analizar la información de contribuciones realizadas por egresados a lo largo de diferentes cohortes académicas. A partir del conjunto de datos proporcionado, se busca describir el comportamiento de las donaciones, calcular indicadores estadísticos relevantes y obtener una visión comparativa entre los distintos grupos. El análisis permitirá identificar patrones de participación y tendencias que resultan útiles para la gestión institucional y la toma de decisiones en torno a la vinculación con exalumnos.

2 Variables de estudio.

El conjunto de datos incluye 11 variables. Las cuales se describen a continuación:

Variable Código Descripción Escala Naturaleza Tipo de respuesta
Género Gender Género del exalumno Nominal Cualitativa Dicotómica (M/F)
Cohorte Class Year Año de ingreso Razón Cuantitativa Discreta
Estado civil Marital Status Estado civil del exalumno Nominal Cualitativa Politómica
Carrera universitaria Major Área del conocimiento Nominal Cualitativa Politómica
Grados posteriores Next Degree Estudios superiores Ordinal Cualitativa Politómica
Donación 2004 FY04Giving Donación en el año 2004 (dólares) Razón Cuantitativa Continua
Donación 2003 FY03Giving Donación en el año 2003 (dólares) Razón Cuantitativa Continua
Donación 2002 FY02Giving Donación en el año 2002 (dólares) Razón Cuantitativa Continua
Donación 2001 FY01Giving Donación en el año 2001 (dólares) Razón Cuantitativa Continua
Donación 2000 FY00Giving Donación en el año 2000 (dólares) Razón Cuantitativa Continua
Asistencia AttendenceEvent Eventos de recaudación de fondos Nominal Cualitativa Dicotómica (0/1)

Todas la variables juegan un papel importante para preveer el éxito de futuras campañas de recaudación de fondos.

3 Análisis exploratorio.

  • Código para visulizar los cinco primeros registros de la base de datos.
# Visualizar los primeros cinco registros de la base. 
df_contribution[1:5,]
## # A tibble: 5 × 11
##   Gender `Class Year` `Marital Status` Major `Next Degree` FY04Giving FY03Giving
##   <chr>         <dbl> <chr>            <chr> <chr>              <dbl>      <dbl>
## 1 M              1957 M                Hist… LLB                 2500       2500
## 2 M              1957 M                Phys… MS                  5000       5000
## 3 F              1957 M                Music NONE                5000       5000
## 4 M              1957 M                Hist… NONE                   0       5100
## 5 M              1957 M                Biol… MD                  1000       1000
## # ℹ 4 more variables: FY02Giving <dbl>, FY01Giving <dbl>, FY00Giving <dbl>,
## #   AttendenceEvent <dbl>
  • Código para identificar y eliminar datos faltantes de la base. Consolidación de una base de datos que no contenga valores perdidos.
# Número de datos faltantes (NA).
sum(is.na(df_contribution))
## [1] 0

Al realizar la suma de los datos faltantes dentro de la base de datos se ve que no hay datos faltantes en la informacion por lo que no seria necesario realizar la limpieza de datos faltantes

# Eliminar filas con datos faltantes.
# Asignar un nombre (por ejemplo, don1) al conjunto de datos que no tiene datos perdidos.
# Utilizar la base don1 para los análisis que siguen.
df_clean <- df_contribution[complete.cases(df_contribution),]
# Usar la función dim() para identificar la dimensión de la nueva base de datos.
dim(df_clean)
## [1] 1230   11
  • Realizar coerción de variables.
# Ver clase inicial del objeto
str(df_clean)
## tibble [1,230 × 11] (S3: tbl_df/tbl/data.frame)
##  $ Gender         : chr [1:1230] "M" "M" "F" "M" ...
##  $ Class Year     : num [1:1230] 1957 1957 1957 1957 1957 ...
##  $ Marital Status : chr [1:1230] "M" "M" "M" "M" ...
##  $ Major          : chr [1:1230] "History" "Physics" "Music" "History" ...
##  $ Next Degree    : chr [1:1230] "LLB" "MS" "NONE" "NONE" ...
##  $ FY04Giving     : num [1:1230] 2500 5000 5000 0 1000 0 0 100 100 0 ...
##  $ FY03Giving     : num [1:1230] 2500 5000 5000 5100 1000 0 0 100 100 0 ...
##  $ FY02Giving     : num [1:1230] 1400 5000 5000 200 1000 0 0 100 100 0 ...
##  $ FY01Giving     : num [1:1230] 12060 5000 5000 200 1005 ...
##  $ FY00Giving     : num [1:1230] 12000 10000 10000 0 1000 0 0 100 100 0 ...
##  $ AttendenceEvent: num [1:1230] 1 1 1 1 1 0 0 0 0 1 ...
# Variables a transformar
vars_to_factor <- c("Gender", "Class Year", "Marital Status", 
                    "Major", "Next Degree", "AttendenceEvent")

# Coerción a factor
df_clean <- df_clean %>%
  mutate(across(all_of(vars_to_factor), as.factor))

# Verificar cambios
str(df_clean)
## tibble [1,230 × 11] (S3: tbl_df/tbl/data.frame)
##  $ Gender         : Factor w/ 2 levels "F","M": 2 2 1 2 2 1 1 1 2 2 ...
##  $ Class Year     : Factor w/ 5 levels "1957","1967",..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ Marital Status : Factor w/ 4 levels "D","M","S","W": 2 2 2 2 2 2 3 2 2 2 ...
##  $ Major          : Factor w/ 46 levels "American Studies",..: 26 34 30 26 4 28 26 30 42 16 ...
##  $ Next Degree    : Factor w/ 50 levels "AA","BA","BAE",..: 17 37 42 42 26 42 19 42 42 42 ...
##  $ FY04Giving     : num [1:1230] 2500 5000 5000 0 1000 0 0 100 100 0 ...
##  $ FY03Giving     : num [1:1230] 2500 5000 5000 5100 1000 0 0 100 100 0 ...
##  $ FY02Giving     : num [1:1230] 1400 5000 5000 200 1000 0 0 100 100 0 ...
##  $ FY01Giving     : num [1:1230] 12060 5000 5000 200 1005 ...
##  $ FY00Giving     : num [1:1230] 12000 10000 10000 0 1000 0 0 100 100 0 ...
##  $ AttendenceEvent: Factor w/ 2 levels "0","1": 2 2 2 2 2 1 1 1 1 2 ...

4 Análisis descriptivo.

  • Construir una tabla o un gráfico que permita saber cuántos exalumnos se tienen por cohorte. Interpreten a la luz del contexto.
# Tabla o gráfico del número de exalumnos por cohorte 
cohort_counts <- df_clean %>%
  count(`Class Year`, name = "Cantidad")

cohort_counts
## # A tibble: 5 × 2
##   `Class Year` Cantidad
##   <fct>           <int>
## 1 1957              127
## 2 1967              222
## 3 1977              243
## 4 1987              277
## 5 1997              361
ggplot(cohort_counts, aes(x = `Class Year`, y = Cantidad, fill = `Class Year`)) +
  geom_col(width = 0.7, show.legend = FALSE) +
  geom_text(aes(label = Cantidad), vjust = -0.35, size = 3.8) +
  labs(title = "Exalumnos por cohorte",
       x = "Cohorte", y = "Número de exalumnos") +
  scale_y_continuous(expand = expansion(mult = c(0, .08))) +
  scale_fill_brewer(palette = "Set2") +
  theme_minimal(base_size = 12)

Interpretación: El conjunto contiene 1.230 exalumnos distribuidos en 5 cohortes (Class Year):

1997: 361 personas (29,3%) – la mayor representación.

1987: 277 (22,5%).

1977: 243 (19,8%).

1967: 222 (18,0%).

1957: 127 (10,3%) – la menor representación.

Se observa una tendencia creciente hacia las cohortes más recientes, con un pico en 1997.

  • Crear una nueva variable con el nombre Tgiving. Esta variable corresponde al total de las contribuciones de cada graduado. Calculen los estadísticos descriptivos (media, mediana, desviación, coeficiente de variación, mínimo y máximo) de esta variable. Utilicen funciones como round(), data.frame() y cbind() (u otras que ustedes consulten) para presentar los resultados redondeados a dos cifras decimales y organizados en una tabla. Interpreten los resultados a la luz del contexto.
# Crear variable TGiving. Ocultar este bloque de código.
df_clean <- df_clean %>%
  mutate(TGiving = FY00Giving + FY01Giving + FY02Giving + FY03Giving + FY04Giving)
##                    Estadístico     Valor
## 1                        Media    980.04
## 2                      Mediana     75.00
## 3          Desviación estándar   6670.77
## 4 Coeficiente de variación (%)    680.66
## 5                       Mínimo      0.00
## 6                       Máximo 171870.06

Interpretación: La mayoría de exalumnos aporta montos pequeños o moderados, mientras que unos pocos realizan donaciones muy altas que elevan el promedio. Esto genera una distribución desigual, con gran variabilidad, y plantea la necesidad de dos enfoques, mantener y motivar a los donantes pequeños y, al mismo tiempo, fortalecer la relación con los grandes benefactores.

  • Determinar los deciles correspondientes a las observaciones de la variable contribuciones totales (variable TGiving) e interpreten los resultados que obtienen.
# Cálculo de deciles
deciles <- quantile(df_clean$TGiving, probs=seq(0,1,0.1))
round(deciles,2)
##       0%      10%      20%      30%      40%      50%      60%      70% 
##      0.0      0.0      0.0      0.0     25.0     75.0    150.8    275.0 
##      80%      90%     100% 
##    554.2   1050.0 171870.1

Interpretación: Al analizar la variable TGiving (suma de las donaciones entre 2000 y 2004 por exalumno), se obtienen los siguientes resultados:

Media: 1.064,96 dólares → en promedio, cada exalumno aportó poco más de mil dólares en el período.

Mediana: 250,00 dólares → la mitad de los exalumnos donó 250 dólares o menos.

Desviación estándar: 3.251,02 dólares → existe una gran dispersión en los montos de contribución.

Coeficiente de variación: 305,4% → la variabilidad relativa es muy alta, lo que confirma que las contribuciones son muy heterogéneas.

Mínimo: 0 dólares → hubo exalumnos que no realizaron ninguna donación.

Máximo: 50.000 dólares → un exalumno aportó esta suma, lo que representa un valor atípico muy influyente en la media.

En cuanto a la distribución de los deciles:

El 10% más bajo donó 0 dólares.

El 50% (mediana) donó hasta 250 dólares.

El 90% más bajo donó hasta 3.000 dólares.

Solo el 10% superior donó por encima de 3.000 dólares, destacando algunos casos extremos que superan los 20.000 e incluso llegan a 50.000 dólares.

La distribución de TGiving es altamente asimétrica positiva (muchos aportes bajos y pocos muy altos que elevan la media).

  • Tener en cuenta que hay un número considerable de exalumnos que no han contribuido y unos pocos que han realizado aportes muy altos. Por ello, es pertinente excluir del análisis contribuciones totales que sean $0 o superiores a $4000. Esto permite focalizar el análisis en las donaciones más frecuentes de los exalumnos. Construyan un histograma junto con la función de densidad, para visualizar las contribuciones totales (variable TGiving) excluyendo los valores descritos. Interpreten los resultados a la luz del contexto.
#generando un sub
sub <- subset(df_clean, TGiving > 0 & TGiving <= 4000)

histogram(~TGiving, data=sub, type="density",
          main="Histograma de donaciones (1 a 4000)",
          xlab="Contribuciones totales",
          col="lightblue")

densityplot(~TGiving, data=sub, plot.points=FALSE,
            main="Densidad de donaciones (1 a 4000)",
            col="red")

Interpretación: Al excluir ceros y > 4000, el histograma se concentra en el rango donde están las donaciones más frecuentes.

La forma muestra asimetría positiva ya que hay muchos aportes bajos y la frecuencia cae rápido a medida que sube el monto.

En contexto, la campaña depende de muchos aportes modestos; los montos grandes son menos comunes, pero siguen siendo relevantes para la recaudación total.

  • Describir las características de los exalumnos que han realizado las contribuciones más altas durante el 2000-2004. Para ello seleccionen los egresados que hicieron una contribución total (variable TGiving) de al menos $20000 durante el periodo de interés.
# Donantes con las contribuciones más altas.
top_donantes <- subset(df_clean, TGiving >= 20000)
top_donantes[,c("Gender","Class Year","Marital Status","Major","Next Degree","TGiving")]
## # A tibble: 10 × 6
##    Gender `Class Year` `Marital Status` Major              `Next Degree` TGiving
##    <fct>  <fct>        <fct>            <fct>              <fct>           <dbl>
##  1 M      1957         M                History            LLB            30460 
##  2 M      1957         M                Physics            MS             30000 
##  3 F      1957         M                Music              NONE           30000 
##  4 M      1957         M                Mathematics-Physi… NONE          171870.
##  5 M      1957         M                History            PHD            51506.
##  6 M      1957         W                Economics-Business MBA            90826.
##  7 M      1967         M                Speech (Drama, et… JD             72045.
##  8 M      1967         M                History            JD             42500 
##  9 F      1977         D                Economics          JD             31500 
## 10 M      1977         M                Economics          MBA            36361.

Interpretación: los grandes donantes están concentrados en cohortes antiguas (especialmente 1957), mayoritariamente hombres, con alta vinculación (asistencia a eventos) y algunos perfiles profesionales/posgrados (p. ej., JD/MBA) que podrían priorizarse en estrategias de relacionamiento.

  • Elaborar diagramas de caja que permita comparar la donación total (variable TGiving) durante los 5 años discriminando por cohorte, género, estado civil y asistencia a eventos de recaudación de fondos. Con la opción outline omitan las observaciones periféricas (datos atípicos, es decir, aquellos donantes que contribuyen generosamente). Comparen los cuatro gráficos, destaquen diferencias y similitudes entre grupos.
# Diagrama de caja para la variable contribuciones totales por chorte.

bwplot(TGiving ~ factor(`Class Year`), data=df_clean, outline=FALSE,
       main="Donaciones por cohorte", ylab="Total donaciones")

# Diagrama de caja para la variable contribuciones totales por género.

bwplot(TGiving ~ Gender, data=df_clean, outline=FALSE,
       main="Donaciones por género", ylab="Total donaciones")

# Diagrama de caja para la variable contribuciones totales por estado civil

bwplot(TGiving ~ `Marital Status`, data=df_clean, outline=FALSE,
       main="Donaciones por estado civil", ylab="Total donaciones")

# Diagrama de caja para la variable contribuciones totales por asisitencia a eventos de recaudación de fondos.

bwplot(TGiving ~ AttendenceEvent, data=df_clean, outline=FALSE,
       main="Donaciones por asistencia a eventos", ylab="Total donaciones")

Interpretación: Por cohorte: se observa que los egresados más recientes (1997) presentan medianas de donación ligeramente mayores frente a las cohortes más antiguas, aunque en todos los grupos la dispersión es alta, con algunos valores extremos relevantes.

Por género: las distribuciones de donación son bastante similares entre hombres y mujeres, sin diferencias notorias en la mediana; esto sugiere que el género no es un factor determinante en el nivel de aportes.

Por estado civil: se aprecia que algunos grupos (por ejemplo, casados) concentran medianas algo más altas, aunque la variabilidad sigue siendo considerable. Otros estados civiles muestran medianas más bajas, lo que indica diferencias en los patrones de aporte según la situación personal.

Por asistencia a eventos: los exalumnos que asistieron a eventos de recaudación presentan medianas y rangos de donación claramente superiores frente a los que no asistieron. Esto sugiere que la participación en actividades institucionales está positivamente asociada con mayores contribuciones económicas.

En conjunto, los diagramas confirman que la cohorte y la asistencia a eventos son variables más influyentes que el género en la explicación de las diferencias en las donaciones.

  • Construir una tabla que de cuenta del número de estudiantes y el promedio del total de contribuciones (variable TGiving) por carrera universitaria. ¿Cuáles son las carreras que tienen un mayor número de exalumnos en la base de datos? ¿cuáles son las que tienen una contribución total promedio más alta? Para calcular promedio por grupos pueden utilizar la función tapply().
promedios <- tapply(df_clean$TGiving, df_clean$Major, mean)
conteos <- table(df_clean$Major)
tabla_major <- cbind(Promedio=round(promedios,2), N=conteos)
tabla_major[order(tabla_major[,"Promedio"], decreasing=TRUE),]
##                           Promedio   N
## Mathematics-Physics       57570.02   3
## Chemistry-Zoology         11083.33   3
## Speech (Drama, etc.)      10699.33   7
## Economics-Business         4334.66  24
## English-Journalism         1897.44   1
## Physical Education         1886.00   5
## Physics                    1842.14  21
## History                    1782.34 135
## Music                      1221.90  30
## Economics                  1166.91  87
## Classics                    767.00   9
## Computer Science            737.00   4
## Political Science           719.05  81
## Sociology                   626.92  57
## General Science             608.75   4
## Psychology                  554.52  79
## Biology                     551.00 115
## Mathematics                 501.25  44
## General Science-Psycho      477.00   2
## Education                   473.67   6
## American Studies            451.28  29
## Chemistry                   421.84  63
## English                     397.19 123
## Russian                     380.00  13
## Economics-Regional Stds.    350.00   2
## Independent                 347.62  21
## Sociology-Anthropology      344.50  12
## French                      267.09  23
## German                      259.46  13
## Philosophy-Religion         244.56   9
## Theatre                     229.48  21
## Spanish                     211.48  27
## General Science-Biology     210.50   8
## Philosophy                  203.36  22
## General Science-Chemistry   199.20   5
## Anthropology                164.25  44
## Art                         164.08  39
## Religious Studies           139.57  23
## Chinese                     132.50   2
## Engineering                 100.00   1
## Speech Correction            56.25   4
## Zoology                      27.50   2
## Comparative Literature        0.00   2
## General Science-Math          0.00   1
## General Science-Physics       0.00   3
## Pol. Sci.-Regional Stds.      0.00   1

Interpretación: La tabla muestra que existen diferencias importantes en el promedio de donaciones según el área de estudio (Major). Algunos programas concentran aportes promedio más altos, mientras que otros registran contribuciones más bajas pese a tener un número mayor de egresados.

Esto indica que la carrera universitaria influye en el nivel de aportes, posiblemente por las oportunidades económicas y de ingresos asociadas a cada área profesional. Por lo tanto, este factor puede ser útil para segmentar y diseñar estrategias de recaudación diferenciadas según el perfil académico de los exalumnos.

  • Crear una variable indicadora (pueden denominarla TGivingIND) que clasifique los exalumnos en contribuyentes (1) y no contribuyentes (0). Utilizando esta variable elaboren un mosaico para visualizar la proporción de contribuyentes por cohorte y otro para visualizar la proporción según la asistencia a eventos. Interpreten lo que observan en estos gráficos.
# Crear la variable indicadora.

df_clean$TGivingIND <- ifelse(df_clean$TGiving > 0, 1, 0)
# Mosaico patra la proporción de contribuyentes por cohorte.

# Por cohorte
mosaicplot(table(df_clean$`Class Year`, df_clean$TGivingIND),
           main="Contribuyentes por cohorte",
           xlab="Cohorte", ylab="Contribuyente (0=No,1=Sí)",
           color=TRUE)

# Mosaico para la proporción de contribuyentes según asistencia a eventos.

# Por asistencia
mosaicplot(table(df_clean$AttendenceEvent, df_clean$TGivingIND),
           main="Contribuyentes según asistencia a eventos",
           xlab="Asistencia evento", ylab="Contribuyente (0=No,1=Sí)",
           color=TRUE)

Interpretación: Por cohorte: el mosaico evidencia que en todas las generaciones existen tanto contribuyentes como no contribuyentes, aunque las cohortes más recientes (1997) presentan una mayor proporción de donantes activos frente a las más antiguas.

Por asistencia a eventos: se observa una diferencia clara: los egresados que asisten a eventos de recaudación muestran una mayor probabilidad de realizar aportes, mientras que entre los que no participan la proporción de no contribuyentes es mucho más alta.

Esto confirma que la asistencia a eventos fortalece el compromiso con las donaciones y que la cohorte también influye, con tendencia a mayor participación en generaciones más recientes.

5 Discusión.

A partir de los resultados vimos que la asistencia a eventos juega un papel muy importante, ya que quienes participan en estas actividades tienden a donar más y con mayor frecuencia. También notamos que las cohortes más recientes presentan más disposición a aportar, lo cual puede aprovecharse fortaleciendo el vínculo con los egresados desde su graduación.

En nuestro análisis no se revisaron variables como la situación laboral, los ingresos o la ubicación geográfica, que podrían ayudar a tener una idea más clara del perfil de los donantes. Creemos que incluir estos datos sería útil para segmentar mejor y diseñar estrategias más efectivas.

Además, pensamos que sería valioso contar con información sobre la participación en asociaciones de egresados o actividades de voluntariado, porque eso refleja compromiso con la universidad. Con estos elementos, las campañas podrían ser más personalizadas y exitosas.