Advertisement
Guest User

Untitled

a guest
Sep 18th, 2019
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.47 KB | None | 0 0
  1. #-----------------------------------------------------#
  2. # MENINAS.COMP - Computação também é coisa de menina! #
  3. #-----------------------------------------------------#
  4.  
  5. #---------------------------------#
  6. # 1 - Importando o banco de dados #
  7. #---------------------------------#
  8. answers.choose<-file.choose()
  9. answers <- read.csv(answers.choose, sep=";", header=T,
  10. colClasses = rep("factor", 38))
  11. head(answers)
  12. summary(answers)
  13.  
  14. #----------------------------------#
  15. # 2 - Manipulando o banco de dados #
  16. #----------------------------------#
  17.  
  18. #--------------------------------------------------#
  19. # 2.1 - Arrumando o tamanho das variáveis Q1 e Q2 #
  20. #--------------------------------------------------#
  21. # install.packages("stringr")
  22. require(stringr)
  23.  
  24. # Completando com zeros do lado esquerdo até completar 8 digitos
  25. q1 <- str_pad(answers$Q1, 8, side="left", pad="0")
  26. # Completando com zeros do lado esquerdo até completar 11 digitos
  27. q2 <- str_pad(answers$Q2, 11, side="left", pad="0")
  28.  
  29. #------------------------------------------#
  30. # 2.2 - Separando os itens de cada questão #
  31. #------------------------------------------#
  32.  
  33. #----
  34. # Q1:
  35. #----
  36. # Separando Q1 em 8 novas variáveis
  37. itens1 <- str_split_fixed(q1, "", 8)
  38. itens1 <- as.data.frame(itens1)
  39.  
  40. # Atribuindo nomes para as novas variáveis
  41. names(itens1) <- c("q1.1","q1.2","q1.3","q1.4","q1.5","q1.6","q1.7","q1.8")
  42.  
  43. head(itens1)
  44.  
  45. #----
  46. # Q2:
  47. #----
  48. # Separando Q2 em 11 novas variáveis
  49. itens2 <- str_split_fixed(q2, "", 11)
  50. itens2 <- as.data.frame(itens2)
  51.  
  52. # Atribuindo nomes para as novas variáveis
  53. names(itens2) <- c("q2.1","q2.2","q2.3","q2.4","q2.5","q2.6",
  54. "q2.7","q2.8","q2.9","q2.10","q2.11")
  55.  
  56. head(itens2)
  57.  
  58. #---------------------------------#
  59. # 2.3 - Combinando os data frames #
  60. #---------------------------------#
  61. # Data frame apenas com as respostas dos itens das questoes 1 e 2:
  62. ansMRCV<-cbind(itens1, itens2)
  63.  
  64. head(ansMRCV)
  65.  
  66. #---------------------------------#
  67. # 3 - Análisando o banco de dados #
  68. #---------------------------------#
  69. # Análise das questões do tipo "escolha as que se aplicam"
  70. # install.packages("MRCV")
  71. require(MRCV)
  72.  
  73. # Tabela usual para variáveis que não são MRCVs (NÃO É O IDEAL!)
  74. marginal.table(ansMRCV,I=8,J=11)
  75.  
  76. # Tabelas 2x2 para cada par de respostas (q1.i, q2.j)
  77. item.response.table(ansMRCV,I=8,J=11)
  78.  
  79. # Análise de independência entre as respostas das questões 1 e 2 com o pacote MRCV
  80. # Pode ser feito por 3 métodos (# type="all" gera os resultados pelos 3 métodos)
  81. #----------------------------------------------------#
  82. # A - Bootstrap não-paramétrico (um pouco demorado!) #
  83. #----------------------------------------------------#
  84. result_indep_boot <- MI.test(ansMRCV, I=8, J=11, type = "boot", summary.data = FALSE,
  85. add.constant = 0.5, plot.hist = TRUE, print.status = TRUE)
  86. result_indep_boot
  87. # p.boot = p.combo.prod = p.combo.min < 0.0005 (não é independente)
  88.  
  89. #-----------------------------#
  90. # B - Segunda Ordem Rao-Scott #
  91. #-----------------------------#
  92. result_indep_rs2 <- MI.test(ansMRCV, I=8, J=11, type = "rs2", summary.data = FALSE,
  93. add.constant = 0.5, plot.hist = FALSE, print.status = TRUE)
  94. result_indep_rs2
  95. # Error: cannot allocate vector of size 8.0 Gb (??)
  96.  
  97. #--------------------------#
  98. # C - Ajuste de Bonferroni #
  99. #--------------------------#
  100. result_indep_bon <- MI.test(ansMRCV, I=8, J=11, type = "bon", summary.data = FALSE,
  101. add.constant = 0.5, plot.hist = TRUE, print.status = TRUE)
  102. result_indep_bon
  103. # p.adj < 0.0001 (não é independente)
  104.  
  105.  
  106. #---------------------#
  107. # 4 - Modelando MRCVs #
  108. #---------------------#
  109.  
  110. remove.test.1 <- c(5:8,14:19)
  111. ansMRCV.test.1 <- ansMRCV[,-remove.test.1]
  112. head(ansMRCV.test.1)
  113. # OK
  114. genloglin(ansMRCV.test.1, 4, 5, NULL, "saturated")
  115.  
  116. remove.test.2 <- c(7:8,16:19)
  117. ansMRCV.test.2 <- ansMRCV[,-remove.test.2]
  118. head(ansMRCV.test.2)
  119. # OK
  120. genloglin(ansMRCV.test.2, 6, 7, NULL, "saturated")
  121.  
  122. remove.test.3 <- c(8,16:19)
  123. ansMRCV.test.3 <- ansMRCV[,-remove.test.3]
  124. head(ansMRCV.test.3)
  125. # OK
  126. genloglin(ansMRCV.test.3, 7, 7, NULL, "saturated")
  127.  
  128. remove.test.4 <- c(16:19)
  129. ansMRCV.test.4 <- ansMRCV[,-remove.test.4]
  130. head(ansMRCV.test.4)
  131. # Error: cannot allocate vector of size 8.0 Gb
  132. genloglin(ansMRCV.test.4, 8, 7, NULL, "saturated")
  133.  
  134. remove.test.5 <- c(8,17:19)
  135. ansMRCV.test.5 <- ansMRCV[,-remove.test.5]
  136. head(ansMRCV.test.5)
  137. # Error: cannot allocate vector of size 8.0 Gb
  138. genloglin(ansMRCV.test.5, 7, 8, NULL, "saturated")
  139.  
  140. remove.test.6 <- c(15:19)
  141. ansMRCV.test.6 <- ansMRCV[,-remove.test.6]
  142. head(ansMRCV.test.6)
  143. # Desejando-se usar todas os oito itens da primeira questao,
  144. # o maximo de itens possiveis para uso da segunda questao é 6
  145. genloglin(ansMRCV.test.6, 8, 6, NULL, "saturated")
  146.  
  147. remove.test.7 <- c(5:8)
  148. ansMRCV.test.7 <- ansMRCV[,-remove.test.7]
  149. head(ansMRCV.test.7)
  150. # Error: cannot allocate vector of size 8.0 Gb
  151. genloglin(ansMRCV.test.7, 4, 11, NULL, "saturated")
  152.  
  153. remove.test.8 <- c(4:8)
  154. ansMRCV.test.8 <- ansMRCV[,-remove.test.8]
  155. head(ansMRCV.test.8)
  156. # Error: cannot allocate vector of size 8.0 Gb
  157. genloglin(ansMRCV.test.7, 3, 11, NULL, "saturated")
  158.  
  159. remove.test.9 <- c(3:8)
  160. ansMRCV.test.9 <- ansMRCV[,-remove.test.9]
  161. head(ansMRCV.test.9)
  162. # Desejando-se usar todas os onze itens da segunda questao,
  163. # o maximo de itens possiveis para uso da primeira questao é 2
  164. genloglin(ansMRCV.test.9, 2, 11, NULL, "saturated")
  165.  
  166. genloglin(ansMRCV, 8, 11, NULL, "saturated")
  167. # Error: cannot allocate vector of size 2048.0 Gb
  168.  
  169. #------------------------#
  170. # 5 - Juntando respostas #
  171. #------------------------#
  172. # Uso de computador em casa, casa de amigos e casa de parentes
  173. ansMRCV.casa <- cbind(data.frame(as.numeric(as.character(ansMRCV$q1.1))),
  174. data.frame(as.numeric(as.character(ansMRCV$q1.2))),
  175. data.frame(as.numeric(as.character(ansMRCV$q1.3))))
  176. ansMRCV.casa
  177.  
  178. ansMRCV1.1 <- ifelse(rowSums(ansMRCV.casa) == 0,
  179. ansMRCV1.1 <- 0,
  180. ansMRCV1.1 <- 1)
  181. ansMRCV1.1 <- as.factor(ansMRCV1.1)
  182. ansMRCV1.1
  183.  
  184. # Uso de computador em outros dois locais
  185. ansMRCV1.2 <- ansMRCV$q1.4
  186. ansMRCV1.3 <- ansMRCV$q1.5
  187.  
  188. # Uso de computador em lan-house, biblioteca e centros de inclusao digital
  189. ansMRCV.outros <- cbind(data.frame(as.numeric(as.character(ansMRCV$q1.6))),
  190. data.frame(as.numeric(as.character(ansMRCV$q1.7))),
  191. data.frame(as.numeric(as.character(ansMRCV$q1.8))))
  192. ansMRCV.outros
  193.  
  194. ansMRCV1.4 <- ifelse(rowSums(ansMRCV.outros) == 0,
  195. ansMRCV1.4 <- 0,
  196. ansMRCV1.4 <- 1)
  197. ansMRCV1.4 <- as.factor(ansMRCV1.4)
  198. ansMRCV1.4
  199.  
  200. # Uso de computador para edicao
  201. ansMRCV.edicao <- cbind(data.frame(as.numeric(as.character(ansMRCV$q2.1))),
  202. data.frame(as.numeric(as.character(ansMRCV$q2.2))))
  203. ansMRCV.edicao
  204.  
  205. ansMRCV2.1 <- ifelse(rowSums(ansMRCV.edicao) == 0,
  206. ansMRCV2.1 <- 0,
  207. ansMRCV2.1 <- 1)
  208. ansMRCV2.1 <- as.factor(ansMRCV2.1)
  209. ansMRCV2.1
  210.  
  211. # Uso de computador para dados
  212. ansMRCV.dados <- cbind(data.frame(as.numeric(as.character(ansMRCV$q2.3))),
  213. data.frame(as.numeric(as.character(ansMRCV$q2.4))))
  214. ansMRCV.dados
  215.  
  216. ansMRCV2.2 <- ifelse(rowSums(ansMRCV.dados) == 0,
  217. ansMRCV2.2 <- 0,
  218. ansMRCV2.2 <- 1)
  219. ansMRCV2.2 <- as.factor(ansMRCV2.2)
  220. ansMRCV2.2
  221.  
  222. # Uso de computador para internet
  223. ansMRCV.net <- cbind(data.frame(as.numeric(as.character(ansMRCV$q2.5))),
  224. data.frame(as.numeric(as.character(ansMRCV$q2.6))),
  225. data.frame(as.numeric(as.character(ansMRCV$q2.7))))
  226. ansMRCV.net
  227.  
  228. ansMRCV2.3 <- ifelse(rowSums(ansMRCV.net) == 0,
  229. ansMRCV2.3 <- 0,
  230. ansMRCV2.3 <- 1)
  231. ansMRCV2.3 <- as.factor(ansMRCV2.3)
  232. ansMRCV2.3
  233.  
  234. # Uso de computador para outros
  235. ansMRCV.outros <- cbind(data.frame(as.numeric(as.character(ansMRCV$q2.8))),
  236. data.frame(as.numeric(as.character(ansMRCV$q2.9))),
  237. data.frame(as.numeric(as.character(ansMRCV$q2.10))),
  238. data.frame(as.numeric(as.character(ansMRCV$q2.11))))
  239. ansMRCV.outros
  240.  
  241. ansMRCV2.4 <- ifelse(rowSums(ansMRCV.outros) == 0,
  242. ansMRCV2.4 <- 0,
  243. ansMRCV2.4 <- 1)
  244. ansMRCV2.4 <- as.factor(ansMRCV2.4)
  245. ansMRCV2.4
  246.  
  247. # Juntando as respostas
  248. ansMRCV.novo <- data.frame(ansMRCV1.1, ansMRCV1.2, ansMRCV1.3, ansMRCV1.4,
  249. ansMRCV2.1, ansMRCV2.2, ansMRCV2.3, ansMRCV2.4)
  250. ansMRCV.novo
  251.  
  252. # Análise de independência entre as respostas das questões 1 e 2 com o pacote MRCV
  253. # Pode ser feito por 3 métodos (# type="all" gera os resultados pelos 3 métodos)
  254. #----------------------------------------------------#
  255. # A - Bootstrap não-paramétrico (um pouco demorado!) #
  256. #----------------------------------------------------#
  257. result_indep_boot <- MI.test(ansMRCV.novo, I=4, J=4, type = "boot", summary.data = FALSE,
  258. add.constant = 0.5, plot.hist = TRUE, print.status = TRUE)
  259. result_indep_boot
  260. # p.boot = p.combo.prod = p.combo.min < 0.0005 (não é independente)
  261.  
  262. #-----------------------------#
  263. # B - Segunda Ordem Rao-Scott #
  264. #-----------------------------#
  265. result_indep_rs2 <- MI.test(ansMRCV.novo, I=4, J=4, type = "rs2", summary.data = FALSE,
  266. add.constant = 0.5, plot.hist = FALSE, print.status = TRUE)
  267. result_indep_rs2
  268. # Error: cannot allocate vector of size 8.0 Gb (??)
  269.  
  270. #--------------------------#
  271. # C - Ajuste de Bonferroni #
  272. #--------------------------#
  273. result_indep_bon <- MI.test(ansMRCV.novo, I=4, J=4, type = "bon", summary.data = FALSE,
  274. add.constant = 0.5, plot.hist = TRUE, print.status = TRUE)
  275. result_indep_bon
  276. # p.adj < 0.0001 (não é independente)
  277.  
  278.  
  279. #---------------------#
  280. # 6 - Modelando MRCVs #
  281. #---------------------#
  282. modelo.spmi <- genloglin(ansMRCV.novo, I=4, J=4, NULL, "spmi")
  283. modelo.homogeneo <- genloglin(ansMRCV.novo, I=4, J=4, NULL, "homogeneous")
  284. modelo.wmain <- genloglin(ansMRCV.novo, I=4, J=4, NULL, "w.main")
  285. modelo.ymain <- genloglin(ansMRCV.novo, I=4, J=4, NULL, "y.main")
  286. modelo.wymain <- genloglin(ansMRCV.novo, I=4, J=4, NULL, "wy.main")
  287. modelo.saturado <- genloglin(ansMRCV.novo, I=4, J=4, NULL, "saturated")
  288.  
  289. summary(modelo.spmi)
  290. summary(modelo.homogeneo)
  291. summary(modelo.wmain)
  292. summary(modelo.ymain)
  293. summary(modelo.wymain)
  294. summary(modelo.saturado)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement