Який хороший підхід до навчання R в комп'ютерній лабораторії?


15

Було кілька хороших запитань і наборів відповідей щодо вступних книг або підходів до вивчення R, наприклад, тут і тут . Але у мене є дещо інша проблема - найкращий спосіб провести годину сеансу (або декілька таких сеансів) у комп'ютерній лабораторії, яка допоможе людям розпочати роботу в R, ознайомитись з її базовим підходом тощо.

Мій поточний план полягав би в тому, щоб ефективно розробити вступний розділ чимось на зразок SimpleR Verzani, а потім запровадити знайомий набір даних, але чи є інший підхід, який люди вважають корисним? Наприклад, чи добре вводити реальні дані відразу або вирішувати проблеми більш абстрактно? Чи повинен я вичерпно пройти, як використовувати квадратні дужки, або хвилювати людей на прикладах гратчастої графіки?

Моя цільова аудиторія знайома зі статистикою (хоча не експертами) та компетентними користувачами SPSS; не знайомий з мовами програмування за межами подібних макросів та сценаріїв, які ви отримаєте в SPSS та подібних речах.

Будь-які поради або посилання на плани уроків були б вдячні. Однак я не хочу дублювати багато хороших списків он-лайн матеріалів, що представляють R - суворо посилання на повчальне запитання віч-на-віч.


Напевно, має бути вікі спільноти, правда?
Пітер Елліс

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) Дякую, Метт, це звучить як чудові поради. Особливо мені подобаються останні два абзаци.
chl

Дякую Метту (і всім іншим - всі чудові допомоги). Я обов'язково буду використовувати ?? підхід, і змусити їх відтворити в лабораторії і як домашні завдання загальні завдання, які вони виконують з іншим програмним забезпеченням (SPSS та Harmoni, що в основному є пакетом з перехресними вкладками). Мені все-таки потрібно щось розумно настановити лише для того, щоб вони відкривали річ і знали, з чого почати (і я відповідно змінив свій план 1 уроку), але я думаю, що мотивація самонавчання поза лабораторією - це безумовно шлях.
Пітер Елліс

7

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

В кінці першої сесії ви маєте можливість:

Основи

  • Використовуйте інтерфейс для прямого обчислення (використовуйте R як калькулятор)
  • Запустіть, збережіть та завантажте вікно сценарію та використовуйте його ефективно
  • Створіть та видаліть об’єкти у робочій області
  • Подивіться, яка папка є вашою робочою папкою
  • Зрозумійте, як працює папка P: / R / yourid та що робить збереження робочої області при виході
  • Завантажте зображення робочої області, включаючи XXX (наші часто використовувані дані)
  • Перерахуйте об'єкти в пам'яті
  • Перерахуйте назви стовпців (змінних) у кадрі даних
  • Роздрукуйте об’єкт на екрані
  • Приєднайте і від'єднайте кадр даних
  • Знайте, що означає: об'єкт, функція, аргумент (до функції), робоча область, вектор, кадр даних, матриця, числовий, коефіцієнт
  • Знайте, як шукати допомогу щодо функції
  • Використовувати ?? щоб знайти список відповідних функцій
  • Куди піти в Інтернеті та наших місцевих книгах та локальній мережі для отримання додаткових ресурсів
  • достатньо зрозуміти основи R для участі в лабораторних сесіях з конкретних статистичних методик

Маніпулювання даними

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

Статистика

  • Обчисліть кореляцію двох безперервних змінних

Графіка

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

В кінці трьох сеансів та виконання вправ між ними ви також маєте можливість:

Основи

  • Імпортуйте дані у форматі SPSS або .csv
  • Видаліть усі об’єкти в робочій області, щоб почати відображатися
  • використовувати бібліотеку пакетів
  • Збережіть зображення робочої області та зрозумійте основні принципи R та пам'ять
  • Утворити випадкові змінні
  • Використовуйте c () для створення вектора
  • По-доброму відчуйте, куди звертатися, щоб вивчити нові методи та методи

