Jakie jest dobre podejście do nauczania języka R w pracowni komputerowej?

15

Było kilka dobrych pytań i zestawów odpowiedzi na temat książek wprowadzających lub podejść do nauki R np. Tu i tutaj . Ale mam nieco inny problem - najlepszy sposób na przeprowadzenie godzinnej sesji (lub kilku takich sesji) w pracowni komputerowej, w której ludzie zaczną pracę w R, zapoznając się z jej podstawowym podejściem itp.

Mój obecny plan polegałby na skutecznym przejrzeniu rozdziału wprowadzającego czegoś takiego jak SimpleR Verzani, a następnie wprowadzeniu znanego zestawu danych, ale czy istnieje inne podejście, które ludzie uznają za przydatne? Na przykład, czy dobrze jest od razu wprowadzić prawdziwe dane, czy rozwiązać problemy w bardziej abstrakcyjny sposób? Czy powinienem wyczerpująco przejść przez sposób korzystania z nawiasów kwadratowych, czy też podekscytować ludzi przykładami grafiki kratowej?

Moi docelowi odbiorcy znają statystyki (choć nie są ekspertami) i kompetentni użytkownicy SPSS; nie zna języków programowania poza rodzajem makr i skryptów, które można uzyskać w SPSS i podobnych rzeczach.

Wszelkie wskazówki lub odniesienia do planów lekcji będą mile widziane. Nie chcę jednak powielać wielu dobrych list materiałów on-line wprowadzających R - ścisłe odniesienia do bezpośredniego pytania instruktażowego.

Peter Ellis
źródło
Prawdopodobnie powinna być wiki społeczności, prawda?
Peter Ellis,
1
Brzmi dla mnie jak dobry pomysł. :)
Michelle
1
To, jak naprawdę należy odpowiedzieć na to pytanie, to konfiguracja. Jeśli masz jeden „godzina długą sesję ... w laboratorium komputerowym” nie będzie bardzo niewiele można zrobić, a będziesz miał bardzo mało nawróconych. Jeśli masz „kilka takich”, a oni już dość dobrze znają statystyki i podstawowe programowanie, możesz zalać pompę tak, aby mogli sami posuwać się naprzód i entuzjastycznie próbować, ale to drugie wymaga innego podejścia. Dla osób z pewnymi statystykami i nie posiadających wiedzy programistycznej idealny byłby semestralny kurs.
Gung - Przywróć Monikę
Hmm, dobry punkt @ gung, ok, konfiguracja jest dość specyficzna. Jestem ich menedżer i tak mógł po prostu powiedzieć im, co mają robić. Mamy dwutygodniową sesję poświęconą umiejętnościom statystycznym (kilku z nas na zmianę prezentuje się), która staje się coraz bardziej praktyczna i zgodziliśmy się robić wiele z tego w laboratorium na maszynach z prawdziwymi danymi. Powinienem był więc sprecyzować, że prawdziwym wymogiem jest zaznajomienie ich z R w jednej lub dwóch sesjach, że kiedy robimy takie rzeczy, jak dopasowanie modeli regresji lub patrzenie na wykresy diagnostyczne w kolejnych sesjach, nie będziemy całkowicie rozpraszani przez podstawy.
Peter Ellis
2
@gung Duża +1 za dokładny komentarz. Uczę języka R od dłuższego czasu i w końcu doszedłem do podobnego wniosku: ludzie, którzy nie mają lekkiego zrozumienia programowania lub wiersza poleceń, prawdopodobnie napotkają pewne trudności w radzeniu sobie z R. Gorzej, gdy musimy zaznajomić studentów z statystyki za pomocą R w kilka godzin ...
chl

Odpowiedzi:

7

Argumentowałbym za zupełnie innym podejściem. Widziałem samouczki R, które były nauczane z dwóch różnych perspektyw: podejście blokowe, w którym użytkownicy zapoznają się z podstawowymi koncepcjami R. stosunkowo mało rozumie, jak coś zrobić. Ten ostatni zdecydowanie silniej rezonuje z uczniami, ale żaden z nich nie wydaje się zbyt skuteczny w produkcji użytkowników.

Zamiast tego wziąłbym wspólne i stosunkowo proste zadanie w SPSS i przechodzę przez konwersję do R, z odrobiną udawanej naiwności z twojej strony - np. Postępując zgodnie ze świetną sugestią Xi'ana, aby wyszukać niektóre pożądane funkcje ??zamiast po prostu przywołanie właściwej funkcji z pamięci. Twoi nowicjusze prawie na pewno będą konwertować istniejące procesy, gdy się nauczą R, a nie piszą je od zera - więc dlaczego nie pokazać im dokładnie, jak sobie z tym poradzisz?

