Quelle est une bonne approche pour enseigner le R dans un laboratoire informatique?

15

Il y a eu plusieurs bonnes questions et ensembles de réponses sur des livres d'introduction ou des approches pour apprendre R par exemple ici et ici . Mais j'ai un problème légèrement différent - la meilleure façon d'exécuter une session d'une heure (ou plusieurs de ces sessions) dans un laboratoire informatique qui permettra aux gens de démarrer en R, familier avec son approche de base, etc.

Mon plan actuel serait de travailler efficacement sur le (s) chapitre (s) d'introduction de quelque chose comme SimpleR de Verzani, puis d'introduire un ensemble de données familier, mais y a-t-il une autre approche que les gens ont trouvée utile? Par exemple, est-il bon d'introduire des données réelles immédiatement ou de résoudre les problèmes de manière plus abstraite? Dois-je expliquer de manière exhaustive comment utiliser les crochets ou exciter les gens avec des exemples de graphiques en treillis?

Mon public cible connaît bien les statistiques (bien qu'il ne soit pas des experts) et les utilisateurs compétents de SPSS; pas familier avec les langages de programmation au-delà du type de macro et de script que vous obtiendriez dans SPSS et des choses similaires.

Tous les conseils ou références aux plans de cours seraient appréciés. Cependant, je ne veux pas reproduire les nombreuses bonnes listes de matériel en ligne présentant R - des références strictement à la question pédagogique en face à face.

Peter Ellis
la source
Devrait probablement être un wiki communautaire, non?
Peter Ellis
1
Cela me semble être une bonne idée. :)
Michelle
1
Ce qui est vraiment crucial pour répondre à cette question, c'est quelle sera votre configuration. Si vous avez une seule « heure longue séance ... dans un laboratoire informatique » , il va être très peu que vous pouvez faire et vous aurez très peu de convertis. Si vous en avez "plusieurs" et qu'ils connaissent déjà assez bien les statistiques et la programmation de base, vous pouvez amorcer la pompe de telle sorte qu'ils puissent aller de l'avant par eux-mêmes et être enthousiastes à l'idée d'essayer, mais cette dernière nécessite une approche différente. Pour les personnes ayant des statistiques et aucune connaissance en programmation, un cours d'un semestre serait idéal.
gung - Reinstate Monica
Hmm, bon point @gung, ok, la configuration est assez spécifique. Je suis leur manager et je pourrais donc simplement leur dire quoi faire. Nous avons une session d'une quinzaine d'heures sur les compétences en statistiques (plusieurs d'entre nous présentent à tour de rôle) ce qui devient beaucoup plus pratique et nous avons convenu de faire beaucoup de cela en laboratoire sur des machines avec des données réelles. J'aurais donc dû préciser que la véritable exigence est de les familiariser suffisamment avec R en une ou deux sessions pour que lorsque nous faisons des choses comme l'ajustement de modèles de régression ou la recherche de tracés de diagnostic dans les sessions suivantes, nous ne soyons pas complètement distraits par les bases.
Peter Ellis
2
@gung Un grand +1 pour votre commentaire approfondi. J'enseigne le R depuis longtemps et je suis finalement arrivé à la même conclusion: les personnes n'ayant aucune compréhension légère de la programmation ou une invite de ligne de commande auront probablement des difficultés à gérer R. Cela empire lorsque nous devons familiariser les étudiants avec statistiques utilisant R en quelques heures ...
chl

Réponses:

7

Je plaiderais pour une approche complètement différente. J'ai vu des didacticiels R enseignés sous deux angles différents: une approche par blocs de construction, dans laquelle les utilisateurs sont introduits aux concepts fondamentaux de R, et une approche choc et impression, dans laquelle les utilisateurs voient les capacités incroyables de R mais qui restent relativement peu de compréhension de la façon de faire quoi que ce soit. Ce dernier résonne certainement plus fortement auprès des élèves, mais aucun ne semble très efficace pour produire des utilisateurs.

Au lieu de cela, je prendrais une tâche courante et relativement simple dans SPSS et passerais à travers la conversion en R, avec un peu de naïveté feinte de votre part - par exemple, en suivant l'excellente suggestion de Xi'an de rechercher certaines fonctions souhaitées avec ??plutôt que juste rappelant la bonne fonction de la mémoire. Vos débutants convertiront presque certainement des processus existants au fur et à mesure qu'ils apprendront le R, pas de les écrire à partir de zéro - alors pourquoi ne pas leur montrer exactement comment vous y prendriez?

Un bon exemple pourrait consister simplement à charger des données, à effectuer des descriptions et à afficher des tracés de base. lm()peut être très, très simple et produit des résultats qu'ils comprendront et peuvent comparer à la sortie SPSS, ce qui peut également être intéressant à couvrir.

Pour les devoirs, faites-leur essayer de convertir l'un de leurs processus simples ou de charger et d'explorer un ensemble de données qu'ils connaissent très bien. Donnez-leur du temps en tête-à-tête pour comprendre où les choses vont mal, puis couvrez-les dans la prochaine session avec plus d'exemples de conversions. Les concepts de votre liste apparaîtront inévitablement (mon pari: facteurs vs vecteurs de caractères, pour vs appliquer) - et alors vous aurez une motivation réelle pour les couvrir. S'ils ne viennent pas ( attach), alors ils ne sont pas encore vraiment nécessaires - si cela signifie que vos débutants écrivent un peu de code non idiomatique dès le début ( forau lieu de apply), je ne vois pas le mal.

De cette façon, vos élèves peuvent progresser à peu près de la même manière que les étudiants en langues étrangères (ou du moins, comme je l'ai fait): la traduction grossière d'expressions simples suscite le désir d'expressions plus complexes, ce qui provoque le désir d'une compréhension plus approfondie de la grammaire , ce qui conduit finalement à une expression idiomatique. Ne passez pas trop vite à la «grammaire» et ne vous inquiétez pas trop de leur enseigner des choses qu'ils ne demandent pas, car ils l'oublieront probablement de toute façon. Les pointeurs délicats sur l'expression idiomatique sont excellents ( forvs apply), mais l'essentiel est de les amener à générer une sortie et à explorer par eux-mêmes.

Matt Parker
la source
(+1) Merci, Matt, cela ressemble à de bons conseils. J'aime particulièrement les deux derniers paragraphes.
chl
Merci Matt (et tout le monde - toute excellente aide). Je vais certainement utiliser le ?? approche, et les amener à recréer dans le laboratoire et comme tâches courantes qu'ils font avec d'autres logiciels (SPSS et Harmoni, qui est essentiellement un package croisé). J'ai encore besoin de quelque chose de raisonnablement directif juste pour les amener à ouvrir le sujet et à savoir par où commencer (et j'ai modifié mon plan de leçon 1 en conséquence), mais je pense que motiver l'auto-apprentissage en dehors du laboratoire est certainement la voie à suivre.
Peter Ellis
7

OK, voici ma propre réponse jusqu'à présent sur ce qui, selon moi, pourrait amener les gens à démarrer et les motiver à en apprendre davantage (j'essaie de les sevrer de SPSS, qui ne peut littéralement pas faire ce dont nous avons besoin, par exemple une analyse d'enquête complexe, au moins sans acheter plus de modules que je refuse de faire).

À la fin de la première session, vous devriez être en mesure de:

Les bases

  • Utilisez l'interface pour effectuer des calculs simples (utilisez R comme calculatrice)
  • Démarrez, enregistrez et chargez une fenêtre de script et utilisez-la efficacement
  • Créez et supprimez des objets dans votre espace de travail
  • Voir quel dossier est votre dossier de travail
  • Comprendre comment fonctionne le dossier P: / R / yourid et à quoi sert l'enregistrement d'un espace de travail à la sortie
  • Charger une image d'un espace de travail, y compris de XXX (nos données couramment utilisées)
  • Lister les objets en mémoire
  • Lister les noms des colonnes (variables) dans un bloc de données
  • Imprimer un objet à l'écran
  • Attacher et détacher un bloc de données
  • Savoir ce que l'on entend par: objet, fonction, argument (à une fonction), espace de travail, vecteur, bloc de données, matrice, numérique, facteur
  • Savoir rechercher de l'aide sur une fonction
  • Utilisation ?? pour trouver une liste des fonctions pertinentes
  • Où aller sur le Web et nos livres locaux et LAN pour plus de ressources
  • comprendre suffisamment les bases de R pour participer à des séances de laboratoire sur des techniques statistiques spécifiques

Manipulation de données

  • Créer un vecteur de nombres à l'aide de l'opérateur:
  • Faites un tableau des nombres pour une variable
  • Faites un tableau croisé des nombres pour deux variables
  • Créez un nouvel objet (par exemple l'un des tableaux ci-dessus) pour une manipulation ultérieure
  • Transposer une matrice ou un tableau
  • Créer un vecteur de moyennes d'une variable continue par un facteur en utilisant tapply ()
  • Lier plusieurs vecteurs ensemble à l'aide de cbind () ou data.frame ()
  • Créez un sous-ensemble d'une matrice en utilisant le []
  • Créer une transformation simple, par exemple un logarithme ou une racine carrée

Statistiques

  • Calculer la corrélation de deux variables continues

Graphique

  • Créer un histogramme d'une variable continue
  • Créez une fenêtre graphique et divisez-la en 2 ou 4 parties
  • Créer un tracé de ligne de densité d'une variable continue
  • Créer un nuage de points de deux variables continues
  • Ajouter une ligne droite à un nuage de points (vertical, horizontal ou ab)
  • Créer des étiquettes pour les axes et les titres

À la fin de trois sessions et en faisant une série d'exercices entre les deux, vous devriez également être en mesure de:

Les bases

  • Importez des données au format SPSS ou .csv
  • Supprimez tous les objets de votre espace de travail pour recommencer à zéro
  • utiliser une bibliothèque de packages
  • Enregistrer une image d'espace de travail et comprendre les principes de base R et la mémoire
  • Générer des variables aléatoires
  • Utilisez c () pour créer un vecteur
  • Avoir une bonne idée de l'endroit où aller pour apprendre de nouvelles méthodes et techniques

Manipulation de données

  • Utilisez l'agrégat () sur un ensemble de données réel, par exemple le nombre d'arrivées de visiteurs par mois et par pays
  • Les opérateurs ==,! = Et% in%; vecteurs logiques; et les utiliser pour sous-ensemble de données
  • ifelse () et l'utiliser pour créer de nouvelles variables
  • fonctions max, min et similaires et comment elles fonctionnent avec les vecteurs
  • Créez un vecteur ou une matrice pour stocker de nombreux résultats
  • Utilisez une boucle pour répéter plusieurs fois une fonction similaire
  • Utilisez apply () pour appliquer une fonction à chaque colonne ou ligne d'une matrice
  • Créer un facteur ordonné
  • Utilisez cut () pour recoder une variable numérique

Statistiques

  • Test du chi carré pour une table de contingence
  • Versions robustes de corrélations
  • Ajuster un modèle linéaire à deux variables continues, en plaçant les résultats dans un objet et en utilisant anova (), résumé () et plot () pour regarder les résultats
  • comprendre suffisamment les modèles et leur fonctionnement en R pour être prêt à appliquer vos compétences à un plus large éventail de types de modèles
  • Utilisez boot () pour effectuer un bootstrap sur une fonction de base comme cor (), mean () ou var ()
  • Utiliser sample () sur un ensemble de données réelles

Graphique

  • Créer un tracé de ligne de densité de réseau d'une variable continue en fonction des différents niveaux d'un facteur
  • qqnorm
  • construire un nuage de points avec différentes couleurs et points de caractère montrant différents niveaux d'un facteur; ajouter des points ou des lignes à un nuage de points existant
  • ajouter une légende
  • graphiques à points
  • errbar ()
  • utiliser une boucle pour dessiner plusieurs graphiques sur une page
Peter Ellis
la source
2
Compte tenu de votre configuration, cela semble raisonnable, mais c'est beaucoup à couvrir en une heure avec les débutants. J'insisterais constamment sur les ressources à leur disposition pour bâtir l'autosuffisance. Plus précisément, passez en revue le manuel R fourni avec l'installation et l'utilisation des fichiers d'aide. Par exemple, pour introduire la corrélation, commencez par ?? corrélation, montrez comment rechercher dans la liste, puis? Cor et montrez comment lire et comprendre l'aide; enseigner cor, hist, etc. à partir de la documentation . Peu importe à quel point ils sont intelligents, il y a une limite avec seulement une heure - ils doivent apprendre à obtenir les informations et à résoudre les problèmes par eux-mêmes .
gung - Rétablir Monica
1
Je pense que je travaille à environ 10 minutes à pied de vous, alors criez-moi si vous voulez passer quelque chose autour d'un café. :)
Michelle
Je ne pense pas que ce soit principalement le quoi , c'est le comment . Il s'agit d'amener les élèves à apprendre des choses en partie par eux-mêmes et à avoir une feuille de triche complète à portée de main + quelques devoirs à domicile.
Ondrej
@Michelle - sonne bien, écrivez-moi à peter.ellis [at] med.govt.nz
Peter Ellis
4
Ceci est une liste incroyablement ambitieuse! Je ne peux pas imaginer que vous couvriez tout cela en trois heures - je ne pense pas que je serais même capable de dire les mots pour couvrir tout cela en trois heures, encore moins répondre aux questions. Il y a quelques concepts que je sauterais entièrement: les espaces de travail (je préfère ne pas les utiliser - tout régénérer à partir du script rend le code plus robuste), attacher (également problématique, en particulier pour les nouveaux utilisateurs qui ne comprennent pas les environnements), transposer (trivial pour rechercher quand vous en avez besoin), et cbind (je ne l'utilise presque jamais).
Matt Parker
2

À la liste de Peter, j'ajouterais:

  1. sous-ensembles de données: sous-ensemble par observation (par exemple toutes les réponses supérieures à 3), sous-ensemble par variable.
  2. utiliser des instructions ifelse (ce fut une énorme courbe d'apprentissage pour moi, j'ai continué à essayer d'utiliser le type d'instruction if), en particulier ifelse imbriqué.
  3. résumer les données dans un bloc de données plus petit à l'aide de la commande d'agrégation.
  4. apprendre à utiliser l'opérateur ==.
  5. en utilisant <- plutôt que =
  6. renommer les variables
  7. les pièges de vectorisation de base, tels que max (A, B) dans SAS ne font pas ce que max (A, B) fait dans R, si A est une variable dans une trame de données et B est une valeur unique. Pour faire l'équivalent du code SAS (et probablement le code SPSS), j'utilise une instruction ifelse.
  8. utiliser avec au lieu d'attacher. :)

Plus de réflexions: Ils utilisent probablement COMPUTEbeaucoup dedans SPSS, donc couvrir comment faire cela Rserait bien. En outre, comment RECODEutiliser des variables dans R. Lorsque j'utilisais, SPSSje pense que la plupart de mon travail «non analytique» utilisait ces deux commandes.

Michelle
la source
1
Jetez un oeil sur pmax ...
Elvis
@ Xi'an, y aller maintenant pour jeter un coup d'œil (ou un coup de coude!) Ah, je n'avais pas cliqué sur vous, j'étais allé sur votre blog plusieurs fois via des liens R-blogger. :)
Michelle
2
Lorsque ifelsevous couvrez, assurez-vous de leur montrer comment cela fonctionne et ce que signifie l'avertissement dans sa documentation. Cela fonctionne logiquement une fois que vous y pensez, mais j'ai vu une confusion totale au sujet de ifelse«changer» les types de variables et de causer beaucoup de temps perdu.
Wayne
2
@ Xi'an: L'aide R indique que "l'opérateur = n'est autorisé qu'au niveau supérieur (par exemple, dans l'expression complète tapée à l'invite de commande) ou comme l'une des sous-expressions dans une liste d'expressions." Je peux penser à des situations autres que celles mentionnées dans votre blog, mais jusqu'à présent, seules des choses comme C-ish: a <- 1:5 ; b <- 4 ; a[b = 3] ; b ; a[b <- 3] ; boù l'indice donne les mêmes résultats, mais best différent (première fois pas changé, deuxième fois changé). Le =ne devait jamais être une affectation et n'aurait jamais dû être modifié pour essayer de rendre R plus agréable au goût. Ne le fais pas.
Wayne
1
@Elvis +1000 internets pour vous, cela pmaxfonctionne très bien.
Michelle