jvcasillas / morph_pred

Morphological predictability code
1 stars 1 forks source link

dealing with NAs #12

Closed crislozano closed 5 years ago

crislozano commented 5 years ago

Hola, Joseph:

  1. Comentario de un problema que había: Estoy preparando la estadística de lo que Nuria llama el double dipping. Al añadir los datos de WM y PSTM al script del GCA, algo no me cuadraba. Investigué y vi que en el .csv con los datos limpios había 24 monolingües y no 25. Resulta que al renombrar los grupos (había 4 al final que tenían un código distinto) dos participantes quedaron con el mismo código. No sé muy bien qué habrá pasado con los datos entonces... Pero bueno, ya cambié el script de limpieza (de 50ms y 10ms, pero el de 10ms no lo puedo pasar porque me falta el .txt, que sería muy grande para ponerlo en github) para evitar que pase eso, solo añadí este código y ya funciona:
  # rename participant SS10 to SS31 to avoid having 2 participants with the same code

  mutate(., participant = recode(participant, ss10 = "ss31")) %>%
  1. Pregunta

Para meter WM como fixed factor, quería estandarizarlo antes. Hay una participante con NA (perdimos su WM) y al transformarlo, me salen todo NAs ¿cuál es la mejor manera de sacar ese NA en este caso? Cuando hago esto me da error:


 mutate(., group = fct_relevel(group, "ss", "la", "int"),
         condition_sum = if_else(condition == "stressed", 1, -1),
         coda_sum = if_else(coda == 0, 1, -1),
         wm_std = na.omit((wm - mean(wm) / sd(wm)))) # AÑADO ESTA LÍNEA
jvcasillas commented 5 years ago

Prueba algo así:

 mutate(., group = fct_relevel(group, "ss", "la", "int"),
         condition_sum = if_else(condition == "stressed", 1, -1),
         coda_sum = if_else(coda == 0, 1, -1),
         wm_std = (wm - mean(wm, na.rm = T) / sd(wm, na.rm = T))) # AÑADO ESTA LÍNEA

Sugiero que hagas esto en el script donde haces el análisis y no en tidy_gaze_data_stress_Xms_bin.R (no sé dónde lo tienes, pero lo comento por si acaso)

crislozano commented 5 years ago

Funcionó así, gracias. Sí, en tidy_gaze_data_stress_Xms.bin.R lo único que hice fue añadir esas variables que están en otro archivo, para no tener que cargar el archivo nuevo en el script de GCA. Cuando intenté estandarizarlas en el script de limpieza es un lío porque no todos los grupos tienen todas las variables (p.ej. DELE solo es para los grupos de L2).

Miré WM en todos los grupos y no sale nada, pero tengo una duda sobre cómo añadirlo al modelo.

  1. En los modelos individuales de grupo ¿Debería añadir WM como único fixed effect o añadirlo a un modelo en el que ya tenía coda_sum + condition_sum?

  2. En el modelo que incluye los 3 grupos, ¿Cómo lo añado? Lo hice así, pero no estoy segura

  # Base model
  gca_full_mod_base <-
    lmer(eLog ~ 1 + (ot1 + ot2 + ot3) * coda_sum * condition_sum +
           (1 + coda_sum + condition_sum + (ot1 + ot2 + ot3) | participant) +
           (1 + ot1 + ot2 + ot3 | target),
         control = lmerControl(optimizer = 'bobyqa',
                               optCtrl = list(maxfun = 2e4)),
         data = stress_gc_subset, REML = F)

# WM and group interaction
  gca_mod_full_wm_0 <- update(gca_full_mod_base,   . ~ . + wm_std:group)
  gca_mod_full_wm_1 <- update(gca_mod_full_wm_0,   . ~ . + ot1:wm_std:group)
  gca_mod_full_wm_2 <- update(gca_mod_full_wm_1,   . ~ . + ot2:wm_std:group)
  gca_mod_full_wm_3 <- update(gca_mod_full_wm_2,   . ~ . + ot3:wm_std:group)
crislozano commented 5 years ago

Ah! Y Nuria me dijo que metiese phonotactic frequency, recuerdo que tú habías sacado las frecuencias ya para estos estímulos ¿verdad? ¿tienes el .csv? No lo encuentro en este proyecto.

jvcasillas commented 5 years ago

En los modelos individuales de grupo ¿Debería añadir WM como único fixed effect o añadirlo a un modelo en el que ya tenía coda_sum + condition_sum?

Si te entiendo bien, creo que harás las dos cosas. Es decir, lo tienes que añadir como fixed effect (si no, qué va a ser?) y deberías añadirlo al modelo que ya cuenta con coda y condition.

En el modelo que incluye los 3 grupos, ¿Cómo lo añado? Lo hice así, pero no estoy segura gca_mod_full_wm_0 <- update(gca_full_mod_base, . ~ . + wm_std:group) gca_mod_full_wm_1 <- update(gca_mod_full_wm_0, . ~ . + ot1:wm_std:group) gca_mod_full_wm_2 <- update(gca_mod_full_wm_1, . ~ . + ot2:wm_std:group) gca_mod_full_wm_3 <- update(gca_mod_full_wm_2, . ~ . + ot3:wm_std:group)

Esto incluye todas las interacciones pero no tiene el efecto de wm en el intercept (según lo que veo). O sea si gca_full_mod_base no tiene wm, then falta el efecto en el intercept. En este caso el primer modelo sería:

gca_mod_full_wm_0 <- update(gca_full_mod_base,   . ~ . + wm_std)

Si gca_full_mod_base ya tiene wm, entonces lo de arriba no hace falta.

jvcasillas commented 5 years ago

Ah! Y Nuria me dijo que metiese phonotactic frequency, recuerdo que tú habías sacado las frecuencias ya para estos estímulos ¿verdad? ¿tienes el .csv? No lo encuentro en este proyecto.

Ea. Añádelo to... ;) Está en la carpeta data > raw del bayesian_analysis branch que estoy usando ahora (me di cuenta que no lo había puesto ahí cuando empecé a hacer los nuevos análisis). El archivo se llama phonotactic_frequency.csv. Ahora hago un pull request para que esté en master y puedes actualizar tu repo.