Vamos a ver algunos detalles de procesamiento de nuestra base de datos
setwd("/Users/mau/Dropbox/Cursos mau/Maestria CEI")
data<-read.csv("BaseIP.csv",header=TRUE)
¿que hacemos si no estamos seguros de que tipo de variable es nuestra variable?
str(data$s2)
## Factor w/ 81 levels "18","19","20",..: 4 7 6 4 7 7 10 1 11 10 ...
str(data$p1)
## Factor w/ 6 levels "Algo","Mucho",..: 1 5 1 1 2 6 1 1 1 5 ...
Primero vamos a tratar de convertir s2 a numerica sin perder la informacion original Para eso vamos a crear una nueva variable “duplicando” s2
data$edad<-data$s2
str(data$edad)
## Factor w/ 81 levels "18","19","20",..: 4 7 6 4 7 7 10 1 11 10 ...
table(data$edad)
##
## 18 19 20 21 22 23 24 25 26 27 28 29
## 277 255 253 226 241 240 252 226 185 213 241 237
## 30 31 32 33 34 35 36 37 38 39 40 41
## 285 154 228 212 191 204 244 216 248 218 335 135
## 42 43 44 45 46 47 48 49 50 51 52 53
## 299 207 178 280 165 185 274 200 274 147 228 192
## 54 55 56 57 58 59 60 61 62 63 64 65
## 184 151 200 167 177 139 174 95 126 119 85 135
## 66 67 68 69 70 71 72 73 74 75 76 77
## 85 87 110 53 117 45 69 53 61 56 64 36
## 78 79 80 81 82 83 84 85 86 87 88 89
## 39 36 47 15 14 27 23 15 9 12 5 7
## 90 91 92 93 94 96 97 98 NS/NC
## 5 3 2 1 2 2 1 1 1
Si transformamos de manera directa perdemos informacion valiosa
data$edad<-as.numeric(data$edad)
str(data$edad)
## num [1:11000] 4 7 6 4 7 7 10 1 11 10 ...
table(data$edad)
##
## 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
## 277 255 253 226 241 240 252 226 185 213 241 237 285 154 228 212 191 204
## 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
## 244 216 248 218 335 135 299 207 178 280 165 185 274 200 274 147 228 192
## 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
## 184 151 200 167 177 139 174 95 126 119 85 135 85 87 110 53 117 45
## 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
## 69 53 61 56 64 36 39 36 47 15 14 27 23 15 9 12 5 7
## 73 74 75 76 77 78 79 80 81
## 5 3 2 1 2 2 1 1 1
Tenemos que indicar a R que las etiquetas realmente representan valores numericos para eso tenemos que usar otra funcion
data$edad<-data$s2
data$edad<-as.numeric(as.character(data$edad))
## Warning: NAs introducidos por coerci'on
str(data$edad)
## num [1:11000] 21 24 23 21 24 24 27 18 28 27 ...
table(data$edad)
##
## 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
## 277 255 253 226 241 240 252 226 185 213 241 237 285 154 228 212 191 204
## 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
## 244 216 248 218 335 135 299 207 178 280 165 185 274 200 274 147 228 192
## 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
## 184 151 200 167 177 139 174 95 126 119 85 135 85 87 110 53 117 45
## 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
## 69 53 61 56 64 36 39 36 47 15 14 27 23 15 9 12 5 7
## 90 91 92 93 94 96 97 98
## 5 3 2 1 2 2 1 1
Asi pudimos mantener los valores originales
Ahora, vamos a “jugar” con p1
is.factor(data$p1)
## [1] TRUE
table(data$p1)
##
## Algo Mucho NC NS Nada Poco
## 2588 492 19 95 3532 4274
Basta con decirle a R el orden en que queremos salgan las categorias
data$p1a<-factor(data$p1,levels=c("Poco","Nada","Algo","Mucho"))
Hasta el momento hemos estado trabajando con la muestra. Sin embargo, esta muestra fue diseniada para representar a una poblacion
Para eso debemos decirle a R que la base de datos cuenta con un disenio
Vamos a usar la biblioteca “survey” recuerden que por primera vez debemos usar install.packages(“survey”)
library(survey)
## Loading required package: grid
## Loading required package: Matrix
## Loading required package: survival
##
## Attaching package: 'survey'
## The following object is masked from 'package:graphics':
##
## dotchart
design<-svrepdesign(weights=~ponde,
data=data,
repweights = data[,388:487],
scale=1,
type="bootstrap",
strata=estrato_s,
cluster=conglomerado)
Ahora podemos obtener algunos totales, pero hay que usar comandos un poco diferentes
table(data$s1)
##
## Hombre Mujer
## 4858 6142
svytotal(~s1,design)
## total SE
## s1Hombre 41932167 9010819
## s1Mujer 44644300 7661208
Para las medias
summary(data$edad)
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## 18.00 29.00 41.00 42.72 54.00 98.00 1
svymean(~edad,design, na.rm=T)
## mean SE
## edad 41.288 4.0957
Ahora con una variable tipo factor
table(data$p1a)
##
## Poco Nada Algo Mucho
## 4274 3532 2588 492
prop.table(table(data$p1a))
##
## Poco Nada Algo Mucho
## 0.39261437 0.32445343 0.23773654 0.04519566
svytable(~p1a,design=design)
## p1a
## Poco Nada Algo Mucho
## 32709603 24977519 25024742 3864603
prop.table(svytable(~p1a,design=design))
## p1a
## Poco Nada Algo Mucho
## 0.37781170 0.28850241 0.28904785 0.04463803
svytable(~p1a+s1,design=design)
## s1
## p1a Hombre Mujer
## Poco 16456995 16252608
## Nada 11610933 13366587
## Algo 12088420 12936322
## Mucho 1795173 2069430
prop.table(svytable(~p1a+s1,design=design),margin=2)
## s1
## p1a Hombre Mujer
## Poco 0.39228601 0.36420453
## Nada 0.27677025 0.29953171
## Algo 0.28815214 0.28988991
## Mucho 0.04279160 0.04637385