Маніпулювання даними

  • Використовуйте агрегат () на реальному наборі даних, наприклад, номери відвідувачів за місяцями та країною
  • ==,! = І% у% операторів; логічні вектори; і використовуючи їх для підмножини даних
  • ifelse () і використовуючи його для створення нових змінних
  • max, min та подібні функції та як вони працюють з векторами
  • Створіть вектор або матрицю для збереження численних результатів
  • Використовуйте цикл, щоб повторити подібну функцію багато разів
  • Використовуйте Apply (), щоб застосувати функцію до кожного стовпця або рядка матриці
  • Створіть упорядкований фактор
  • Використовуйте cut () для перекодування числової змінної

Статистика

  • Ква квадратний тест для таблиці на випадок надзвичайних ситуацій
  • Надійна версія кореляцій
  • Встановіть лінійну модель до двох безперервних змінних, розміщуючи результати в об’єкті та використовуючи anova (), підсумок () та графік () для перегляду результатів
  • достатньо зрозуміти моделі та те, як вони працюють в R, щоб бути готовим застосувати свої вміння до ширшого кола моделей
  • Використовуйте boot () для виконання завантажувальної програми на базовій функції, як cor (), mean () або var ()
  • Використовуйте зразок () у наборі даних про реальне життя

Графіка

  • Створіть графік лінії щільності решітки суцільної змінної з урахуванням різних рівнів коефіцієнта
  • qqnorm
  • побудувати графік розкидання з різними кольоровими та символьними точками, що показують різні рівні фактора; додайте точки або лінії до наявної ділянки розкидання
  • додати легенду
  • точкових діаграм
  • errbar ()
  • використовуючи цикл для малювання декількох діаграм на сторінці

2
Зважаючи на вашу установку, це здається розумним, але це багато чого, щоб покрити за годину новачків. Я б постійно наголошував на доступних їм ресурсах для побудови самодостатності. Зокрема, перегляньте посібник R, який постачається разом із встановленням та використанням довідкових файлів. Наприклад, щоб ввести кореляцію, почніть з кореляції, покажіть, як шукати список, потім - кордону та покажіть, як читати та розуміти допомогу; викладайте cor, hist тощо з документації . Наскільки б вони не були розумними, існує обмеження лише на одну годину - їм потрібно навчитися отримувати інформацію та вирішувати проблеми самостійно .
gung - Відновіть Моніку

1
Я думаю, що я працюю близько 10 хвилин ходьби від вас, тому дайте мені крик, якщо ви хочете пережити щось над кавою. :)
Мішель

Я не думаю, що це насамперед те , що, як . Йдеться про те, щоб школярі засвоїли речі частково самостійно і мати під рукою вичерпний чіт-лист + деякі домашні завдання.
Ондрей

@Michelle - добре звучить, напишіть мені на адресу peter.ellis [at] med.govt.nz
Пітер Елліс

4
Це дивовижно амбітний список! Я не уявляю, як ти все це висвітлюєш за три години - я не думаю, що я навіть не зміг би сказати слова, щоб висвітлити все це за три години, і тим більше відповісти на питання. Є кілька концепцій, які я повністю пропускаю: робочі простори (я вважаю за краще не використовувати їх - регенерування всього сценарію робить код більш надійним), додавання (також проблематично, особливо для нових користувачів, які не розуміють середовище), перенесення (тривіальне шукати, коли вам це потрібно), і cbind (я майже ніколи не використовую це).
Метт Паркер

2

До списку Петра я додам:

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

Більше думок: Вони, напевно, COMPUTEбагато використовують SPSS, тому добре висвітлити, як це зробити R. Крім того, як RECODEзмінювати змінні в Р. Коли я використовував, SPSSя думаю, що більшість моїх робіт "без аналізу" використовували ці дві команди.


1
Погляньте на pmax ...
Елвіс,

@ Xi'an, ідучи туди, щоб заглянути (або ткнути!) Ах, я не натискав, що це ти, я пару разів зайшов у твій блог за посиланнями 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
@Elvis +1000 інтернетів для вас, що pmaxчудово працює.
Мішель
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.