Dobrym przykładem może być po prostu ładowanie danych, wykonanie kilku opisów i wyskakiwanie kilku podstawowych wątków. lm()mogą być bardzo, bardzo proste i dają zrozumiałe wyniki, które można porównać do danych wyjściowych SPSS, więc może to być również dobre

Aby odrabiać zadania domowe, poproś ich, aby spróbowali przekonwertować jeden ze swoich prostych procesów lub załadować i eksplorować zestaw danych, z którym są bardzo dobrze zaznajomieni. Daj im trochę czasu, aby dowiedzieć się, co się dzieje źle, a następnie przykryj je w następnej sesji innymi przykładowymi konwersjami. Nieuchronnie pojawią się pojęcia z twojej listy (mój zakład: czynniki vs. wektory postaci, za vs. zastosuj) - a wtedy będziesz miał rzeczywistą motywację do ich pokrycia. Jeśli nie pojawią się ( attach), nie są jeszcze tak naprawdę potrzebne - jeśli to oznacza, że ​​Twoi nowicjusze piszą wcześnie ( forzamiast apply) trochę nieidiomatycznego kodu , nie widzę szkody.

W ten sposób uczniowie mogą robić postępy w taki sam sposób, jak robią to uczniowie obcojęzyczni (a przynajmniej tak, jak ja to zrobiłem): prymitywne tłumaczenie prostych wyrażeń pobudza pragnienie bardziej złożonych wyrażeń, co powoduje pragnienie głębszego zrozumienia gramatyki , co ostatecznie prowadzi do idiomatycznej ekspresji. Nie przeskakuj zbyt wcześnie na gramatykę i nie przejmuj się zbytnio nauczaniem rzeczy, o które nie pytają, ponieważ prawdopodobnie i tak o tym zapomną. Delikatne wskazówki na temat ekspresji idiomatycznej są świetne ( forvs apply), ale najważniejsze jest, aby generowały wyniki i eksplorowały samodzielnie.

Matt Parker
źródło
(+1) Dzięki, Matt, to brzmi jak świetne porady. Szczególnie podoba mi się dwa ostatnie akapity.
chl
Dzięki Matt (i wszystkim innym - cała doskonała pomoc). Na pewno będę używać ?? podejście i nakłonienie ich do odtworzenia w laboratorium, a jako zadanie domowe wspólne zadania wykonują przy użyciu innego oprogramowania (SPSS i Harmoni, który jest w zasadzie pakietem składającym się z kilku kart). Nadal potrzebuję czegoś rozsądnego, aby nakłonić ich do otwarcia i zrozumienia, od czego zacząć (i odpowiednio zmodyfikowałem swój plan lekcji 1), ale myślę, że motywowanie do samodzielnego uczenia się poza laboratorium jest zdecydowanie najlepszym rozwiązaniem.
Peter Ellis
7

OK, do tej pory moja własna odpowiedź na to, co według mnie zachęciłoby ludzi do rozpoczęcia nauki i zmotywowało ich do dalszej nauki (staram się oddzielić ich od SPSS, co dosłownie nie jest w stanie zrobić części tego, czego potrzebujemy, na przykład przynajmniej złożonej analizy ankiet bez kupowania kolejnych modułów, których odmawiam).

Pod koniec pierwszej sesji powinieneś być w stanie:

Podstawy

  • Użyj interfejsu, aby wykonać proste obliczenia (użyj R jako kalkulatora)
  • Uruchom, zapisz i załaduj okno skryptu i używaj go wydajnie
  • Twórz i usuwaj obiekty w swoim obszarze roboczym
  • Sprawdź, który folder jest folderem roboczym
  • Dowiedz się, jak działa folder P: / R / yourid i jak działa zapisywanie obszaru roboczego przy wyjściu
  • Załaduj obraz obszaru roboczego, w tym XXX (nasze często używane dane)
  • Wyświetl obiekty w pamięci
  • Wymień nazwy kolumn (zmiennych) w ramce danych
  • Wydrukuj obiekt na ekranie
  • Dołącz i odłącz ramkę danych
  • Wiedzieć, co należy rozumieć przez: obiekt, funkcję, argument (do funkcji), przestrzeń roboczą, wektor, ramkę danych, macierz, liczbę, współczynnik
  • Dowiedz się, jak szukać pomocy dotyczącej funkcji
  • Posługiwać się ?? znaleźć listę odpowiednich funkcji
  • Gdzie szukać w Internecie i naszych lokalnych książkach i sieci LAN, aby uzyskać więcej zasobów
  • rozumieć wystarczająco dużo podstaw języka R, aby uczestniczyć w sesjach laboratoryjnych dotyczących określonych technik statystycznych

