Какой хороший подход к обучению R в компьютерной лаборатории?

15

Было несколько хороших вопросов и наборов ответов на вводные книги или подходы к обучению, например, здесь и здесь . Но у меня немного другая проблема - лучший способ запустить часовой сеанс (или несколько таких сеансов) в компьютерном классе, который поможет людям начать работать с R, знаком с его базовым подходом и т. Д.

Мой текущий план состоял бы в том, чтобы эффективно проработать вводные главы чего-то вроде SimpleR Verzani и затем ввести знакомый набор данных, но есть ли другой подход, который люди сочли полезным? Например, хорошо ли сразу вводить реальные данные или решать проблемы более абстрактно? Должен ли я исчерпывающе разобраться, как использовать квадратные скобки, или взволновать людей примерами решетчатой ​​графики?

Моя целевая аудитория знакома со статистикой (но не экспертами) и компетентными пользователями SPSS; не знакомы с языками программирования, кроме макросов и сценариев, которые вы получаете в SPSS и подобных вещах.

Любые советы или ссылки на планы уроков будут оценены. Тем не менее, я не хочу дублировать множество хороших списков онлайнового материала, представляющего R - строго ссылки на учебный вопрос лицом к лицу.

Peter Ellis
источник
Наверное, должно быть сообщество вики, верно?
Питер Эллис
1
Звучит как хорошая идея для меня. :)
Мишель
1
Что действительно важно для ответа на этот вопрос, так это то, какой будет ваша настройка. Если у вас есть один «часовой сеанс ... в компьютерной лаборатории», вы можете сделать очень мало, и у вас будет очень мало новообращенных. Если у вас есть «несколько таких», и они уже достаточно хорошо знают статистику и базовое программирование, вы можете заправить насос так, чтобы они могли двигаться вперед самостоятельно и с энтузиазмом относиться к попыткам, но последний требует другого подхода. Для людей с некоторой статистикой и отсутствием знаний по программированию идеально подойдет семестровый курс.
gung - Восстановить Монику
Хм, хорошая точка @ Gung, хорошо, установка довольно специфическая. Я их менеджер и так мог просто сказать им , что делать. У нас есть двухнедельная часовая сессия по навыкам статистики (некоторые из нас представляют по очереди), которая становится намного более практичной, и мы согласились сделать большую часть этого в лаборатории на машинах с реальными данными. Поэтому я должен был указать, что реальным требованием является ознакомление их с R за один или два сеанса, чтобы при выполнении таких вещей, как подбор регрессионных моделей или просмотр диагностических графиков на последующих сеансах, мы не были полностью отвлечены основами.
Питер Эллис
2
@ Gung Большое +1 за ваш тщательный комментарий. Я давно преподаю R и, наконец, пришел к аналогичному выводу: люди, не имеющие легкого понимания программирования или командной строки, вероятно, столкнутся с некоторыми трудностями, связанными с R. Это становится хуже, когда мы должны знакомить студентов с статистика с использованием R за несколько часов ...
chl

Ответы:

7

Я бы поспорил за совершенно другой подход. Я видел учебники R, которые преподавались с двух разных точек зрения: подход на основе строительных блоков, в котором пользователи знакомятся с фундаментальными концепциями R, и подход, основанный на шоке и трепете, в котором пользователям демонстрируются удивительные возможности R, но они остаются с относительно мало понимания того, как сделать что-либо. Последнее определенно резонирует сильнее с учениками, но ни один из них не кажется очень эффективным в деле создания пользователей.

Вместо этого, я бы взял обычную и относительно простую задачу в SPSS и прошел бы через ее преобразование в R, с небольшой притворной наивностью с вашей стороны - например, следуя прекрасному предложению Сианя, искать некоторые желаемые функции, ??а не просто вспоминая правильную функцию из памяти. Ваши новички почти наверняка будут преобразовывать существующие процессы, когда они изучают R, а не писать их с нуля - так почему бы не показать им, как именно вы поступите с этим?

Хороший пример может состоять из простой загрузки данных, выполнения некоторых описаний и отображения некоторых основных графиков. lm()может быть очень, очень простым и дает результаты, которые они поймут и могут сравнить с выводом SPSS, так что это также может быть полезным для рассмотрения.

Для домашней работы попросите их попробовать конвертировать один из своих простых процессов или загрузить и изучить набор данных, с которым они очень знакомы. Дайте им время один на один, чтобы выяснить, где что-то идет не так, а затем расскажите о них на следующем сеансе с помощью дополнительных примеров преобразований. Понятия из вашего списка неизбежно появятся (моя ставка: факторы против векторов персонажей, для против применимы) - и тогда у вас будет реальная мотивация для их покрытия. Если они не подходят ( attach), то они на самом деле пока не нужны - если это означает, что ваши новички пишут немного неидиоматического кода на раннем этапе ( forвместо apply), я не вижу вреда.

