Ir al contenido principal

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
corte4 <- (svyby(~cel4_1, by=~Fila1, DisenoE, svytotal))$cel4_1



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

Entradas populares de este blog

Posit Cloud - como instalar librerías de Python en el entorno de R

 Ahora que estamos tomando una maestría buscando que siga "girando la ardilla" por unos años más en la materia de "Cómputo Estadístico" nos ha sugerido usar la versión gratuita de Posit en la nube. En su página definen este producto como "es una solución basada en la nube que permite acceder al poderoso conjunto de herramientas de ciencia de datos de Posit directamente en el navegador web  - sin requerir instalación o configuraciones complejas". Para los usuarios que han utilizado Posit RStudio en primera instancia verán el entorno muy similar a Posit Cloud con algunas pequeñas diferencias, para empezar necesitamos un usuario o contraseña aunque es posible autenticarse usando alguna cuenta existente como es el caso de Google. Con el tiempo y trabajando en desarrollo de software, vamos entendiendo que quizás el nombre queda muy grande a los pequeños ejemplos, pero es muy recomendable el uso de proyectos siempre. A continuación vemos el entorno Posit Clo...

La librería openxlsx

En el Instituto se utiliza como herramienta de trabajo institucional la suite de ofimática MS Office que ofrece un precio asequible aunque lo actual en el mundo del software es el esquema de suscripciones el que casi se ha convertido en el común de las empresas gigantes de las tecnologías de la información. Es por ello que si bien en un principio que se usaban las bibliotecas XLConnectJars   y XLConnect, al tratar de bajarlas e instalarlas se descubrió - en aquel entonces - que estaban obsoletas. Es por ello que se volteo a la que revisaremos superficialmente en este artículo. Lo primero como siempre es descargar la librería openxlsx que se puede hacer desde el mismo Posit RStudio. Vamos a recrear un cuadro existente en el sitio del Instituto que debido a la crisis sanitaria iniciada en 2020 cobra una relevancia muy importante: "Las principales causas de muerte" que de forma anecdótica   fue la primera aplicación en la cual me pidieron que participara, un programa escri...

R 4.5 vs R 4.4.3

Cuando comparto con mis colegas, sobre todo de trabajo que es mi nicho profesional, acerca de porque tener las últimas versiones del software y que replico sobre todo por dos vertientes: mejor desempeño y funcionalidad del software, y la seguridad que pareciera que las empresas de software recomiendan los mismo o algo cercano a esto. Por ejemplo, veamos lo que nos dice Oracle (dueño de Java) acerca de su versión 8 del Java SE.   En la tabla de la página de Oracle podemos observar las fechas en los cuales ya no habrá soporte para ciertas versiones de Java. En este breve artículo veremos en el caso del interprete de R como se desempeña en una versión con respecto a la más reciente. Los puestos de trabajo que se registran por los patrones en el IMSS ha sido una cifra que muestra el avance o retroceso de como se encuentra el empleo en nuestro país, en este caso diremos que en el sector formal. Los microdatos oscilan arriba de los 20 millones y para su procesamiento es necesario o divi...