Factorial con los datos del cuestionario de ObservaciĂ³n

Julio César

El objetivo de este anĂ¡lisis es generar un factorial que sirva de insumo para evaluar las preguntas del Cuestionario SociodemogrĂ¡fico y se identifiquen las ventanas de oportunidad. En esta primera etapa se analizar la base de datos para detectar los casos que serĂ¡n susceptibles de se analizados y posteriormente tomados en cuenta para generar el factorial.

A continuaciĂ³n se presenta la programaciĂ³n en R y en cada paso se muestra lo que se obtiene, tal cual aparecerĂ­a si se corre la sintaxis directamente en el programa. Esta caracterĂ­stica permite evaluar paso a paso el desarrollo del programa y hacer los ajustes correspondientes.

library(foreign)
library(questionr)
library(gdata)
library(ggplot2)

Cargo la base de datos

rm(list = ls())
data<-as.data.frame(read.dbf ("C:/Users/JC/Desktop/p1/ppilotoobs_cs.dbf"))

Selecciono las tres variables que me interesan por pregunta

df1<-data[,grep("CS",names(data), value=TRUE)]
df<-df1[,grep("^.+(A|C|E)$",names(df1), value=TRUE)]
for (i in 1:ncol(df)) {
  df[,i] <-as.numeric(as.character(df[,i]))
}

A los missings los considero como 0

df[is.na(df)]<-0
df$OCS1A <- df$OCS1C <- NULL

Para hacer la primera validaciĂ³n de los casos que voy a considerar en el factorial creo que tres matrices que me ayudaran en el proceso de validaciĂ³n

r1<-data.frame(matrix(0,nrow = nrow(df), ncol = ncol(df)/3))
r2<-data.frame(matrix(0,nrow = nrow(df), ncol = ncol(df)/3))
r3<-data.frame(matrix(0,nrow = nrow(df), ncol = ncol(df)/3))

Para checar los casos vĂ¡lidos, considero tres situaciones:

  • Caso 1. Que la pregunta haya sido observada, es decir, que en el Cuestionario de ObservaciĂ³n, P1 sea diferente de 0 y P3 tambiĂ©n diferente de 0.

  • Caso 2. QuĂ© tengan informaciĂ³n que se pueda analizar. Es decir, que en el CO P1 estĂ© entre 1-5 y que en P3 la respuesta sea 1 o 2.

  • Caso 3. Si se cumple el caso 1 y el caso 2, entonces considero el casos como susceptible de ser considerado para el factorial.

Para hacer estas validaciones tomo en cuenta la estructura de la base, en donde la respuesta A corresponde a la codificaciĂ³n de la pregunta 1, C a la 2 y E a la 3. Por este motivo el loop tiene que ir con un intervalo de 3 para cada pregunta.

j<-1
for( i in seq(from=1, to=73, by=3) ) { 
  r1[,j]<-1
  r1[,j][df[,i]==0 & df[,i+2]==0] <- 0
  r2[,j]<-1
  r2[,j][df[,i]==6 & df[,i+2]==3] <- 0
  r3[,j]<-1
  r3[,j][(df[,i]==6 & df[,i+2]==3) | (df[,i]==0 & df[,i+2]==0)] <- 0
  
  j=j+1
}

Hago el resumen de cada uno de los tres casos anteriores

tr1 <- apply(r1,2,sum)
tr2 <- apply(r2,2,sum)
tr3 <- apply(r3,2,sum)

Con este resumen me creo una matrix de resultados

tr<-data.frame(rbind(tr1,tr2,tr3))
names(tr)<-c("P1","P2","P3","P5","P6","P7","P9","P10","P23","P24","P25","P26","P27","P28","P31","P32","P33","P34","P35","P36","P37","P38","P39","P40","P41")
ta<-data.frame(t(tr))

for (n in 1:3) {
  ta[,n] <-as.factor(ta[,n])
} 
ta$id<- 1:nrow(ta)
ta$r<- rownames(ta)

Grafico el caso 1

g1<-ggplot(ta,aes(x=r,y=tr1))+
  geom_bar(stat = "identity")+
  ggtitle("Caso 1")+
  xlab("Pregunta del CS")+
  ylab("NĂºmero de casos")
plot(g1)

Grafico el caso 2

g2<-ggplot(ta,aes(x=r,y=tr2))+
  geom_bar(stat = "identity")+
  ggtitle("Caso 2")+
  xlab("Pregunta del CS")+
  ylab("NĂºmero de casos")
plot(g2)

Grafico el caso 3

g3<-ggplot(ta,aes(x=r,y=tr3))+
  geom_bar(stat = "identity")+
  ggtitle("Caso 3")+
  xlab("Pregunta del CS")+
  ylab("NĂºmero de casos")
plot(g3)