¿Cuál es un buen enfoque para enseñar R en un laboratorio de computación?

15

Ha habido varias buenas preguntas y conjuntos de respuestas sobre libros introductorios o enfoques para aprender R, por ejemplo, aquí y aquí . Pero tengo un problema ligeramente diferente: la mejor manera de ejecutar una sesión de una hora (o varias sesiones de este tipo) en un laboratorio de computación que hará que las personas comiencen en R, se familiaricen con su enfoque básico, etc.

Mi plan actual sería trabajar de manera efectiva a través de los capítulos introductorios de algo como el SimpleR de Verzani y luego presentar un conjunto de datos familiar, pero ¿hay algún otro enfoque que la gente haya encontrado útil? Por ejemplo, ¿es bueno introducir datos reales de inmediato o abordar los problemas de manera más abstracta? ¿Debería analizar exhaustivamente cómo usar los corchetes, o entusiasmar a las personas con ejemplos de gráficos de celosía?

Mi público objetivo está familiarizado con las estadísticas (aunque no son expertos) y usuarios competentes de SPSS; no está familiarizado con los lenguajes de programación más allá del tipo de macro y secuencias de comandos que obtendría en SPSS y cosas similares.

Cualquier consejo o referencia a los planes de lecciones serán apreciados. Sin embargo, no quiero duplicar las muchas buenas listas de material en línea que presentan R, estrictamente referencias a la pregunta de instrucción cara a cara.

Peter Ellis
fuente
Probablemente debería ser un wiki comunitario, ¿verdad?
Peter Ellis
1
Me parece una buena idea. :)
Michelle
1
Lo que es realmente crucial para responder a esta pregunta es cuál será su configuración. Si tiene una sola "sesión de una hora ... en un laboratorio de computación", habrá muy poco que pueda hacer y tendrá muy pocos conversos. Si tiene "varios de estos" y ya conocen las estadísticas y la programación básica con bastante detalle, puede preparar la bomba de tal manera que puedan avanzar por sí mismos y entusiasmarse con el intento, pero esto último requiere un enfoque diferente. Para las personas con algunas estadísticas y sin conocimientos de programación, un curso de un semestre sería ideal.
gung - Restablece a Monica
Hmm, buen punto @gung, ok, la configuración es bastante específica. Soy su gerente, así que podría decirles qué hacer. Tenemos una sesión quincenal de una hora sobre habilidades de estadísticas (varios de nosotros nos turnamos para presentar) que se está volviendo mucho más práctica y hemos acordado hacer mucho de eso en el laboratorio en máquinas con datos reales. Entonces, debería haber especificado que el requisito real es familiarizarlos lo suficiente con R en una o dos sesiones para que cuando hagamos cosas como ajustar modelos de regresión o mirar gráficas de diagnóstico en sesiones posteriores no nos distraigamos por completo con lo básico.
Peter Ellis
2
@gung Un gran +1 por tu minucioso comentario. He estado enseñando R durante mucho tiempo y finalmente llegué a una conclusión similar: las personas que no tienen una comprensión ligera de la programación o un indicador de línea de comandos probablemente enfrentarán algunas dificultades para lidiar con R. Empeora cuando tenemos que familiarizar a los estudiantes con estadísticas usando R en pocas horas ...
chl

Respuestas:

7

Yo abogaría por un enfoque completamente diferente. He visto tutoriales de R que se enseñaron desde dos perspectivas diferentes: un enfoque de bloques de construcción, en el que los usuarios son introducidos a los conceptos fundamentales de R, y un enfoque de sorpresa y asombro, en el que a los usuarios se les muestran las increíbles capacidades de R pero se quedan con relativamente poca comprensión de cómo hacer algo. Este último definitivamente resuena más fuertemente con los alumnos, pero ninguno parece muy efectivo en la producción de usuarios.

