Qual é uma boa abordagem para ensinar R em um laboratório de informática?

15

Houve várias boas perguntas e conjuntos de respostas em livros introdutórios ou abordagens para aprender R, por exemplo, aqui e aqui . Mas eu tenho um problema um pouco diferente - a melhor maneira de executar uma sessão de uma hora (ou várias dessas sessões) em um laboratório de informática que fará com que as pessoas iniciem no R, familiarizadas com sua abordagem básica etc.

Meu plano atual seria trabalhar efetivamente o (s) capítulo (s) introdutório (s) de algo como SimpleR de Verzani e depois introduzir um conjunto de dados familiar, mas há alguma outra abordagem que as pessoas considerem útil? Por exemplo, é bom introduzir dados reais imediatamente ou resolver problemas de maneira mais abstrata? Devo explicar exaustivamente como usar os colchetes ou excitar as pessoas com exemplos de gráficos de treliça?

Meu público-alvo está familiarizado com estatísticas (embora não seja especialista) e usuários competentes do SPSS; não está familiarizado com linguagens de programação além do tipo de macro e script que você obteria no SPSS e coisas semelhantes.

Todas as dicas ou referências aos planos de aulas serão apreciadas. No entanto, não quero duplicar as muitas boas listas de material on-line que introduzem R - estritamente referências à pergunta instrucional cara a cara.

Peter Ellis
fonte
Provavelmente deveria ser um wiki da comunidade, certo?
Peter Ellis
11
Parece uma boa ideia para mim. :)
Michelle
11
O que é realmente crucial para como essa pergunta deve ser respondida é qual será sua configuração. Se você tiver uma única "sessão de uma hora ... em um laboratório de informática", haverá muito pouco que você pode fazer e terá muito poucos conversos. Se você tem "vários desses" e eles já conhecem as estatísticas e a programação básica de maneira bastante completa, é possível acionar a bomba de forma que eles possam avançar por conta própria e ficar entusiasmados com a tentativa, mas esse último requer uma abordagem diferente. Para pessoas com algumas estatísticas e nenhum conhecimento de programação, um curso de um semestre seria o ideal.
gung - Restabelece Monica
Hmm, bom ponto @gung, ok, a configuração é bem específica. Eu sou o gerente deles e, portanto, poderia dizer a eles o que fazer. Temos uma sessão quinzenal de uma hora sobre habilidades estatísticas (vários de nós se revezam na apresentação), o que está ficando muito mais prático e concordamos em fazer muito disso no laboratório em máquinas com dados reais. Portanto, eu deveria ter especificado que o requisito real é familiarizá-los o suficiente com R em uma ou duas sessões para que, quando fizermos coisas como ajustar modelos de regressão ou examinar gráficos de diagnóstico nas sessões subseqüentes, não seremos completamente distraídos pelo básico.
Peter Peter Ellis
2
@gung Um grande +1 para seu comentário completo. Eu ensino R há muito tempo e finalmente cheguei a uma conclusão semelhante: as pessoas que não têm um entendimento leve da programação ou de um prompt da linha de comando provavelmente enfrentarão algumas dificuldades ao lidar com R. Fica pior quando temos que familiarizar os alunos com estatísticas usando R em poucas horas ...
chl

Respostas:

6

Eu argumentaria por uma abordagem completamente diferente. Eu já vi tutoriais de R que foram ensinados sob duas perspectivas diferentes: uma abordagem de blocos de construção, na qual os usuários são apresentados aos conceitos fundamentais de R, e uma abordagem de choque e pavor, na qual os usuários mostram os incríveis recursos de R, mas ficam com relativamente pouco entendimento de como fazer qualquer coisa. Definitivamente, o último ressoa mais fortemente com os alunos, mas nenhum deles parece ser muito eficaz na produção de usuários.

