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)