En cambio, tomaría una tarea común y relativamente simple en SPSS y la convertiría a R, con un poco de ingenuidad fingida de su parte, por ejemplo, siguiendo la excelente sugerencia de Xi'an de buscar algunas funciones deseadas en ??lugar de solo recordando la función correcta de la memoria. Sus novatos seguramente convertirán los procesos existentes a medida que aprenden R, no los escribirán desde cero, entonces, ¿por qué no mostrarles exactamente cómo lo haría?

Un buen ejemplo podría consistir simplemente en cargar datos, realizar algunos descriptivos y extraer algunos gráficos básicos. lm()puede ser muy, muy simple y produce resultados que comprenderán y pueden comparar con la salida de SPSS, por lo que también podría ser bueno para cubrir.

Para la tarea, haga que intenten convertir uno de sus procesos simples o cargar y explorar un conjunto de datos con el que están muy familiarizados. Déles un tiempo individual para descubrir dónde van las cosas mal, luego cubra los de la próxima sesión con más conversiones de ejemplo. Los conceptos de tu lista inevitablemente aparecerán (mi apuesta: factores vs. vectores de caracteres, para vs. aplicar), y luego tendrás una motivación del mundo real para cubrirlos. Si no aparecen ( attach), entonces realmente no son necesarios todavía; si eso significa que sus novatos escriben un pequeño código no idiomático desde el principio (en forlugar de apply), no veo el daño.

De esta manera, sus estudiantes pueden progresar de la misma manera que lo hacen los estudiantes de idiomas extranjeros (o al menos, como lo hice yo): la traducción cruda de expresiones simples provoca el deseo de expresiones más complejas, lo que provoca el deseo de una comprensión más profunda de la gramática , lo que finalmente conduce a una expresión idiomática. No saltes a la "gramática" demasiado pronto, y no te preocupes demasiado por enseñarles cosas sobre las que no están preguntando porque probablemente lo olvidarán de todos modos. Los indicadores suaves sobre la expresión idiomática son geniales ( forvs apply), pero lo principal es lograr que generen resultados y exploren por su cuenta.

Matt Parker
fuente
(+1) Gracias, Matt, eso suena como buenos consejos. Me gustan especialmente los dos últimos párrafos.
chl
Gracias Matt (y todos los demás, excelente ayuda). Definitivamente voy a estar usando el ?? enfoque, y hacer que se recreen en el laboratorio y como tarea común tareas que hacen con otro software (SPSS y Harmoni, que es básicamente un paquete de tablas cruzadas). Todavía necesito algo razonablemente directivo solo para que abran la cosa y sepan por dónde comenzar (y he modificado mi plan de lección 1 en consecuencia), pero creo que motivar el autoaprendizaje fuera del laboratorio es definitivamente el camino a seguir.
Peter Ellis
7

Bien, aquí está mi propia respuesta hasta ahora sobre lo que creo que haría que la gente comenzara y los motivara a aprender un poco más (estoy tratando de alejarlos de SPSS, que literalmente no puede hacer algo de lo que necesitamos, por ejemplo, análisis de encuestas complejas, al menos sin comprar más módulos que me niego a hacer).

Al final de la primera sesión , debería poder:

Lo esencial

  • Use la interfaz para hacer cálculos sencillos (use R como calculadora)
  • Inicie, guarde y cargue una ventana de script y úsela eficientemente
  • Crea y elimina objetos en tu espacio de trabajo
  • Vea qué carpeta es su carpeta de trabajo
  • Comprenda cómo funciona la carpeta P: / R / yourid y qué hace guardar un espacio de trabajo al salir
  • Cargue una imagen de un espacio de trabajo que incluya XXX (nuestros datos de uso común)
  • Enumerar los objetos en la memoria.
  • Enumerar los nombres de columnas (variables) en un marco de datos.
  • Imprime un objeto en la pantalla
  • Adjuntar y separar un marco de datos
  • Sepa qué se entiende por: objeto, función, argumento (a una función), espacio de trabajo, vector, marco de datos, matriz, numérico, factor
  • Sepa cómo buscar ayuda para una función
  • Utilizar ?? para encontrar una lista de funciones relevantes
  • Dónde ir en la web y nuestros libros locales y LAN para obtener más recursos
  • Comprender lo básico de R para participar en sesiones de laboratorio sobre técnicas estadísticas específicas