Em vez disso, eu pegaria uma tarefa comum e relativamente simples no SPSS e a converteria em R, com um pouco de ingenuidade fingida de sua parte - por exemplo, seguindo a excelente sugestão de Xi'an de procurar algumas funções desejadas, em ??vez de apenas recuperando a função correta da memória. Seus novatos quase certamente estarão convertendo processos existentes à medida que aprendem R, não os escrevendo do zero - então, por que não mostrar exatamente a eles como você faria isso?

Um bom exemplo pode consistir em carregar dados, executar alguns descritivos e exibir alguns gráficos básicos. lm()pode ser muito, muito simples e produz resultados que eles entenderão e podem comparar com a saída do SPSS, o que também pode ser bom para cobrir.

Para trabalhos de casa, peça a eles que tentem converter um de seus processos simples ou carregar e explorar um conjunto de dados com o qual estejam familiarizados. Dê a eles um tempo individual para descobrir onde as coisas estão dando errado e cubra-os na próxima sessão com mais conversões de exemplo. Os conceitos da sua lista surgirão inevitavelmente (minha aposta: fatores versus vetores de caracteres, versus vs.) - e você terá uma motivação do mundo real para cobri-los. Se eles não aparecerem ( attach), ainda não serão realmente necessários - se isso significa que seus novatos escrevem um pouco de código não idiomático no início (em forvez de apply), não vejo mal.

Dessa forma, seus alunos podem progredir da mesma maneira que os alunos de línguas estrangeiras (ou pelo menos da mesma maneira que eu): a tradução grosseira de expressões simples estimula o desejo de expressões mais complexas, o que causa o desejo de uma compreensão mais profunda da gramática , o que eventualmente leva à expressão idiomática. Não pule para a "gramática" muito cedo e não se preocupe muito em ensinar a eles coisas sobre as quais não estão perguntando, porque provavelmente esquecerão de qualquer maneira. Os indicadores suaves sobre a expressão idiomática são ótimos ( forvs apply), mas o principal é fazê-los gerar saída e explorar por conta própria.

Matt Parker
fonte
(+1) Obrigado, Matt, isso parece um grande conselho. Gosto especialmente dos dois últimos parágrafos.
CHL
Obrigado Matt (e todos os outros - excelente ajuda). Definitivamente vou estar usando o ?? abordagem, e fazê-los recriar em laboratório e como tarefas de casa tarefas comuns que eles fazem com outros softwares (SPSS e Harmoni, que é basicamente um pacote com guias). Eu ainda preciso de algo razoavelmente diretivo apenas para fazê-los abrir as coisas e saber por onde começar (e modifiquei meu plano de aula 1 em conformidade), mas acho que motivar o auto-aprendizado fora do laboratório é definitivamente o caminho a seguir.
Peter Peter Ellis
7

OK, aqui está minha própria resposta, até agora, sobre o que acho que levaria as pessoas a motivá-las a aprender um pouco mais (estou tentando afastá-las do SPSS, que literalmente não pode fazer parte do que precisamos, por exemplo, análises complexas de pesquisas, pelo menos sem comprar mais módulos que eu me recuso a fazer).

No final da primeira sessão, você deve ser capaz de:

Fundamentos

  • Use a interface para fazer cálculos diretos (use R como uma calculadora)
  • Inicie, salve e carregue uma janela de script e use-a eficientemente
  • Crie e remova objetos no seu espaço de trabalho
  • Veja qual pasta é a sua pasta de trabalho
  • Entenda como a pasta P: / R / yourid funciona e o que salvar um espaço de trabalho na saída faz
  • Carregar uma imagem de um espaço de trabalho, incluindo XXX (nossos dados comumente usados)
  • Listar os objetos na memória
  • Listar os nomes das colunas (variáveis) em um quadro de dados
  • Imprimir um objeto na tela
  • Anexar e desanexar um quadro de dados
  • Saiba o que se entende por: objeto, função, argumento (para uma função), espaço de trabalho, vetor, quadro de dados, matriz, numérico, fator
  • Saiba como procurar ajuda em uma função
  • Usar ?? para encontrar uma lista de funções relevantes
  • Para onde ir na Web e em nossos livros e LAN locais para obter mais recursos
  • entender o suficiente do básico de R para participar de sessões de laboratório em técnicas estatísticas específicas

