R parte 2
En la parte 1 vimos como obtener de manera separada ciertos cálculos
para armar un cuadro, ahora entra la parte del programador de la
vieja escuela, resolver como se pueda – en aquellos ya muy lejanos
años en el CETis 155 cuando se nos hacían observaciones a nuestro
código (Basic, Pascal o Cobol) nuestra defensa era “pero jala,
¿no?”.
Lo que leí de R es que ya es un lenguaje multiparadigma por lo que
entiendo que se pueden hacer clases o mínimo funciones, por ahora
resolví de la primera forma que intuí, de hecho no uso cruce de 3
variables pues el bendito copy-paste me permitio
sacar las cifras de la parte expandida del cuadro (o como lo llaman
nuestros compañeros las estimaciones puntuales).
Empezamos pues, la estrategía es que los resultados parciales (o
tijereteados) se guarden en arreglos de una dimensión -vectores-
para después meterlos en un dataframe según ejemplo
observado en la página de la Universidad
de las Palmas de la Gran Canaria.
Lo que sigue es lógica de este old programmer.
#llenamos columnas - Primera columna
col1<-c(as.numeric(svytotal(~cel1_1,DisenoE)),as.numeric(svytotal(~cel2_1,DisenoE)),
as.numeric(svytotal(~cel3_1,DisenoE)),
as.numeric(svytotal(~cel4_1,DisenoE)))
Entonces col1 es la primera fila con los totales, voy a
acomodar los valores de izquierda a derecha y de arriba a abajo, por
cualquier cosa lo que me devuelva el svytotal() lo convierto a
número y por medio de c los anexo a este arreglo llamado col1.
Seguiré calculando los tijeretazos, primero subtotales por grupo de
edad de la primera columna.
#Cortes por grupos de edad
corte1 <- (svyby(~cel1_1, by=~Fila1, DisenoE, svytotal))$cel1_1
Cortes por grupo de edad por cada variable referente al número de
hijos sobrevivientes.
#Cortes por grupos de edad
#Sin hijos sobrevivientes
corte2 <- (svyby(~cel2_1, by=~Fila1, DisenoE, svytotal))$cel2_1
#Un hijo sobreviviente
corte3 <- (svyby(~cel3_1, by=~Fila1, DisenoE, svytotal))$cel3_1
#Dos o más hijos sobrevivientes
Tenemos 4 arreglos que – en mi caso – queremos anexar a col1,
revisando más ejemplos, una forma de agregar elementos a un arreglo
es por medio de su subíndice arreglo[i]. Hasta ahora en col1
tenemos los 4 primeros elementos de la primera columna, necesitamos
los desgloses. Los elementos de los arreglos deben ser intercalados
para que se muestren como lo pide el cuadro.
Col1
|
Corte1
|
Corte2
|
Corte3
|
Corte4
|
vt1
|
Corte1[1]
|
Corte2[1]
|
Corte3[1]
|
Corte4[1]
|
vt2
|
Corte1[2]
|
Corte2[2]
|
Corte3[2]
|
Corte4[2]
|
vt3
|
Corte1[3]
|
Corte2[3]
|
Corte3[3]
|
Corte4[3]
|
vt4
|
Corte1[4]
|
Corte2[4]
|
Corte3[4]
|
Corte4[4]
|
Corte1[1]
|
Corte1[5]
|
Corte2[5]
|
Corte3[5]
|
Corte4[5]
|
Corte2[1]
|
Corte1[6]
|
Corte2[6]
|
Corte3[6]
|
Corte4[6]
|
Corte3[1]
|
Corte1[7]
|
Corte2[7]
|
Corte3[7]
|
Corte4[7]
|
Corte4[1]
|
||||
Corte1[2]
|
||||
Corte2[2]
|
||||
...
|
Entonces aquí viene mi lógica, se asume que todos tienen la misma
dimensión por lo que con un solo ciclo se recorren los 4 arreglos,
como hay una categoría que no entra en el juego se pregunta por el
grupo de edad (7) que no entra para la elaboración de este cuadro
(no es parte del subuniverso). Aquí el código:
Como el tiempo pasa inexorablemente no me quedó más que – por
ahora - copiar y pegar para las columnas subyacentes, aquí el
código:
Por último creo un dataframe con los arreglos col1, col2
y col3.
cuadro5_1E <- data.frame(col1, col2, col3)
Si lo consultamos obtenemos el primer cuadro con cifras expandidas.
Para calcular las cifras muestrales, tenemos que hacer el nuevo
diseño para hacer lo mismo pero agregando este nuevo diseño.
DisenoM <- svydesign(id=~UPM_DIS, strata=~EST_DIS,
data=consulta, weights=~CifMuestral)
La columna de CifMuestral tiene un 1 para todos los casos, y
con esto al multiplicarse por el dato dicotómico nos debería de dar
la cifra muestral.
Y hacemos el mismo tango, cambiando el DisenoE por DisenoM.
Para dejarlo en un dataframe final al que llamamos Cuadro5_1M.
…
cuadro5_1M <- data.frame(col1, col2, col3)
Y hasta aquí la parte de svytotal() y svyby() ahora
viene lo interesante que son los porcentajes y el cálculo de
precisiones en la tercera parte de este instructivo.
Miguel Araujo.
Comentarios
Publicar un comentario