Manipulowanie danymi

  • Utwórz wektor liczb za pomocą operatora:
  • Zrób tabelę zliczeń dla jednej zmiennej
  • Wykonaj tabelę przestawną zliczeń dla dwóch zmiennych
  • Utwórz nowy obiekt (np. Jedną z powyższych tabel) do dalszej manipulacji
  • Transponuj macierz lub tabelę
  • Utwórz wektor średnich zmiennej ciągłej przez czynnik za pomocą tapply ()
  • Połącz kilka wektorów za pomocą cbind () lub data.frame ()
  • Utwórz podzbiór macierzy za pomocą []
  • Utwórz prostą transformację, np. Logarytm lub pierwiastek kwadratowy

Statystyka

  • Oblicz korelację dwóch zmiennych ciągłych

Grafika

  • Utwórz histogram zmiennej ciągłej
  • Utwórz okno graficzne i podziel je na 2 lub 4 części
  • Utwórz wykres linii gęstości zmiennej ciągłej
  • Utwórz wykres rozproszenia dwóch zmiennych ciągłych
  • Dodaj linię prostą do wykresu rozrzutu (pionowego, poziomego lub ab)
  • Utwórz etykiety dla osi i tytułów

Pod koniec trzech sesji i wykonywania szeregu ćwiczeń między nimi powinieneś być również w stanie:

Podstawy

  • Importuj dane w formacie SPSS lub .csv
  • Usuń wszystkie obiekty z obszaru roboczego, aby zacząć od nowa
  • użyj biblioteki pakietów
  • Zapisz obraz obszaru roboczego i zrozum podstawowe zasady R i pamięć
  • Generuj zmienne losowe
  • Użyj c (), aby utworzyć wektor
  • Dowiedz się, dokąd pójść, aby nauczyć się nowych metod i technik

Manipulowanie danymi

  • Użyj funkcji agreguj () w prawdziwym zbiorze danych, np. Liczby przyjazdów odwiedzających według miesiąca i kraju
  • Operatory ==,! = I% w% operatorów; wektory logiczne; i używając ich do podzbioru danych
  • ifelse () i używanie go do tworzenia nowych zmiennych
  • funkcje max, min i podobne oraz ich działanie z wektorami
  • Utwórz wektor lub macierz do przechowywania wielu wyników
  • Użyj pętli, aby powtórzyć podobną funkcję wiele razy
  • Użyj funkcji Apply (), aby zastosować funkcję do każdej kolumny lub wiersza macierzy
  • Utwórz uporządkowany czynnik
  • Użyj cut (), aby przekodować zmienną numeryczną

Statystyka

  • Test chi kwadrat dla tabeli awaryjnej
  • Solidne wersje korelacji
  • Dopasuj model liniowy do dwóch zmiennych ciągłych, umieszczając wyniki w obiekcie i używając anova (), Summary () i plot (), aby spojrzeć na wyniki
  • rozumiesz wystarczająco dużo na temat modeli i ich działania w języku R, aby być gotowym do zastosowania swoich umiejętności w szerszej gamie typów modeli
  • Użyj boot (), aby wykonać bootstrap na podstawowej funkcji, takiej jak cor (), mean () lub var ()
  • Użyj sample () na prawdziwym zestawie danych

Grafika

  • Utwórz wykres liniowej gęstości siatki zmiennej ciągłej przy różnych poziomach współczynnika
  • qqnorm
  • zbuduj wykres rozproszenia z różnymi kolorami i punktami znakowymi pokazującymi różne poziomy czynnika; dodaj punkty lub linie do istniejącego wykresu punktowego
  • dodaj legendę
  • wykresy punktowe
  • errbar ()
  • za pomocą pętli, aby narysować wiele wykresów na stronie