Manipulação de dados

  • Crie um vetor de números usando o operador:
  • Faça uma tabela de contagens para uma variável
  • Faça uma crosstab de contagens para duas variáveis
  • Crie um novo objeto (por exemplo, uma das tabelas acima) para manipulação adicional
  • Transpor uma matriz ou tabela
  • Crie um vetor de médias de uma variável contínua por um fator usando tapply ()
  • Ligue vários vetores usando cbind () ou data.frame ()
  • Crie um subconjunto de uma matriz usando o []
  • Crie uma transformação simples, por exemplo, logaritmo ou raiz quadrada

Estatisticas

  • Calcular a correlação de duas variáveis ​​contínuas

Gráficos

  • Crie um histograma de uma variável contínua
  • Crie uma janela gráfica e divida-a em 2 ou 4 partes
  • Criar um gráfico de linhas de densidade de uma variável contínua
  • Crie um gráfico de dispersão de duas variáveis ​​contínuas
  • Adicione uma linha reta a um gráfico de dispersão (vertical, horizontal ou ab)
  • Crie etiquetas para eixos e títulos

No final de três sessões e fazendo uma série de exercícios entre eles, você também deve ser capaz de:

Fundamentos

  • Importar dados no formato SPSS ou .csv
  • Remova todos os objetos em sua área de trabalho para começar de novo
  • use uma biblioteca de pacotes
  • Salve uma imagem da área de trabalho e entenda os princípios básicos R e memória
  • Gere variáveis ​​aleatórias
  • Use c () para criar um vetor
  • Tenha uma boa idéia de onde ir para aprender novos métodos e técnicas

Manipulação de dados

  • Use agregado () em um conjunto de dados real, por exemplo, números de visitantes por mês e país
  • Os operadores ==,! = E% em%; vetores lógicos; e usá-los para agrupar dados
  • ifelse () e usá-lo para criar novas variáveis
  • funções max, min e similares e como elas funcionam com vetores
  • Crie um vetor ou matriz para armazenar vários resultados
  • Use um loop para repetir uma função semelhante várias vezes
  • Use apply () para aplicar uma função a cada coluna ou linha de uma matriz
  • Crie um fator ordenado
  • Use cut () para recodificar uma variável numérica

Estatisticas

  • Teste do qui-quadrado para uma tabela de contingência
  • Versões robustas de correlações
  • Ajuste um modelo linear a duas variáveis ​​contínuas, colocando os resultados em um objeto e usando anova (), summary () e plot () para ver os resultados
  • entender o suficiente sobre os modelos e como eles funcionam no R para estar pronto para aplicar suas habilidades a uma ampla variedade de tipos de modelos
  • Use boot () para executar o bootstrap em uma função básica como cor (), mean () ou var ()
  • Use sample () em um conjunto de dados da vida real

Gráficos

  • Crie um gráfico de linhas de densidade da rede de uma variável contínua, considerando os diferentes níveis de um fator
  • qqnorm
  • construir um gráfico de dispersão com diferentes cores e pontos de caracteres, mostrando diferentes níveis de um fator; adicionar pontos ou linhas a um gráfico de dispersão existente
  • adicione uma legenda
  • dotcharts
  • errbar ()
  • usando um loop para desenhar vários gráficos em uma página
