Elección de análisis estadísticos para una investigación

Antonio Martínez Pineda

1 de diciembre de 2016

Tipos de preguntas

De acuerdo con Leek y Peng (2015)1 existen seis tipos de preguntas:

Estos tipos de preguntas tienen características sumativas por lo que un análisis estadístico puede servir para contestar varias preguntas a la vez.

Características de una buena pregunta2

  1. Debe ser de interés para la audiencia
  2. Hay que asegurarse que no haya sido contestada anteriormente
  3. Se deriva de un marco de referencia plausible
  4. Debe tener una respuesta
  5. Debe ser específica

Afinando la pregunta

Toda vez que se ha identificado la pregunta se pueden utilizar las características del tipo de pregunta y de una buena pregunta para refinar la pregunta mediante los siguientes pasos utilizados de forma iterativa:

  1. Establecer las expectativas sobre la pregunta
  2. Reunir información sobre la pregunta
  3. Confirmar que las expectativas sean acordes con la información sobre la pregunta

Análisis exploratorio3

El análisis exploratorio de los datos consiste en la revisión de la estructura de la base de datos, las variables que se incluyen en la base de datos y las características y distribución de cada una de estas variables. Este análisis tiene como propósitos: a) determinar si existe algún problema con la base de datos; b) si los datos permiten responder la pregunta planteada; c) bosquejar la respuesta a la pregunta.
El análisis exploratorio debe cubrir los siguientes puntos:

  1. Leer los datos
  2. Revisar la base de datos
  3. Ver el inicio y el final de los datos
  4. Revisar las n
  5. Validar con una fuente externa (por lo menos)
  6. Hacer una gráfica
  7. Probrar la solución sencilla
  8. Desafiar la solución sencilla
  9. Preguntas de seguimiento

1. Leer los datos

El método a seguir depende del formato en el que estén guardados los datos, en la presentación Introducción a R4 se explica como leer una base de datos en formato .RData (diapositiva 18) y como importar datos desde diferentes formatos (diapositiva 24).

En este caso los datos están en un archivo .RDS por lo que podemos leerlos con la función readRDS().

base <- readRDS("base_grupo.RDS")

2. Revisar la base de datos

Siempre es importante saber cuántas variables hay en la base de datos y cuántas observaciones tenemos. Además, es importante conocer el nivel de medición de las variables y si su codificación es adecuada.

De manera general podemos obtener un resumen de todo esto con la función str() que nos informa sobre la clase de objeto que estamos revisando, en este caso una base de datos, el número de filas (observaciones) y columnas (variables) que incluye y una lista de las variables indicando su nombre, clase y una muestra de las primeras observaciones.

str(base)
'data.frame':   18 obs. of  5 variables:
 $ Nombre : Factor w/ 18 levels "Aideé","Alejandra",..: 3 7 5 17 4 11 9 6 1 12 ...
 $ Sexo   : Factor w/ 2 levels "Mujer","Hombre": 1 1 2 1 1 1 1 1 1 2 ...
 $ llaves : num  4 3 4 4 6 2 NA 4 4 2 ...
 $ parejas: num  7 3 5 4 1 4 NA 1 5 1 ...
 $ edad   : num  33 28 29 25 44 24 NA 27 22 22 ...

3. Ver el inicio y el final de los datos

Cuando se importan datos de algún otro formato (.csv, .xlsx, .sav, .dbf, por ejemplo) puede haber filas en blanco o notas antes o después de los datos. Cuando se leen los datos esta información puede quedar capturada como parte de los datos o simplemente, por algún defecto en el código, los datos pueden leerse parcialmente. Revisar la parte inicial y final de los datos es una forma práctica de detectar estos casos.

# La función head() nos presenta las primeras observaciones en la base de
# datos
head(base, 3)
  Nombre   Sexo llaves parejas edad
1    Ana  Mujer      4       7   33
2  Diana  Mujer      3       3   28
3 Carlos Hombre      4       5   29
# De igual forma tail() presenta las últimas observaciones de la base
tail(base, 2)
    Nombre  Sexo llaves parejas edad
17   Tania Mujer      8       2   22
18 Nallely Mujer      7       1   27

4. Contar las n

Esta es otra medida para revisar que todo esté como debe estar, si se espera tener un registro de 1000 sujetos y al revisar la base de datos solo hay 100, algo debe estar sucediendo. Cuando se realiza un estudio generalmente se conoce cuantos participantes hay y las cuentas deben coincidir, de igual forma se sabe que variables se están midiendo y cuáles son sus valores, mediante este análisis podemos detectar si hay alguna mala codificación o valores no válidos.

