library(readxl)
misDatos <- read_excel("data/pavimentando.xlsx") # ponga el nombre de su archivo.
names(misDatos)
## [1] "poblacioncienmil" "nbi" "consejocomunal" "priorizado"
## [5] "uribista" "ejecucion" "pctopo" "apropiaciondolar"
Los nombres no deben tener espacios ni acentos ni la letra ñ. SI es necesario, cámbielas en Excel y vuelva a cargar (rehaga todo lo anterior).
Verifique que R tenga los datos correctos:
Verifique que los numeros no estén entre comillas.
Verifique que si tiene una variable ordinal (p.ejem. ‘alto’,‘medio’,‘bajo’), esté como factor, es decir, de tipo categórico.
str(misDatos)
## tibble [1,096 × 8] (S3: tbl_df/tbl/data.frame)
## $ poblacioncienmil: num [1:1096] 0.0922 0.0493 0.1228 0.2741 0.0851 ...
## $ nbi : num [1:1096] 66.7 86.2 69.7 18.4 52.3 ...
## $ consejocomunal : num [1:1096] 0 0 0 0 0 0 0 0 0 0 ...
## $ priorizado : num [1:1096] 0 0 0 1 0 0 0 0 0 0 ...
## $ uribista : num [1:1096] 0 0 1 0 0 0 1 0 0 0 ...
## $ ejecucion : num [1:1096] 0 0 0 0 0 0 0 0 0 0 ...
## $ pctopo : num [1:1096] 99.4 96 94.4 94.1 94 ...
## $ apropiaciondolar: num [1:1096] 0 0 9.218 0.394 0 ...
En este caso, las variables “consejocomunal”,“priorizado”,“uribista”,“ejecucion” deberían ser factor (pero no son ordinales):
misDatos$consejocomunal=factor(misDatos$consejocomunal,
levels = c(0,1), # lo que hay en la data actual
labels = c("_no","_si"), # como aparecerá ahora
ordered = FALSE) # TRUE si fuera ordinal
misDatos$priorizado=factor(misDatos$priorizado,
levels = c(0,1),
labels = c("_no","_si"),
ordered = FALSE)
misDatos$uribista=factor(misDatos$uribista,
levels = c(0,1),
labels = c("_no","_si"),
ordered = FALSE)
misDatos$ejecucion=factor(misDatos$ejecucion,
levels = c(0,1),
labels = c("_no","_si"),
ordered = FALSE)
Esta es la variable central de tu estudio.
summary(misDatos$apropiaciondolar)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.000 0.000 0.000 8.276 9.385 132.643
Preguntense: - La media resume bien? Una media representativa nos hace pensar que los valores de la variable orbitan cerca a ella. Si la media y la mediana están muy lejossabes que hay desigualdad en esa variable.
Aquí debes comparar la Variable Dependiente con cada una de las demás.
library("ggpubr")
## Loading required package: ggplot2
ggscatter(misDatos,
x = "pctopo", y = "apropiaciondolar",
add = "reg.line",
conf.int = TRUE,
add.params = list(color = "blue", fill = "lightgray"),
cor.coef = TRUE, cor.method = "pearson") #spearman?
## `geom_smooth()` using formula 'y ~ x'
Del gráfico anterior, el R (coeficiente de correlación) puede ir de -1 a 1, mientras más cerca a cero indica que relación es debil, mientras más lejos de cero, relación se fortalece. Cuando el R coeficiente de correlación es alto, la linea azul tendrá los punto mas cerca a ella.
boxplot(apropiaciondolar~ejecucion,data=misDatos)
En la horizontal están las categorías. Pregúntate sí la variable dependiente toma valores similares o no.
Aqui puedes proponer probar tus hipótesis. Hay que ir de menos a más. Si tienes variables de control, usalas siempre.
hipotesis1=formula(apropiaciondolar~priorizado + poblacioncienmil+ nbi)
regre1=lm(hipotesis1,data=misDatos)
summary(regre1)
##
## Call:
## lm(formula = hipotesis1, data = misDatos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -54.357 -8.156 -6.139 1.855 92.342
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 11.48283 1.11885 10.263 < 2e-16 ***
## priorizado_si -0.96823 1.05136 -0.921 0.357
## poblacioncienmil 2.12193 0.19205 11.049 < 2e-16 ***
## nbi -0.09146 0.02325 -3.934 8.89e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 15.07 on 1092 degrees of freedom
## Multiple R-squared: 0.1207, Adjusted R-squared: 0.1183
## F-statistic: 49.98 on 3 and 1092 DF, p-value: < 2.2e-16
Aqui verifica: - La variable independiente de interés es significativa (ves “.” o “asteriscos”)? Si no es significativa, NO tiene efecto. - El efecto, es positivo o negativo (mira el signo).
En este caso, la VI priorizado indica, que cuando vale “si” no es diferente a si vale “no”. Por ello no tiene efecto.
hipotesis2=formula(apropiaciondolar~priorizado + consejocomunal + poblacioncienmil+ nbi)
regre2=lm(hipotesis2,data=misDatos)
summary(regre2)
##
## Call:
## lm(formula = hipotesis2, data = misDatos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -60.760 -7.602 -5.849 1.419 92.710
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 10.38634 1.11531 9.313 < 2e-16 ***
## priorizado_si -1.52242 1.03833 -1.466 0.142875
## consejocomunal_si 12.34005 2.02240 6.102 1.46e-09 ***
## poblacioncienmil 1.92813 0.19159 10.064 < 2e-16 ***
## nbi -0.07617 0.02301 -3.310 0.000963 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 14.82 on 1091 degrees of freedom
## Multiple R-squared: 0.1497, Adjusted R-squared: 0.1466
## F-statistic: 48.03 on 4 and 1091 DF, p-value: < 2.2e-16
En este caso, la VI consejo comunal indica, que cuando vale “si” es diferente a si vale “no”. Por ello tiene efecto positivo: cuando haya consejo comunal aumenta el presupuesto.
hipotesis3=formula(apropiaciondolar~priorizado + consejocomunal + pctopo + poblacioncienmil+ nbi)
regre3=lm(hipotesis3,data=misDatos)
summary(regre3)
##
## Call:
## lm(formula = hipotesis3, data = misDatos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -60.988 -7.667 -5.803 1.827 92.036
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 10.89602 1.17187 9.298 < 2e-16 ***
## priorizado_si -1.53777 1.03791 -1.482 0.13873
## consejocomunal_si 12.32818 2.02150 6.099 1.48e-09 ***
## pctopo -0.02491 0.01765 -1.411 0.15854
## poblacioncienmil 1.93281 0.19153 10.091 < 2e-16 ***
## nbi -0.07179 0.02321 -3.094 0.00203 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 14.81 on 1090 degrees of freedom
## Multiple R-squared: 0.1513, Adjusted R-squared: 0.1474
## F-statistic: 38.86 on 5 and 1090 DF, p-value: < 2.2e-16
Aqui no hay cualitativamente mayor cambio. Finalmente, comparemos los modelos que tenemos:
#es regre2 mejor que regre1?
anova(regre1,regre2)
El pvalor significativo nos indica que la regre2 es mejor opcion a la regre3.
#es regre3 mejor que regre2?
anova(regre2,regre3)
El pvalor NO significativo nos indica indican que la regre3 NO es mejor opcion a la regre2.