Manipulación de datos

  • Cree un vector de números usando el operador:
  • Haz una tabla de conteos para una variable
  • Hacer una tabla cruzada de recuentos para dos variables
  • Cree un nuevo objeto (por ejemplo, una de las tablas anteriores) para una mayor manipulación.
  • Transponer una matriz o tabla
  • Cree un vector de medias de una variable continua por un factor usando tapply ()
  • Enlace varios vectores juntos usando cbind () o data.frame ()
  • Cree un subconjunto de una matriz usando []
  • Cree una transformación simple, por ejemplo, logaritmo o raíz cuadrada

Estadísticas

  • Calcular la correlación de dos variables continuas.

Gráficos

  • Crear un histograma de una variable continua.
  • Cree una ventana gráfica y divídala en 2 o 4 partes.
  • Crear un diagrama lineal de densidad de una variable continua
  • Crear un diagrama de dispersión de dos variables continuas
  • Agregue una línea recta a un diagrama de dispersión (vertical, horizontal o ab)
  • Crear etiquetas para ejes y títulos.

Al final de tres sesiones y haciendo una serie de ejercicios intermedios, también debería ser capaz de:

Lo esencial

  • Importar datos en formato SPSS o .csv
  • Elimine todos los objetos en su espacio de trabajo para comenzar de nuevo
  • usar una biblioteca de paquetes
  • Guarde una imagen del espacio de trabajo y comprenda los principios básicos R y memoria
  • Generar variables aleatorias.
  • Use c () para crear un vector
  • Tener una buena idea de a dónde ir para aprender nuevos métodos y técnicas.

Manipulación de datos

  • Utilice agregado () en un conjunto de datos reales, por ejemplo, números de llegadas de visitantes por mes y país
  • Los operadores ==,! = Y% en%; vectores lógicos; y usarlos para subconjuntar datos
  • ifelse () y usándolo para crear nuevas variables
  • max, min y funciones similares y cómo funcionan con vectores
  • Cree un vector o matriz para almacenar numerosos resultados.
  • Use un bucle para repetir una función similar muchas veces
  • Use apply () para aplicar una función a cada columna o fila de una matriz
  • Crea un factor ordenado
  • Use cut () para recodificar una variable numérica

Estadísticas

  • Prueba de chi cuadrado para una tabla de contingencia
  • Versiones robustas de correlaciones
  • Ajuste un modelo lineal a dos variables continuas, colocando los resultados en un objeto y usando anova (), summary () y plot () para ver los resultados
  • comprender lo suficiente sobre los modelos y cómo funcionan en R para estar preparados para aplicar sus habilidades a una gama más amplia de tipos de modelos
  • Use boot () para realizar bootstrap en una función básica como cor (), mean () o var ()
  • Use sample () en un conjunto de datos de la vida real

Gráficos

  • Cree una gráfica de línea de densidad reticular de una variable continua dados diferentes niveles de un factor
  • qqnorm
  • construya un diagrama de dispersión con diferentes puntos de color y carácter que muestren diferentes niveles de un factor; agregar puntos o líneas a un diagrama de dispersión existente
  • agregar una leyenda
  • diagramas de puntos
  • errbar ()
  • usando un bucle para dibujar múltiples gráficos en una página
