Habiendo previamente establecido de manera correcta mi Working Directory, procedo a hacer lo que detallo a continuación.
Cargando la data:
folder="data"
fileName1="idhPeru.xlsx"
fileName2="idePeru2012.sav"
fileToRead1=file.path(folder,fileName1)
fileToRead2=file.path(folder,fileName2)
library(readxl)
idhPeru=read_excel(fileToRead1)
library(foreign)
idePeru2012=read.spss(fileToRead2)
Me aseguro que mi data esté como data frame:
idhPeru=as.data.frame(idhPeru)
idePeru2012=as.data.frame(idePeru2012)
Creo que un nuevo data frame, llamada data_final, que junte a ambas bases de datos (idh e ide):
data_final=merge(idhPeru,idePeru2012,by="PROVINCIA")
Veamos las variables con las que cuento:
names(data_final)
## [1] "PROVINCIA" "Ubigeo.x" "habitantes"
## [4] "IDH" "esperanza" "secundaria"
## [7] "educa" "percapitaf" "Ubigeo.y"
## [10] "IDE" "identidad" "salud"
## [13] "educacion" "saneamiento" "electrificacion"
## [16] "poblacion" "costa" "capital"
## [19] "tamano"
Respondamos las preguntas:
Se nos está pidiendo relacionar las variables capital y tamano. Saco estructura de ambas:
str(data_final$capital)
## Factor w/ 2 levels "NO","SI": 2 1 1 1 1 1 1 1 1 1 ...
str(data_final$tamano)
## Factor w/ 5 levels "Muy pequena",..: 3 2 1 1 3 2 3 2 2 1 ...
Ambas son categóricas (factores no ordenados). Lo que se me pide es, entonces, ver si hay asociación. Para ello uso una prueba de chi-cuadrado.
Primero saco una tabla cruzada:
prop.table(table(data_final$tamano,data_final$capital))*100
##
## NO SI
## Muy pequena 35.3846154 0.0000000
## Pequena 31.2820513 1.5384615
## Mediana 19.4871795 4.1025641
## Grande 1.0256410 6.6666667
## Muy grande 0.0000000 0.5128205
Ahora realizo una prueba chi-cuadrado
library(gmodels) #descarguen el paquete!
CrossTable(data_final$tamano,data_final$capital,prop.t=F, prop.r=F, prop.c=F,prop.chisq=F,chisq=T)
## Warning in chisq.test(t, correct = FALSE, ...): Chi-squared approximation
## may be incorrect
##
##
## Cell Contents
## |-------------------------|
## | N |
## |-------------------------|
##
##
## Total Observations in Table: 195
##
##
## | data_final$capital
## data_final$tamano | NO | SI | Row Total |
## ------------------|-----------|-----------|-----------|
## Muy pequena | 69 | 0 | 69 |
## ------------------|-----------|-----------|-----------|
## Pequena | 61 | 3 | 64 |
## ------------------|-----------|-----------|-----------|
## Mediana | 38 | 8 | 46 |
## ------------------|-----------|-----------|-----------|
## Grande | 2 | 13 | 15 |
## ------------------|-----------|-----------|-----------|
## Muy grande | 0 | 1 | 1 |
## ------------------|-----------|-----------|-----------|
## Column Total | 170 | 25 | 195 |
## ------------------|-----------|-----------|-----------|
##
##
## Statistics for All Table Factors
##
##
## Pearson's Chi-squared test
## ------------------------------------------------------------
## Chi^2 = 94.78038 d.f. = 4 p = 1.268993e-19
##
##
##
P-valor menos a 0.05 [aunque, ojo, nos avisa que nuestra aproximación podría ser incorrecta]
Veamos de todos modos un gráfico:
legendPlot=levels(data_final$tamano)
bartable = table(data_final$tamano,data_final$capital) ##tabla de contingencia
barplot(bartable, beside = T,legend=legendPlot) ## grafico
Alternativa a: VERDADERA
Recuerdo el nombre de mis variables:
names(data_final)
## [1] "PROVINCIA" "Ubigeo.x" "habitantes"
## [4] "IDH" "esperanza" "secundaria"
## [7] "educa" "percapitaf" "Ubigeo.y"
## [10] "IDE" "identidad" "salud"
## [13] "educacion" "saneamiento" "electrificacion"
## [16] "poblacion" "costa" "capital"
## [19] "tamano"
Me piden analizar las variables costa e IDH. Veo estructuctura
str(data_final$costa)
## Factor w/ 2 levels "NO","SI": 1 1 1 1 1 1 1 1 1 1 ...
str(data_final$IDH)
## num [1:195] 0.354 0.191 0.209 0.254 0.258 ...
Tengo una categórica (dicotómica) y una numérica. Debo usar t-test:
t.test(data_final$IDH~data_final$costa,var.equal=T)
##
## Two Sample t-test
##
## data: data_final$IDH by data_final$costa
## t = -10.736, df = 193, p-value < 2.2e-16
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## -0.1673593 -0.1154106
## sample estimates:
## mean in group NO mean in group SI
## 0.272236 0.413621
Hay diferencias significativas entre el IDH de quienes están en la costa y el IDH de quienes no están en la costa: las provincias de la costa tienen un mejor nivel de IDH.
Alternativa b: FALSA
Me piden relacionar poblacion y capital. Veo estructura:
str(data_final$poblacion)
## num [1:195] 105694 73243 28318 7974 117163 ...
str(data_final$capital)
## Factor w/ 2 levels "NO","SI": 2 1 1 1 1 1 1 1 1 1 ...
No hay necesidad de formatear.
Ahora fabrico mis barras de error:
# Creo una función para el error standard de la media (seMean):
seMean = function(x) sd(x)/sqrt(length(x))
# Media por grupo
means=aggregate(list(mean=data_final$poblacion),
list(capital=data_final$capital),mean)
# error standard por grupo: (usando la función que hemos creado!)
sems=aggregate(list(seMean=data_final$poblacion),
list(capital=data_final$capital),seMean)
#usando MERGE:
data=merge(means,sems) # capital es la 'key' para combinar
# añadir intervalos de confianza:
data$lower=data$mean-2*data$seMean
data$upper=data$mean+2*data$seMean
#GRÁFICO
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 3.4.4
# creamos los puntos (means):
meanPlot = ggplot(data, aes(y=mean, x=capital)) + geom_point()
# añadimos las barras de error:
errorPlot = meanPlot + geom_errorbar(aes(ymin = lower, ymax = upper))
# resultado:
errorPlot
Vemos que las barras de error no sugieren una diferencia de población entre las provincias que son capital y las provincias que no lo son.
Alternativa c: FALSA
Veo estructura de la variable:
str(data_final$salud)
## num [1:195] 16.93 2.63 10.45 8.59 10.81 ...
Para ver cuáles son los casos atípicos:
library(DescTools)
sort(Outlier(data_final$salud)) #uso sort para ponerlos en orden; por defecto, orden ascendente
## [1] 27.4945 29.0179 30.0232 30.0799 30.5147 32.9186 38.3657 40.4944 44.7413
Tenemos 9 outliers.
Comprobemos mediante un boxplot:
ggplot(data_final, aes(x = 1, y = salud)) + geom_boxplot() +coord_flip()
Alternativa d: VERDADERA
Nos piden relacionar percapitaf e IDE. Veamos estructura:
str(data_final$percapitaf)
## num [1:195] 289 117 147 200 205 ...
str(data_final$IDE)
## num [1:195] 0.747 0.577 0.633 0.658 0.568 ...
Ambas son numéricas. Lo que tenemos que analizar es si hay correlación.
cor.test(data_final$percapitaf,data_final$IDE)
##
## Pearson's product-moment correlation
##
## data: data_final$percapitaf and data_final$IDE
## t = 20.579, df = 193, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.7790288 0.8682170
## sample estimates:
## cor
## 0.8288163
El p-valor es menor a 0.05. ¡Hay correlación! Veamos el coeficiente de correlación de Pearson. La correlación es directa y fuerte: a mayor ingreso familiar per cápita, mayor IDE (y viceversa).
Alternativa e: VERDADERA
Ahora nos piden relacionar percapitaf e IDH. Siempre veamos estructura primero:
str(data_final$percapitaf)
## num [1:195] 289 117 147 200 205 ...
str(data_final$IDH)
## num [1:195] 0.354 0.191 0.209 0.254 0.258 ...
Al ser ambas numéricas, debo analizar si hay correlación.
cor.test(data_final$percapitaf,data_final$IDH)
##
## Pearson's product-moment correlation
##
## data: data_final$percapitaf and data_final$IDH
## t = 50.929, df = 193, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.9534936 0.9733205
## sample estimates:
## cor
## 0.9647509
¡Hay correlación! Directa y fuerte [e incluso es más fuerte que con el IDE].
Alternativa f: FALSA
Sacamos el scatterplot
plot(data_final$IDH,data_final$IDE)
En el gráfico se ve que la dispersión no es tan alta. Es decir, es baja.
Comprobemos sacando Pearson:
cor.test(data_final$IDH,data_final$IDE)
##
## Pearson's product-moment correlation
##
## data: data_final$IDH and data_final$IDE
## t = 25.91, df = 193, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.8454971 0.9092263
## sample estimates:
## cor
## 0.8813077
Pearson indica correlación directa y fuerte.
Alternativa g: VERADERA
¿Cuáles son las variables que tengo?
names(data_final)
## [1] "PROVINCIA" "Ubigeo.x" "habitantes"
## [4] "IDH" "esperanza" "secundaria"
## [7] "educa" "percapitaf" "Ubigeo.y"
## [10] "IDE" "identidad" "salud"
## [13] "educacion" "saneamiento" "electrificacion"
## [16] "poblacion" "costa" "capital"
## [19] "tamano"
Tengo “educa” y “educacion”. No sé con cuál de las dos responder la alternativa.