Peter Ellis
fonte
2
Dada a sua configuração, isso parece razoável, mas é muito para cobrir em uma hora com iniciantes. Eu enfatizaria constantemente os recursos disponíveis para construir a auto-suficiência. Especificamente, leia o manual do R que acompanha a instalação e o uso dos arquivos de ajuda. Por exemplo, para introduzir a correlação, comece com? Correlação, mostre como pesquisar na lista, depois cor e mostre como ler e entender a ajuda; ensine cor, hist, etc. da documentação . Por mais inteligentes que sejam, há um limite de apenas uma hora - eles precisam aprender a obter as informações e solucionar problemas sozinhos .
gung - Restabelece Monica
11
Eu acho que trabalho cerca de 10 minutos a pé de você, então me dê um grito se você quiser repassar algo sobre um café. :)
Michelle
Eu não acho que é principalmente o que , é o como . Trata-se de fazer com que os alunos aprendam as coisas em parte por conta própria e tenham em mãos uma folha de dicas abrangente + algumas tarefas domésticas.
Ondrej
@Michelle - soa bem, envie-me um e-mail para peter.ellis [at] med.govt.nz
Peter Ellis
4
Esta é uma lista incrivelmente ambiciosa! Não consigo imaginar você cobrindo tudo isso em três horas - acho que nem seria capaz de dizer as palavras para cobrir tudo isso em três horas, muito menos responder a perguntas. Existem alguns conceitos que eu pularia inteiramente: espaços de trabalho (prefiro não usá-los - regenerar tudo do script torna o código mais robusto), anexar (também problemático, especialmente para novos usuários que não entendem ambientes), transpor (trivial para procurar quando precisar) e cbind (eu quase nunca uso isso).
Matt Parker
2

À lista de Pedro, acrescentaria:

  1. subconjuntos de dados: subconjunto por observação (por exemplo, todas as respostas acima de 3), subconjunto por variável.
  2. use ifelse (essa foi uma enorme curva de aprendizado para mim, continuei tentando usar o tipo de instrução if), principalmente ifelse aninhado.
  3. resumir dados em um quadro de dados menor usando o comando agregado.
  4. aprendendo a usar o operador ==.
  5. usando <- em vez de =
  6. renomear variáveis
  7. interceptações básicas de vetorização, como max (A, B) no SAS, não fazem o que max (A, B) faz em R, se A for uma variável em um quadro de dados e B for um valor único. Para fazer o equivalente ao código SAS (e provavelmente o código SPSS), eu uso uma instrução ifelse.
  8. use com em vez de anexar. :)

Mais pensamentos: eles provavelmente usam COMPUTEmuito SPSS, então cobrir como fazer isso Rseria bom. Além disso, como RECODEvariáveis ​​em R. Quando eu estava usando SPSS, acho que a maior parte do meu trabalho de "não análise" estava usando esses dois comandos.

Michelle
fonte
11
Dê uma olhada no pmax ...
Elvis
@ Xi'an, indo lá agora para dar uma espiada (ou uma cutucada!) Ah, eu não tinha clicado em você, eu tinha ido ao seu blog algumas vezes através dos links do R-blogger. :)
Michelle
2
Ao cobrir, ifelsecertifique-se de mostrar a eles como funciona e o que significa o aviso em sua documentação. Funciona logicamente quando você pensa sobre isso, mas eu tenho visto total confusão sobre ifelse"alterar" os tipos de variáveis ​​e causar muito tempo perdido.
Wayne
2
@ Xi'an: A ajuda do R diz: "o operador = é permitido apenas no nível superior (por exemplo, na expressão completa digitada no prompt de comando) ou como uma das subexpressões em uma lista de expressões." Posso pensar em situações que não sejam mencionadas no seu blog, embora até agora apenas coisas do tipo C-ish sejam: a <- 1:5 ; b <- 4 ; a[b = 3] ; b ; a[b <- 3] ; bonde a assinatura dá os mesmos resultados, mas bé diferente (primeira vez que não mudou, segunda vez). A =tarefa nunca foi concebida para ser designada e nunca deveria ter sido alterada para tentar tornar R mais agradável. Não faça isso.
Wayne
11
@ Elvis +1000 internets para você, isso pmaxfunciona muito bem.
Michelle