Таким образом, ваши ученики могут прогрессировать во многом так же, как и студенты-иностранцы (или, по крайней мере, так, как я): грубый перевод простых выражений вызывает желание более сложных выражений, что вызывает желание более глубокого понимания грамматики , что в итоге приводит к идиоматическому выражению. Не спешите переходить к «грамматике» слишком рано и не слишком переживайте о том, чтобы научить их вещам, о которых они не спрашивают, потому что они, вероятно, просто все равно забудут это. Нежные указатели о идиоматическом выражении великолепны ( forпротив apply), но главное - заставить их генерировать результаты и исследовать их самостоятельно.

Мэтт Паркер
источник
(+1) Спасибо, Мэтт, это звучит как отличный совет. Мне особенно нравятся последние два абзаца.
ЧЛ
Спасибо Мэтту (и всем остальным - всем отлично помогают). Я определенно буду использовать ?? подход, и заставить их воссоздать в лаборатории и в качестве домашних заданий общие задачи, которые они делают с другим программным обеспечением (SPSS и Harmoni, который в основном представляет собой пакет с перекрестными таблицами). Мне все еще нужно что-то достаточно разумное, чтобы заставить их открыть дело и знать, с чего начать (и я соответственно изменил свой план урока 1), но я думаю, что мотивация самообучения вне лаборатории - это определенно верный путь.
Питер Эллис
7

Хорошо, вот мой собственный ответ на то, что, я думаю, заставит людей начать и мотивировать их учиться еще больше (я пытаюсь отучить их от SPSS, который буквально не может сделать то, что нам нужно, например, сложный анализ опроса, по крайней мере, не покупая больше модулей, которые я отказываюсь делать).

В конце первого сеанса вы сможете:

основы

  • Используйте интерфейс для выполнения простых расчетов (используйте R в качестве калькулятора)
  • Запустите, сохраните и загрузите окно скрипта и используйте его эффективно
  • Создание и удаление объектов в вашем рабочем пространстве
  • Посмотрите, какая папка является вашей рабочей папкой
  • Узнайте, как работает папка P: / R / yourid и что делает сохранение рабочей области при выходе
  • Загрузите изображение рабочей области, включая XXX (наши часто используемые данные)
  • Список объектов в памяти
  • Перечислите имена столбцов (переменных) во фрейме данных
  • Распечатать объект на экране
  • Присоединить и отсоединить фрейм данных
  • Знать, что подразумевается под: объектом, функцией, аргументом (функции), рабочей областью, вектором, фреймом данных, матрицей, числовым значением, фактором
  • Знать, как искать справку по функции
  • Использовать ?? найти список соответствующих функций
  • Куда обращаться в Интернете и наших местных книгах и локальной сети для получения дополнительных ресурсов
  • понять достаточно основ R для участия в лабораторных занятиях по конкретным статистическим методам

Манипуляция данными

  • Создайте вектор чисел с помощью оператора:
  • Сделать таблицу подсчетов для одной переменной
  • Сделайте перекрестную таблицу для двух переменных
  • Создайте новый объект (например, одну из таблиц выше) для дальнейшей манипуляции
  • Транспонировать матрицу или таблицу
  • С помощью tapply () создайте вектор средних значений непрерывной переменной
  • Свяжите несколько векторов вместе, используя cbind () или data.frame ()
  • Создайте подмножество матрицы, используя []
  • Создайте простое преобразование, например, логарифм или квадратный корень

Статистика

  • Рассчитать соотношение двух непрерывных переменных

Графика

  • Создать гистограмму непрерывной переменной
  • Создайте графическое окно и разделите его на 2 или 4 части
  • Создайте график линии плотности непрерывной переменной
  • Создайте диаграмму рассеяния из двух непрерывных переменных
  • Добавьте прямую линию к диаграмме рассеяния (вертикальная, горизонтальная или ab)
  • Создать ярлыки для осей и заголовков

В конце трех сессий и выполнения промежуточных упражнений вы также сможете:

основы

  • Импорт данных в формате SPSS или .csv
  • Удалите все объекты в вашем рабочем пространстве, чтобы начать все сначала
  • использовать библиотеку пакетов
  • Сохранить изображение рабочего пространства и понять основные принципы R и памяти
  • Генерация случайных величин
  • Используйте c (), чтобы создать вектор
  • Хорошее чувство, куда идти, чтобы изучить новые методы и методы

Манипуляция данными

  • Используйте aggregate () для реального набора данных, например, числа прибывающих посетителей по месяцам и странам.
  • Операторы ==,! = И% в%; логические векторы; и используя их для подмножества данных
  • ifelse () и использование его для создания новых переменных
  • max, min и аналогичные функции и как они работают с векторами
  • Создать вектор или матрицу для хранения многочисленных результатов
  • Используйте цикл, чтобы повторить аналогичную функцию много раз
  • Используйте apply (), чтобы применить функцию к каждому столбцу или строке матрицы.
  • Создать упорядоченный фактор
  • Используйте cut (), чтобы перекодировать числовую переменную

