Se realizó para estimar la relación existente entre las variables
independientes y la variable dependiente que en este caso es dicotómica
(¿Ha realizado alguna donación a alguna organización de la sociedad
civil?)
Limpieza de la base de datos:
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(tidyr)
library(mlogit)
## Loading required package: dfidx
##
## Attaching package: 'dfidx'
## The following object is masked from 'package:stats':
##
## filter
library(readxl)
Donaciones <- read_excel("/Users/eduardoleyva/Desktop/Donaciones.xlsx")
Donaciones <- Donaciones %>%
filter(X.Ha.realizado.alguna.donación.a.alguna.organización.de.la.sociedad.civil. != 0)
Donaciones <- Donaciones %>%
filter(X.Ha.recibido.agradecimientos.por.su.donación.por.parte.de.la.organización.a.la.que.donó. != 0)
FinalDonaciones <- Donaciones %>%
mutate(X.Ha.realizado.alguna.donación.a.alguna.organización.de.la.sociedad.civil. = recode(X.Ha.realizado.alguna.donación.a.alguna.organización.de.la.sociedad.civil., "1" = "0", "2" = "1"))
FinalDonaciones <- FinalDonaciones %>%
mutate(X.Ha.recibido.agradecimientos.por.su.donación.por.parte.de.la.organización.a.la.que.donó. = recode(X.Ha.recibido.agradecimientos.por.su.donación.por.parte.de.la.organización.a.la.que.donó., "1" = "0", "2" = "1"))
FinalDonaciones <- FinalDonaciones %>%
mutate(X.Estaría.dispuesto.a.realizar.futuras.donaciones.a.la.misma.organización.o.a.otra.organización.de.la.sociedad.civil. =
recode(X.Estaría.dispuesto.a.realizar.futuras.donaciones.a.la.misma.organización.o.a.otra.organización.de.la.sociedad.civil.,
"0" = "1",
"1" = "2",
"2" = "3",
"3" = "4",
"4" = "5")
)
FinalDonaciones$X.Ha.realizado.alguna.donación.a.alguna.organización.de.la.sociedad.civil. <- as.numeric(FinalDonaciones$X.Ha.realizado.alguna.donación.a.alguna.organización.de.la.sociedad.civil.)
FinalDonaciones$X.Siente.que.su.donación.ha.tenido.un.impacto.positivo.en.la.sociedad. <- as.numeric(FinalDonaciones$X.Siente.que.su.donación.ha.tenido.un.impacto.positivo.en.la.sociedad.)
FinalDonaciones$X.Ha.recibido.agradecimientos.por.su.donación.por.parte.de.la.organización.a.la.que.donó. <- as.numeric(FinalDonaciones$X.Ha.recibido.agradecimientos.por.su.donación.por.parte.de.la.organización.a.la.que.donó.)
Regresión 1:
Regresión1 <- glm(X.Ha.realizado.alguna.donación.a.alguna.organización.de.la.sociedad.civil. ~ X.Siente.que.su.donación.ha.tenido.un.impacto.positivo.en.la.sociedad. + X.Ha.recibido.agradecimientos.por.su.donación.por.parte.de.la.organización.a.la.que.donó., data = FinalDonaciones, family = binomial(), maxit = 100)
summary(Regresión1)
##
## Call:
## glm(formula = X.Ha.realizado.alguna.donación.a.alguna.organización.de.la.sociedad.civil. ~
## X.Siente.que.su.donación.ha.tenido.un.impacto.positivo.en.la.sociedad. +
## X.Ha.recibido.agradecimientos.por.su.donación.por.parte.de.la.organización.a.la.que.donó.,
## family = binomial(), data = FinalDonaciones, maxit = 100)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -1.461e-06 -1.461e-06 -1.461e-06 -1.461e-06 -1.461e-06
##
## Coefficients:
## Estimate
## (Intercept) -2.757e+01
## X.Siente.que.su.donación.ha.tenido.un.impacto.positivo.en.la.sociedad. -1.149e-14
## X.Ha.recibido.agradecimientos.por.su.donación.por.parte.de.la.organización.a.la.que.donó. -1.192e-14
## Std. Error
## (Intercept) 2.033e+05
## X.Siente.que.su.donación.ha.tenido.un.impacto.positivo.en.la.sociedad. 1.844e+05
## X.Ha.recibido.agradecimientos.por.su.donación.por.parte.de.la.organización.a.la.que.donó. 1.114e+05
## z value
## (Intercept) 0
## X.Siente.que.su.donación.ha.tenido.un.impacto.positivo.en.la.sociedad. 0
## X.Ha.recibido.agradecimientos.por.su.donación.por.parte.de.la.organización.a.la.que.donó. 0
## Pr(>|z|)
## (Intercept) 1
## X.Siente.que.su.donación.ha.tenido.un.impacto.positivo.en.la.sociedad. 1
## X.Ha.recibido.agradecimientos.por.su.donación.por.parte.de.la.organización.a.la.que.donó. 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 0.0000e+00 on 150 degrees of freedom
## Residual deviance: 3.2228e-10 on 148 degrees of freedom
## AIC: 6
##
## Number of Fisher Scoring iterations: 26
Regresión 2:
Regresión2 <- glm(X.Ha.realizado.alguna.donación.a.alguna.organización.de.la.sociedad.civil. ~ X.Siente.que.su.donación.ha.tenido.un.impacto.positivo.en.la.sociedad. + X.Estaría.dispuesto.a.realizar.futuras.donaciones.a.la.misma.organización.o.a.otra.organización.de.la.sociedad.civil., data = FinalDonaciones, family = binomial(), maxit = 100)
summary(Regresión2)
##
## Call:
## glm(formula = X.Ha.realizado.alguna.donación.a.alguna.organización.de.la.sociedad.civil. ~
## X.Siente.que.su.donación.ha.tenido.un.impacto.positivo.en.la.sociedad. +
## X.Estaría.dispuesto.a.realizar.futuras.donaciones.a.la.misma.organización.o.a.otra.organización.de.la.sociedad.civil.,
## family = binomial(), data = FinalDonaciones, maxit = 100)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -1.461e-06 -1.461e-06 -1.461e-06 -1.461e-06 -1.461e-06
##
## Coefficients:
## Estimate
## (Intercept) -2.757e+01
## X.Siente.que.su.donación.ha.tenido.un.impacto.positivo.en.la.sociedad. -2.987e-14
## X.Estaría.dispuesto.a.realizar.futuras.donaciones.a.la.misma.organización.o.a.otra.organización.de.la.sociedad.civil.3 2.701e-14
## X.Estaría.dispuesto.a.realizar.futuras.donaciones.a.la.misma.organización.o.a.otra.organización.de.la.sociedad.civil.4 4.687e-16
## X.Estaría.dispuesto.a.realizar.futuras.donaciones.a.la.misma.organización.o.a.otra.organización.de.la.sociedad.civil.5 8.054e-15
## Std. Error
## (Intercept) 2.090e+05
## X.Siente.que.su.donación.ha.tenido.un.impacto.positivo.en.la.sociedad. 1.976e+05
## X.Estaría.dispuesto.a.realizar.futuras.donaciones.a.la.misma.organización.o.a.otra.organización.de.la.sociedad.civil.3 1.196e+05
## X.Estaría.dispuesto.a.realizar.futuras.donaciones.a.la.misma.organización.o.a.otra.organización.de.la.sociedad.civil.4 2.350e+05
## X.Estaría.dispuesto.a.realizar.futuras.donaciones.a.la.misma.organización.o.a.otra.organización.de.la.sociedad.civil.5 4.297e+05
## z value
## (Intercept) 0
## X.Siente.que.su.donación.ha.tenido.un.impacto.positivo.en.la.sociedad. 0
## X.Estaría.dispuesto.a.realizar.futuras.donaciones.a.la.misma.organización.o.a.otra.organización.de.la.sociedad.civil.3 0
## X.Estaría.dispuesto.a.realizar.futuras.donaciones.a.la.misma.organización.o.a.otra.organización.de.la.sociedad.civil.4 0
## X.Estaría.dispuesto.a.realizar.futuras.donaciones.a.la.misma.organización.o.a.otra.organización.de.la.sociedad.civil.5 0
## Pr(>|z|)
## (Intercept) 1
## X.Siente.que.su.donación.ha.tenido.un.impacto.positivo.en.la.sociedad. 1
## X.Estaría.dispuesto.a.realizar.futuras.donaciones.a.la.misma.organización.o.a.otra.organización.de.la.sociedad.civil.3 1
## X.Estaría.dispuesto.a.realizar.futuras.donaciones.a.la.misma.organización.o.a.otra.organización.de.la.sociedad.civil.4 1
## X.Estaría.dispuesto.a.realizar.futuras.donaciones.a.la.misma.organización.o.a.otra.organización.de.la.sociedad.civil.5 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 0.0000e+00 on 150 degrees of freedom
## Residual deviance: 3.2228e-10 on 146 degrees of freedom
## AIC: 10
##
## Number of Fisher Scoring iterations: 26
Pruebas Chi Cuadrada
Regresión 1:
RegresiónChi1=Regresión1$null.deviance - Regresión1$deviance
RegresiónChi1
## [1] -3.222782e-10
Regresión 2:
RegresiónChi2=Regresión2$null.deviance - Regresión2$deviance
RegresiónChi2
## [1] -3.222782e-10
Prueba de Hipótesis:
Los profesionistas de mayor nivel de ingresos anuales tienen una
mayor frecuencia de donación en dinero que aquellos de menor nivel de
ingresos anuales.
DatosHipótesis <- read_excel("/Users/eduardoleyva/Desktop/Base limpia LETRAS donadores.xlsx")
## New names:
## • `Estado` -> `Estado...2`
## • `Estado` -> `Estado...52`
ingresosDF <- data.frame(Ingresos = DatosHipótesis$`Ingresos anuales`,
Donaciones = DatosHipótesis$X.Podría.indicarnos.cuánto.ha.donado.en.términos.monetarios.en.el.último.año.)
ingresosDF$DonacionNumerica <- case_when(
ingresosDF$Donaciones == "Menos de $1,000" ~ 500,
ingresosDF$Donaciones == "Entre $1,000 y $5,000" ~ 3000,
ingresosDF$Donaciones == "Entre $5,001 y $10,000" ~ 7500,
ingresosDF$Donaciones == "Más de $10,000" ~ 10000,
ingresosDF$Donaciones == "0" ~ 0
)
resumen <- ingresosDF %>%
group_by(Ingresos) %>%
summarise(MediaDonaciones = mean(DonacionNumerica),
DesvEstandarDonaciones = sd(DonacionNumerica),
N = n())
print(resumen)
## # A tibble: 6 × 4
## Ingresos MediaDonaciones DesvEstandarDonaciones N
## <chr> <dbl> <dbl> <int>
## 1 0 3349. 3979. 76
## 2 Entre $100,001 y $150,000 1176. 1960. 17
## 3 Entre $40,000 y $100,000 2188. 3276. 16
## 4 Menos de $40,000 2000 2762. 48
## 5 Más de $150,000 2324. 3132. 37
## 6 <NA> NA NA 3
modelo <- aov(DonacionNumerica ~ Ingresos, data = ingresosDF)
anova_tabla <- summary(modelo)
print(anova_tabla)
## Df Sum Sq Mean Sq F value Pr(>F)
## Ingresos 4 9.901e+07 24751538 2.205 0.07 .
## Residuals 189 2.122e+09 11225006
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 3 observations deleted due to missingness
p_valor <- anova_tabla[[1]][["Pr(>F)"]][1]
print(p_valor)
## [1] 0.07001671
if (p_valor < 0.05) {
cat("Rechazamos la hipótesis nula (H0). Aceptamos la hipótesis alternativa (H2).\n")
} else {
cat("No podemos rechazar la hipótesis nula (H0): La frecuencia de donación en dinero es la misma para todos los niveles de ingresos")
}
## No podemos rechazar la hipótesis nula (H0): La frecuencia de donación en dinero es la misma para todos los niveles de ingresos
La cantidad donada está positivamente correlacionada con la
frecuencia de donación.
datos <- read_excel("/Users/eduardoleyva/Desktop/Base limpia LETRAS donadores.xlsx")
## New names:
## • `Estado` -> `Estado...2`
## • `Estado` -> `Estado...52`
ingresosDF <- data.frame(Ingresos = datos$X.Con.qué.frecuencia.realiza.donaciones.monetarias.,
Donaciones = datos$X.Podría.indicarnos.cuánto.ha.donado.en.términos.monetarios.en.el.último.año.)
ingresosDF$DonacionNumerica <- case_when(
ingresosDF$Donaciones == "Menos de $1,000" ~ 500,
ingresosDF$Donaciones == "Entre $1,000 y $5,000" ~ 3000,
ingresosDF$Donaciones == "Entre $5,001 y $10,000" ~ 7500,
ingresosDF$Donaciones == "Más de $10,000" ~ 10000,
ingresosDF$Donaciones == "0" ~ 0
)
resumen <- ingresosDF %>%
group_by(Ingresos) %>%
summarise(MediaDonaciones = mean(DonacionNumerica),
DesvEstandarDonaciones = sd(DonacionNumerica),
N = n())
print(resumen)
## # A tibble: 6 × 4
## Ingresos MediaDonaciones DesvEstandarDonaciones N
## <chr> <dbl> <dbl> <int>
## 1 0 1750 3335. 66
## 2 Anual 2342. 2832. 57
## 3 Mensual 3139. 3739. 36
## 4 Semestral 2972. 3475. 18
## 5 Trimestral 4471. 3797. 17
## 6 <NA> NA NA 3
resumen <- ingresosDF %>%
group_by(Ingresos) %>%
summarise(MediaDonaciones = mean(DonacionNumerica),
DesvEstandarDonaciones = sd(DonacionNumerica),
N = n())
print(resumen)
## # A tibble: 6 × 4
## Ingresos MediaDonaciones DesvEstandarDonaciones N
## <chr> <dbl> <dbl> <int>
## 1 0 1750 3335. 66
## 2 Anual 2342. 2832. 57
## 3 Mensual 3139. 3739. 36
## 4 Semestral 2972. 3475. 18
## 5 Trimestral 4471. 3797. 17
## 6 <NA> NA NA 3
modelo2 <- aov(DonacionNumerica ~ Ingresos, data = ingresosDF)
anova_tabla2 <- summary(modelo2)
print(anova_tabla2)
## Df Sum Sq Mean Sq F value Pr(>F)
## Ingresos 4 1.231e+08 30762827 2.772 0.0285 *
## Residuals 189 2.097e+09 11097783
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 3 observations deleted due to missingness
p_valor2 <- anova_tabla2[[1]][["Pr(>F)"]][1]
print(p_valor2)
## [1] 0.02852504
if (p_valor2 < 0.05) {
cat("Se rechaza H0: La cantidad donada no está correlacionada con la frecuencia de donación.")
} else {
cat("Se acepta H0: La cantidad donada no está correlacionada con la frecuencia de donación.")
}
## Se rechaza H0: La cantidad donada no está correlacionada con la frecuencia de donación.