# Por ejemplo podemos revisar si tenemos un identificador único para cada
# observación
nrow(base) == length(unique(base$Nombre))
[1] TRUE
# También cuales son los niveles para un factor y si hay datos faltantes
sexo <- table(base$Sexo, useNA = "ifany")
sexo

 Mujer Hombre 
    16      2 
table(base$parejas, useNA = "ifany")

   1    2    3    4    5    7 <NA> 
   4    3    2    3    2    1    3 

5. Validar con una fuente externa (por lo menos)

Generalmente trabajamos con muestras (idealmente representativas) de alguna población, revisar que nuestros datos hagan sentido con lo que se espera de esa población es una forma rápida de evaular que tan útiles pueden ser esos datos, por ejemplo, para hacer inferencias.

Digamos que en la población estudiantil de la Facultad de Psicología hay 9 de cada 10 alumnos son mujeres (algo así como 90% de la población), esperaríamos una proporción similar en los datos que vamos estamos analizando.

round(prop.table(sexo) * 100, 2)

 Mujer Hombre 
 88.89  11.11 
# Supongamos también que la edad promedio de la población es de 23 años con
# una desviación estándar de 3.7 años
library(dplyr)
res <- base %>% summarise(Media = mean(edad, na.rm = T), DE = sd(edad, na.rm = T))
knitr::kable(res, digits = 2)
Media DE
26.6 5.77

6. Hacer una gráfica

Una imagen dice más que mil palabras

6. Hacer una gráfica (cont.)

Las gráficas nos sirven para comparar cosas, si presentamos una gráfica sin una comparación no es demasiado informativa.

6. Hacer una gráfica (cont.)

Si comparamos el número de llaves entre hombres y mujeres es mucho más informativo.

ggplot(base, aes(Sexo, llaves, fill = Sexo)) + geom_boxplot()

6. Hacer una gráfica (cont.)

También se pueden modelar predicciones o causalidades en una gráfica.

7. Probar la solución sencilla

with(base, cor.test(edad, parejas))

    Pearson's product-moment correlation

data:  edad and parejas
t = -0.17266, df = 13, p-value = 0.8656
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 -0.5466989  0.4760969
sample estimates:
        cor 
-0.04783135 
(summary(lm(parejas ~ edad, base)))

Call:
lm(formula = parejas ~ edad, data = base)

Residuals:
    Min      1Q  Median      3Q     Max 
-2.0692 -1.4038 -0.0391  0.9684  4.0962 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)
(Intercept)  3.39991    2.36651   1.437    0.174
edad        -0.01503    0.08708  -0.173    0.866

Residual standard error: 1.879 on 13 degrees of freedom
  (3 observations deleted due to missingness)
Multiple R-squared:  0.002288,  Adjusted R-squared:  -0.07446 
F-statistic: 0.02981 on 1 and 13 DF,  p-value: 0.8656

8. Desafiar la solución sencilla

La solución sencilla es atractiva -porque es sencilla- pero siempre se debe pensar en soluciones alternativas que puedan contradecir los resultados de esa solución.


Call:
lm(formula = parejas ~ edad + llaves + edad * llaves, data = base)

Residuals:
    Min      1Q  Median      3Q     Max 
-2.3437 -1.1198 -0.2326  1.1247  2.6773 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)
(Intercept) -12.79619    9.63573  -1.328    0.211
edad          0.64755    0.38633   1.676    0.122
llaves        2.88976    1.69644   1.703    0.117
edad:llaves  -0.11977    0.06843  -1.750    0.108

Residual standard error: 1.803 on 11 degrees of freedom
  (3 observations deleted due to missingness)
Multiple R-squared:  0.223, Adjusted R-squared:  0.01106 
F-statistic: 1.052 on 3 and 11 DF,  p-value: 0.4083

8. Desafiar la solución sencilla (cont.)


     Multiple regression power calculation 

              u = 11
              v = 3
             f2 = 0.1603428
      sig.level = 0.05
          power = 0.0654074

     Multiple regression power calculation 

              u = 11
              v = 3
             f2 = 12.99785
      sig.level = 0.05
          power = 0.9

Preguntas de seguimiento

  1. ¿Tenemos los datos apropiados?
  2. ¿Necesitamos otros datos?
  3. ¿La pregunta de investigación es la correcta?

  1. Leek, J. T. & Peng, R. D. (2015). What is the question? Science, 348 (6228),1314-135. DOI: 10.1126/science.aaa6146

  2. Peng, R. D. & Matsui, E. (2016). Art of data science: A guide for anyone who works with data. Skybrude Consulting, LLC, disponible en: http://leanpub.com/artofdatascience

  3. Peng, R. D. (2015). Exploratory data analysis with R. Autor. Disponible en: http://leanpub.com/exdata

  4. Martínez, A. (4 de julio de 2016). Introducción a R. Presentación disponible en: http://rpubs.com/tonosan/Intro_R