Статистика

  • Тест хи-квадрат для таблицы сопряженности
  • Надежные версии корреляций
  • Подгоните линейную модель к двум непрерывным переменным, поместив результаты в объект и используя anova (), summary () и plot () для просмотра результатов.
  • достаточно разбираться в моделях и в том, как они работают в R, чтобы быть готовым применить свои навыки к более широкому диапазону типов моделей
  • Используйте boot (), чтобы выполнить начальную загрузку для базовой функции, такой как cor (), mean () или var ()
  • Используйте sample () для набора данных из реальной жизни

Графика

  • Создайте линейный график плотности решетки непрерывной переменной с учетом различных уровней фактора
  • qqnorm
  • построить точечный график с разными цветами и точками персонажа, показывающими разные уровни фактора; добавить точки или линии в существующий график рассеяния
  • добавить легенду
  • dotcharts
  • errbar ()
  • используя цикл для рисования нескольких графиков на странице
Peter Ellis
источник
2
Учитывая вашу настройку, это кажется разумным, но многое может покрыть за час новичков. Я бы постоянно подчеркивал имеющиеся у них ресурсы для создания самодостаточности. В частности, ознакомьтесь с руководством по R, которое поставляется с установкой и использованием файлов справки. Например, чтобы ввести корреляцию, начните с корреляции, покажите, как искать в списке, затем - «кор» и покажите, как читать и понимать помощь; учите кор, историю и т. д. из документации . Независимо от того, насколько они умны, есть ограничение в один час - им нужно научиться получать информацию и устранять неполадки самостоятельно .
gung - Восстановить Монику
1
Я думаю, что я работаю в 10 минутах ходьбы от тебя, так что дай мне крик, если хочешь что-нибудь выпить за кофе. :)
Мишель
Я не думаю, что это в первую очередь что , это как . Речь идет о том, чтобы ученики могли учить вещи частично самостоятельно и иметь под рукой исчерпывающую шпаргалку + некоторые домашние задания.
Ондрей
@Michelle - звучит хорошо, напишите мне на peter.ellis [at] med.govt.nz
Питер Эллис
4
Это удивительно амбициозный список! Я не могу себе представить, чтобы вы освещали все это за три часа - я не думаю, что смог бы даже сказать слова, чтобы покрыть все это за три часа, а тем более ответить на вопросы. Есть несколько концепций, которые я бы полностью пропустил: рабочие пространства (я предпочитаю их не использовать - восстановление всего из скрипта делает код более надежным), присоединение (также проблематично, особенно для новых пользователей, которые не понимают среды), транспонирование (тривиально искать, когда вам это нужно), и cbind (я почти никогда не использую это).
Мэтт Паркер
2

К списку Петра я бы добавил:

  1. подмножество фреймов данных: подмножество наблюдением (например, все ответы выше 3), подмножество переменной.
  2. использовать операторы ifelse (для меня это была огромная кривая обучения, я продолжал пытаться использовать тип оператора if), особенно вложенный ifelse.
  3. суммировать данные в меньший фрейм данных с помощью команды aggregate.
  4. учимся использовать оператор ==.
  5. используя <-, а не =
  6. переименовать переменные
  7. основные ловушки векторизации, такие как max (A, B) в SAS, не делают того, что max (A, B) делает в R, если A - переменная в кадре данных, а B - одно значение. Чтобы сделать эквивалент кода SAS (и, вероятно, кода SPSS), я использую оператор ifelse.
  8. используйте с вместо присоединения. :)

Больше мыслей: они, вероятно, COMPUTEмного используют SPSS, поэтому Rбыло бы неплохо рассказать, как это сделать . Кроме того, как с RECODEпеременными в R. Когда я использовал, SPSSя думаю, что большая часть моей работы «не анализа» была с использованием этих двух команд.

Мишель
источник
1
Посмотрите на pmax ...
Элвис
@ Сиань, сейчас я иду туда, чтобы взглянуть (или тыкаю!) Ах, я не нажал, что это был ты, я заходил в твой блог по ссылкам R-blogger. :)
Мишель
2
При освещении ifelseОБЯЗАТЕЛЬНО покажите им, как это работает и что означает предупреждение в его документации. Когда вы думаете об этом, он работает логически, но я видел полное замешательство по поводу ifelse«изменения» типов переменных и потери большого количества времени.
Уэйн
2
@ Xi'an: Справка R гласит: «оператор = разрешен только на верхнем уровне (например, в полном выражении, набранном в командной строке) или в качестве одного из подвыражений в ограниченном списке выражений». Я могу думать о ситуациях, отличных от упомянутых в вашем блоге, хотя пока только такие вещи C-ish, как: a <- 1:5 ; b <- 4 ; a[b = 3] ; b ; a[b <- 3] ; bгде подписка дает те же результаты, но bразные (первый раз не изменился, второй изменился). Он =никогда не предназначался для назначения и никогда не должен был изменяться, чтобы сделать R более приемлемым. Не делай этого.
Уэйн
1
@ Элвис +1000 интернетов тебе, это pmaxпрекрасно работает.
Мишель