dataframe[,]=lapply(dataframe[,],trimws,whitespace=“[\h\v]”)
names(dataframe)=str_replace_all(names(dataframe),“[^[:ascii:]]”,"")
dataframe[,]=lapply(dataframe[,],str_replace_all,“[^[:ascii:]]”,"")
names(dataframe)
dataframe$colummna a eliminar =NULL
dataframe[!complete.cases(dataframe),]
dataframe$columna eliminada =NULL
dataframe=dataframe[complete.cases(dataframe),]
Para contrastar la normalidad se usa Shapiro-Wilk con shapiro.test() Si el p-value es mayor a 0.05 => aceptamos la hipótesis nula Es normal y Parametrica
SI LA DEPENDIENTE ES ANORMAL TODO EL CÁLCULO BIVARIADO DEBE SER DADO EN ANORMAL (NO PARAMÉTRICO)
La correlacion mide el grado de asociacion entre las dos o mas variables. el coeficiente de correlacion lineal de Pearson(para PARAMETRICA) contrasta la correlacion lineal.
cor.test(df\(V1,df\)V2)
La correlacion negativa => indica que las variables estan asociadas de forma inversa,
El coeficiente Person significativo si es menor de 0.05
Spearman es para NO PARAMTRICA hace los mismo para la correlacion
Hacemos la regresión lineal la función lm( y ~ x, data).
Examinamos los coeficientes del modelo de regresión con la función summary( )
Concepto : La regresión lineal múltiple permite generar un modelo lineal en el que el valor de la variable dependiente o respuesta (Y) se determina a partir de un conjunto de variables independientes llamadas predictores (X1, X2, X3…).
Los modelos de regresión múltiple pueden emplearse para predecir el valor de la variable dependiente o para evaluar la influencia que tienen los predictores sobre ella (esto último se debe que analizar con cautela para no malinterpretar causa-efecto)
El comando básico es lm (linear models). El primer argumento de este comando es una fórmula y ~ x en la que se especifica cuál es la variable respuesta o dependiente (y) y cuál es la variable regresora o independiente (x).
regresion <- lm(grasas ~ edad, data = grasas) summary(regresion)
. Relación IP al ser el “estimate” negativo
. Relación DP al ser el “estimate” positivo
. Leer signif. code para observar el cálculo de la significatividad
. Acercarse a 0 (’*’ ∧ ‘.’) = El nivel con el que se afecta a la variable dependiente aumenta
. No es significativo algo (efecto en) al no haber nada, ni ‘.’ ni ’*’
Variable Dep => Apropiacion dolar (y)
Variables Indep => Priorizado (x1) Pctopo (x2) Uribista x3) con_consejocomunal (x4) ejecucion (x5) poblacioncienmil (x6) nbi (x7)
link="https://docs.google.com/spreadsheets/d/e/2PACX-1vTLwlJ0dQJCuiidZvNH121tKRKCkpecEpdPolQO60oQ0SuAO66bVSZwTLtFJgXYeUiTSQJ5ripcwEv9/pub?gid=0&single=true&output=csv"
pavData=read.csv(link,stringsAsFactors = F)
str(pavData)
## 'data.frame': 1096 obs. of 8 variables:
## $ apropiaciondolar : num 102.2 62.8 0 0 0 ...
## $ priorizado : chr "no" "no" "si" "no" ...
## $ pctopo : num 14.8 33.6 55.4 63.4 74.5 ...
## $ uribista : chr "no" "no" "no" "no" ...
## $ con_consejocomunal: chr "no" "no" "no" "no" ...
## $ ejecucion : chr "no" "no" "no" "no" ...
## $ poblacioncienmil : num 20.92 0.39 0.11 0.17 0.08 ...
## $ nbi : num 12.2 21.6 31.2 45.3 63.9 ...
Covertimos categorias de chr a la funcion as.factor
# columnas 2 y de la 4 a la 6:
pavData[,c(2,4:6)]=lapply(pavData[,c(2,4:6)],as.factor)
Eliminamos valores perdidos
pavData=pavData[complete.cases(pavData),]
summary(pavData)
## apropiaciondolar priorizado pctopo uribista con_consejocomunal
## Min. : 0.000 no:790 Min. : 0.00 :184 no:1001
## 1st Qu.: 0.000 si:270 1st Qu.: 6.24 no:325 si: 59
## Median : 0.000 Median :20.39 si:551
## Mean : 8.448 Mean :27.97
## 3rd Qu.: 10.560 3rd Qu.:45.70
## Max. :132.640 Max. :99.42
## ejecucion poblacioncienmil nbi
## no:1021 Min. : 0.0000 Min. : 5.36
## si: 39 1st Qu.: 0.0700 1st Qu.:28.30
## Median : 0.1400 Median :41.27
## Mean : 0.4143 Mean :42.94
## 3rd Qu.: 0.2700 3rd Qu.:55.49
## Max. :69.2700 Max. :98.81
Ojo Uribista tiene un valor extraño
levels(pavData$uribista)
## [1] "" "no" "si"
De ahi que:
levels(pavData$uribista)[levels(pavData$uribista)=='']=NA
Quiero saber:
Verificamos Normalidad
Usamos Shapìro Wilk
shapiro.test(pavData$apropiaciondolar)
##
## Shapiro-Wilk normality test
##
## data: pavData$apropiaciondolar
## W = 0.595, p-value < 2.2e-16
Como el p-value es menor a 0.05 se confirma la variables no es similar ala curva Normal
Verificar asimetria y si hay atipicos
Recordemos:
V Dep => Apropiacion dolar
library(DescTools)
Skew(pavData$apropiaciondolar)
## [1] 2.708773
es positivo asi que tiene una cola a la derecha; es asimetria positiva. La medida de resumen es la mediana cuando hay asimetria.
Viendo en grafico
library(ggplot2)
base=ggplot(data = pavData,aes(x=apropiaciondolar))
base+geom_histogram(bins = 20) #usar 20 siempre
Lo que se interpreta del grafico es lo siguiente: No hay simetria
Usamos diagrama de caja, asi verificamos si hay atipicos
base=ggplot(data = pavData, aes(y=apropiaciondolar))
base+geom_boxplot()+coord_flip()
Como figuran (.) se dice que hay atipicos
# V Dep vs V Indeps
# V Dep: **aprociacion**dolar
# V Indeps: 3 ejes
## a) criterios técnicos: 'priorizado'
#### Ha: "appropiacion" tiene relacion directa con "priorizado".
## b) clientelismo:
####### b.1 porcentaje de la oposicion:'pctopo'
#### Hb1: "appropiacion" tiene relacion directa con "pctopo"
####### b.2 municipio lo gano o no partido afin al ejecutivo: 'uribista'
#### Hb2: "appropiacion" tiene relacion directa con "uribista"
## c) populismo:
####### c.1 los municipios en los que se han realizado Consejos Comunales: 'consejocomunal'
#### Hc1: "appropiacion" tiene relacion directa con 'consejocomunal'
# c.2 los municipios donde se habían prometido 'ejecucion'
#### Hc2: "appropiacion" tiene relacion directa con 'ejecucion'
Entonces:
Ha : “apropiacion” tiene relacion directa por “priorizado”
Apropiacion por promedio :
Ha=formula(apropiaciondolar ~ priorizado)
aggregate(Ha,data = pavData,median)
## priorizado apropiaciondolar
## 1 no 0.000
## 2 si 0.655
Ahora esto mismo, pero en un grafico
base=ggplot(data = pavData, aes(x=priorizado,y=apropiaciondolar))
base+geom_boxplot()+coord_flip()
Prueba no paramétrica que informa si un grupo tiene distribución que se diferencia de la otra:
wilcox.test(Ha,data = pavData)
##
## Wilcoxon rank sum test with continuity correction
##
## data: apropiaciondolar by priorizado
## W = 96581, p-value = 0.01152
## alternative hypothesis: true location shift is not equal to 0
p-value es de 0.01 (significancia) => Se rechaza que las medianas sean las mismas Habria efecto de la variable priorizado en la variable apropiacion
Apropiacion tiene relacion directa con pctopo ? Usamos Spearman
Hb1=formula(~ apropiaciondolar + pctopo)
cor.test(Hb1,data=pavData,method = "spearm",exact = F)
##
## Spearman's rank correlation rho
##
## data: apropiaciondolar and pctopo
## S = 205100315, p-value = 0.2796
## alternative hypothesis: true rho is not equal to 0
## sample estimates:
## rho
## -0.03323799
El p.valor nos sugiere rechazar la existencia de correlación con una significancia de 0.279, de ahi que el rho (-0.033) puede interpretarse como 0 (el Spearman va de -1 a 1).
Ahora veamos con una grafica:
library(ggpubr)
## Loading required package: magrittr
ggscatter(pavData,x="pctopo",y="apropiaciondolar",cor.coef = TRUE,cor.method = "spearman",add = "reg.line",add.params = list(color="blue",fill="lightgray"),conf.int = TRUE)
Hb2: Apropiacion tiene una relacion directa con uribista ?
primero vemos los estadisticos
Hb2=formula(apropiaciondolar~uribista)
aggregate(Hb2,data=pavData,median)
## uribista apropiaciondolar
## 1 no 0
## 2 si 0
mmm…seran distribuciones iguales?
wilcox.test(Hb2,data = pavData)
##
## Wilcoxon rank sum test with continuity correction
##
## data: apropiaciondolar by uribista
## W = 95048, p-value = 0.09883
## alternative hypothesis: true location shift is not equal to 0
p-value: 0.09 Se rechaza que las medianas sean iguales o sea : Hay un efecto de la variable Uribista
Veamos en un grafico
base=ggplot(data = pavData,aes(x=uribista,y=apropiaciondolar))
base+geom_boxplot()+coord_flip()
Hc1: “appropiacion” tiene relacion directa con ‘consejocomunal’
Hc1=formula(apropiaciondolar ~ con_consejocomunal)
aggregate(Hc1, data=pavData,median)
## con_consejocomunal apropiaciondolar
## 1 no 0.00
## 2 si 16.92
Parece que hay diferencias: USamos Wilcox
wilcox.test(Hc1,data=pavData)
##
## Wilcoxon rank sum test with continuity correction
##
## data: apropiaciondolar by con_consejocomunal
## W = 14004, p-value = 1.32e-13
## alternative hypothesis: true location shift is not equal to 0
Por el p-valor rechazamos la igualdad de medianas con una significancia de 0.13e-14. Osea, hay efecto de la variable con_consejocomunal.
Gráficamente:
base=ggplot(data=pavData, aes(x=con_consejocomunal,y=apropiaciondolar))
base+geom_boxplot() + coord_flip()
Hc2: “appropiacion” tiene relacion directa con ‘ejecucion’
Hc2=formula(apropiaciondolar ~ ejecucion)
aggregate(Hc2, data=pavData,median)
## ejecucion apropiaciondolar
## 1 no 0.00
## 2 si 0.99
Gráficamente:
base=ggplot(data=pavData, aes(x=ejecucion,y=apropiaciondolar))
base+geom_boxplot() + coord_flip()
wilcox.test(Hc2,data=pavData)
##
## Wilcoxon rank sum test with continuity correction
##
## data: apropiaciondolar by ejecucion
## W = 17497, p-value = 0.1612
## alternative hypothesis: true location shift is not equal to 0
Por el p-valor aceptamos que las medianas no serían diferentes. Osea, NO hay efecto de la variable ejecucion.
Dado que data tiene todas las variables:
names(pavData)
## [1] "apropiaciondolar" "priorizado" "pctopo"
## [4] "uribista" "con_consejocomunal" "ejecucion"
## [7] "poblacioncienmil" "nbi"
Podemos usar:
paviModeloOrd=lm(apropiaciondolar~.,data=pavData)
summary(paviModeloOrd)
##
## Call:
## lm(formula = apropiaciondolar ~ ., data = pavData)
##
## Residuals:
## Min 1Q Median 3Q Max
## -60.200 -8.208 -5.877 2.512 92.495
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 14.13107 1.67647 8.429 < 2e-16 ***
## priorizadosi -2.21440 1.18713 -1.865 0.06247 .
## pctopo -0.03096 0.02126 -1.456 0.14562
## uribistasi -2.57304 1.09185 -2.357 0.01867 *
## con_consejocomunalsi 14.05085 2.32445 6.045 2.22e-09 ***
## ejecucionsi 2.95645 2.80751 1.053 0.29261
## poblacioncienmil 1.83856 0.20023 9.182 < 2e-16 ***
## nbi -0.09290 0.02941 -3.159 0.00164 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 15.38 on 868 degrees of freedom
## (184 observations deleted due to missingness)
## Multiple R-squared: 0.1751, Adjusted R-squared: 0.1684
## F-statistic: 26.32 on 7 and 868 DF, p-value: < 2.2e-16
Por lo tanto:
1. Cuando un proyecto sí está priorizado la asignación presupuestal promedio disminuye (relación inversa). El efecto que un proyecto priorizado disminuye la asignación promedio en -2.21440 millones de dolares. Este efecto es significativo al 0.1.
2. El porcentaje de voto de la oposición no tiene efecto significativo (ni al 0.05, ni a 0.1).
3. Cuando un municipio tiene alcalde que sí es Uribista la asignación presupuestal promedio disminuye (relación inversa). El efecto que haya alcalde Uribista disminuye la asignación promedio en -2.57304 millones de dolares. Este efecto es significativo al 0.05.
4. Cuando un municipio sí tiene Consejo Comunal la asignación presupuestal promedio aumenta (relación directa). El efecto que haya Consejo Comunal aumenta la asignación promedio en 14.05085 millones de dolares. Este efecto es significativo al 0.001.
5. Cuando un Consejo Comunal sí recibió promesa de ejecución no tiene efecto sobre la asignación presupuetal.