Peter Ellis
źródło
2
Biorąc pod uwagę twoją konfigurację, wydaje się to rozsądne, ale w ciągu godziny dla początkujących jest to dużo . Nieustannie podkreślałem dostępne im środki na budowanie samowystarczalności. W szczególności zapoznaj się z instrukcją R dołączoną do instalacji i korzystania z plików pomocy. Na przykład, aby wprowadzić korelację, zacznij od korelacji, pokaż, jak przeszukiwać listę, a następnie korel i pokaż, jak czytać i rozumieć pomoc; ucz cor, hist itp. z dokumentacji . Bez względu na to, jak inteligentne są, nie ma ograniczeń z tylko jedną godzinę - muszą nauczyć się uzyskać informacje & Rozwiązywanie problemów przez nich samych .
Gung - Przywróć Monikę
1
Myślę, że pracuję około 10 minut na piechotę od ciebie, więc krzyknij, jeśli chcesz przejść coś nad kawą. :)
Michelle
Nie sądzę, że to przede wszystkim to, co , to jest to w jaki sposób . Chodzi o skłonienie uczniów do samodzielnego uczenia się rzeczy i posiadania obszernego ściągawki + niektórych zadań domowych.
Ondrej
@Michelle - brzmi dobrze, napisz do mnie na peter.ellis [at] med.govt.nz
Peter Ellis
4
To niezwykle ambitna lista! Nie wyobrażam sobie, żebyś to wszystko opisał w ciągu trzech godzin - nie sądzę, żebym był w stanie wypowiedzieć te słowa w ciągu trzech godzin, a tym bardziej odpowiedzieć na pytania. Jest kilka pojęć, które całkowicie pominąłem: obszary robocze (wolę ich nie używać - regeneracja wszystkiego ze skryptu sprawia, że ​​kod jest bardziej niezawodny), dołączanie (również problematyczne, szczególnie dla nowych użytkowników, którzy nie rozumieją środowisk), transponowanie (banalne aby spojrzeć w górę, kiedy jej potrzebujesz) i cbind (prawie nigdy tego nie używam).
Matt Parker
2

Do listy Piotra dodałbym:

  1. podzbiór ramek danych: podzbiór według obserwacji (np. wszystkie odpowiedzi powyżej 3), podzbiór według zmiennej.
  2. używaj instrukcji ifelse (była to dla mnie ogromna krzywa uczenia się, próbowałem używać rodzaju instrukcji if), szczególnie zagnieżdżonego ifelse.
  3. podsumuj dane do mniejszej ramki danych za pomocą polecenia agregacji.
  4. nauka obsługi operatora ==.
  5. używając <- zamiast =
  6. zmień nazwy zmiennych
  7. podstawowe pułapki wektoryzacyjne, takie jak max (A, B) w SAS, nie robią tego, co robi max (A, B) w R, jeśli A jest zmienną w ramce danych, a B jest pojedynczą wartością. Aby zrobić ekwiwalent kodu SAS (i ​​prawdopodobnie kodu SPSS), używam instrukcji ifelse.
  8. używaj z zamiast dołączać. :)

Więcej przemyśleń: Prawdopodobnie COMPUTEdużo się w to wykorzystują SPSS, więc Rdobrze byłoby opisać, jak to zrobić . Także, jak do RECODEzmiennych w R. Kiedy używałem, SPSSmyślę, że większość mojej pracy „bez analizy” polegało na użyciu tych dwóch poleceń.

Michelle
źródło
1
Spójrz na pmax ...
Elvis
@ Xi'an, jeżdżę tam, żeby zerknąć (lub poke!) Ach, nie kliknąłem, że to ty, poszedłem na twój blog kilka razy za pośrednictwem linków R-bloggera. :)
Michelle
2
Podczas ifelsepisania upewnij się, aby pokazać im, jak to działa i co oznacza ostrzeżenie w jego dokumentacji. Działa to logicznie, gdy się nad tym zastanowić, ale widziałem całkowite zamieszanie związane z ifelse„zmienianiem” typów zmiennych i powodowaniem dużej ilości straconego czasu.
Wayne
2
@ Xi'an: Pomoc R mówi: „operator = jest dozwolony tylko na najwyższym poziomie (np. W pełnym wyrażeniu wpisanym w wierszu polecenia) lub jako jedno z podwyrażeń na spiętej liście wyrażeń”. Mogę wymyślić sytuacje inne niż wymienione na twoim blogu, choć do tej pory tylko rzeczy w stylu C, takie jak: a <- 1:5 ; b <- 4 ; a[b = 3] ; b ; a[b <- 3] ; bgdzie indeksowanie daje te same wyniki, ale bjest inne (za pierwszym razem niezmienione , za drugim razem zmienione). To =nigdy nie miało być zadaniem i nigdy nie powinno być zmieniane, aby uczynić R. bardziej smacznym. Nie rób tego
Wayne
1
@Elvis +1000 internetów dla Ciebie, to pmaxdziała świetnie.
Michelle,