Peter Ellis
fuente
2
Dada su configuración, esto parece razonable, pero es mucho para cubrir en una hora con los novatos. Constantemente enfatizaría los recursos disponibles para desarrollar la autosuficiencia. Específicamente, repase el manual de R que viene con la instalación y el uso de los archivos de ayuda. Por ejemplo, para introducir la correlación, comience con la correlación, muestre cómo buscar en la lista, luego corche y muestre cómo leer y comprender la ayuda; enseñar cor, hist, etc. de la documentación . No importa cuán inteligentes sean, hay un límite con solo una hora: necesitan aprender a obtener la información y solucionar problemas por sí mismos .
gung - Restablece a Monica
1
Creo que trabajo a unos 10 minutos a pie de ti, así que dame un grito si quieres pasar algo por un café. :)
Michelle
No creo que sea principalmente el qué , es el cómo . Se trata de hacer que los alumnos aprendan cosas en parte por su cuenta y que tengan una hoja de trucos completa a mano + algunas tareas en el hogar.
Ondrej
@Michelle - suena bien, envíeme un correo electrónico a peter.ellis [at] med.govt.nz
Peter Ellis
44
¡Esta es una lista increíblemente ambiciosa! No puedo imaginarte cubriendo todo esto en tres horas. No creo que sea capaz de decir las palabras para cubrir todo esto en tres horas, mucho menos para responder preguntas. Hay algunos conceptos que omitiría por completo: espacios de trabajo (prefiero no usarlos; la regeneración de todo desde el script hace que el código sea más robusto), adjuntar (también problemático, especialmente para los nuevos usuarios que no entienden los entornos), la transposición (trivial buscar cuando lo necesites) y cbind (casi nunca uso esto).
Matt Parker
2

A la lista de Peter agregaría:

  1. marcos de datos de subconjunto: subconjunto por observación (por ejemplo, todas las respuestas anteriores a 3), subconjunto por variable.
  2. use declaraciones ifelse (esta fue una gran curva de aprendizaje para mí, seguí tratando de usar el tipo de declaración if), particularmente ifelse anidado.
  3. resumir datos en un marco de datos más pequeño utilizando el comando agregado.
  4. aprendiendo a usar el operador ==.
  5. usando <- en lugar de =
  6. renombrar variables
  7. trampas de vectorización básicas, como max (A, B) en SAS no hace lo que max (A, B) hace en R, si A es una variable en un marco de datos y B es un valor único. Para hacer el equivalente del código SAS (y probablemente el código SPSS), uso una declaración ifelse.
  8. utilizar con en lugar de adjuntar. :)

Más pensamientos: probablemente usan COMPUTEmucho SPSS, así que cubrir cómo hacerlo Rsería bueno. Además, cómo RECODEutilizar las variables en R. Cuando estaba usando SPSS, creo que la mayoría de mi trabajo "sin análisis" estaba usando esos dos comandos.

Michelle
fuente
1
Echa un vistazo a pmax ...
Elvis
@ Xi'an, yendo allí ahora para echar un vistazo (¡o un empujón!) Ah, no había hecho clic en ese eras tú, había ido a tu blog un par de veces a través de los enlaces de R-blogger. :)
Michelle
2
Al cubrir, ifelseASEGÚRESE de mostrarles cómo funciona y qué significa la advertencia en su documentación. Funciona lógicamente una vez que lo piensa, pero he visto una confusión total sobre ifelse"cambiar" los tipos de variables y causar mucho tiempo perdido.
Wayne
2
@ Xi'an: La ayuda de R dice: "el operador = solo está permitido en el nivel superior (por ejemplo, en la expresión completa escrita en el símbolo del sistema) o como una de las subexpresiones en una lista de expresiones entre paréntesis". Puedo pensar en situaciones distintas a las mencionadas en su blog, aunque hasta ahora solo cosas como C-ish son: a <- 1:5 ; b <- 4 ; a[b = 3] ; b ; a[b <- 3] ; bdonde la suscripción da los mismos resultados, pero bes diferente (la primera vez no cambia, la segunda cambia). El =nunca tuvo la intención de ser una tarea y nunca debería haber sido cambiado para tratar de hacer que R sea más apetecible. No lo hagas
Wayne
1
@Elvis +1000 internets para ti, eso pmaxfunciona muy bien.
Michelle