Podstawowe typy danych (wektory typu numeric, character, logical, integer)
Zaawansowane typy danych (ramki danych i listy)
Struktury kontrolne (konstrukcje warunkowe, pętle)
Funkcje lapply, tapply, sapply
Podstawy grafiki w R
Wprowadzenie do tidyverse
Plan zajęć
Podstawy statystyki inferencyjnej z R
Rozkłady teoretyczne i symulacje
Testowanie statystyczne hipotez
Test chi-kwadrat
Test t-Studenta i przedziały ufności
Wielkość efektu i moc testów statystycznych
Wstęp do testów nieparametrycznych
Korelacja i regresja
Regresja liniowa
Analiza wariancji
Plan zajęć
Analiza danych eksperymentalnych z R
Wprowadzenie do bootstrappingu i innych technik resamplingowych jako alternatywy dla testów nieparametrycznych
Podstawy ogólnego modelu liniowego
Zmienne nominalne w ogólnym modelu liniowym
Interakcje w modelu liniowym
Analiza wariancji jako szczególny przypadek modelu liniowego
Interakcje między zmiennymi nominalnymi i analiza wariancji
Analiza wariancji dla powtórzonych pomiarów
Podstawy regresji logistycznej
Tryb pracy na zajęciach
Obecność na zajęciach obowiązkowa
Zajęcia - krótki wstęp teoretyczny (jego długość zależy od Państwa przygotowania) i praca z komputerami.
Prace domowe (około 2-3 godziny tygodniowo, niektórzy potrzebują więcej)
Prace domowe do wyboru (Większe Prace Domowe, przynajmniej 2 punkty do końca zajęć).
Czasami w toku semestru może pojawić się dodatkowe zadanie, które będzie liczyć się jako Większa Praca Domowa
Czasami coś do przeczytania (według potrzeb)
Dwa kolokwia w ciągu semestru
Kolokwium I: podstawy programowania w R
Kolokwium II: statystyczne testowanie hipotez w R
Warunki zaliczenia
Robienie zadań domowych obowiązkowych + 2 punkty z “większych” prac domowych.
Zaliczenie (60%) dwóch kolokwiów w semestrze.
Staramy się nie spóźniać z oddawaniem prac domowych, ale jak ktoś odeśle prace domowe spóźniony to lepiej, niż gdyby miał nigdy nie odesłać.
Każdy uczestnik kursu ma prawo do dwukrotnego tygodniowego spóźnienia bez obniżenia punktacji w semestrze bez żadnych dodatkowych pytań
W wyjątkowych sytuacjach można negocjować warunki zaliczenia.
Forma przesyłania prac
Prace domowe oddajemy na platformie zajęć: źródło Quarto (.qmd) wraz z wyrenderowanym plikiem HTML.
Na platformie znajduje się krótkie wprowadzenie do Quarto
Arkusze mają się renderować, a wyniki mają być we właściwych miejscach. Nienegocjowalne, ale przez pierwsze tygodnie będę Państwa korygował.
Materiały
Materiały znajdują się na platformie.
Będę starał się wrzucać dość dużo materiałów i uzupełniać je na bieżąco.
W razie potrzeb będę aktualizował materiały na stronie.
Korzystanie z narzędzi AI
ChatGPT trywializuje znaczną część zadań domowych, co sprawia, że łatwo jest ,,ominąć’’ proces nauki.
Używanie ChatGPT do zadań domowych jest surowo zabronione, ponieważ:
Utrudnia naukę początkującym, którzy muszą opanować podstawy języka R i statystyki.
Uniemożliwia ocenę rzeczywistego zrozumienia i umiejętności studentów, co jest kluczowe na poziomie uniwersyteckim.
Sprawdzanie zadań domowych wykonanych przez ChatGPT jest dehumanizujące dla wykładowcy.
Konsekwencje naruszenia zasad
Natychmiastowe niezaliczenie przedmiotu za korzystanie z ChatGPT lub podobnych narzędzi AI.
Powiadomienie instytucji akademickich o naruszeniu zasad uczciwości akademickiej.
Weryfikacja użycia LLMów (system Zofii)
Nie istnieje stuprocentowo skuteczna metoda wykrywania użycia dużych modeli językowych. Nie oznacza to, że nie ma pewnych poszlak, które wprawne oko jest w stanie wychwycić.
W przypadku podejrzenia o wykorzystanie LLMów przy pracach domowych osoba studencka zostanie po zajęciach poproszona na rozmowę o napisanym przez siebie kodzie. Jeżeli rozmowa będzie wskazywała na niezrozumienie wysłanego przez siebie zadania, to taka osoba dostaje czerwoną kartkę.
Dwie czerwone kartki stanowią dowód wykorzystania LLMów do wykonania prac domowych.
Uzasadnienie polityki
Duże modele językowe (LLM) jak ChatGPT mogą doskonale radzić sobie z takimi zadaniami jak pisanie widgetów w JavaScript lub centrowanie DIV-ów, ale często zawodzą przy bardziej złożonych i niestandardowych zadaniach.
Rozwój krytycznych umiejętności jest zahamowany przez poleganie na AI jako co-pilocie, w tym:
Czytanie dokumentacji.
Debugowanie.
Interpretacja wyników złożonych analiz.
Korzystanie z LLM uniemożliwia nabycie tych kluczowych umiejętności, zwłaszcza początkującym, którzy dopiero uczą się programowania.
Narzędzia AI — nasza umowa
Unikaj korzystania z ChatGPT jako co-pilota w swojej drodze edukacyjnej.
Zdaję sobie sprawę, że LLM mogą być użyteczne w wielu aspektach życia, w tym programowania, pod warunkiem, że ktoś rozumie podstawy i ma praktyczne umiejętności.
Python > R? R > Python?
Na Githubie (www.github.com/PanBartosz/semexp) i Youtubie (Bartosz Maćkiewicz) można znaleźć coś w rodzaju nieoficjalnego kursu ze Statystyki I z Pythonem w formie krótkich filmików i notebooków, które będą przekładały przykłady, które robiliśmy w R na Pythona z użyciem takich pakietów jak numpy, pandas, scipy, statsmodels.
Dlaczego R?
R jest stworzonym przez Rossa Ihakę i Roberta Gentlemana językiem programowania oraz środowiskiem programistycznym służącym do obliczeń statystycznych. Powstał jako implementacja stworzonego w laboratoriach Bella (UNIX, C, itd.) języka programowania S stworzonego przez Johna Chambersa, Ricka Beckera i Allana Wilksa.
Obecnie rozwijany jest przez R Development Core Team.
Zalety
jest darmowy w przeciwieństwie do wielu innych pakietów statystycznych takich jak SPSS, SAS czy Stata
jest wolnym oprogramowaniem (kod źródłowy na licencji GNU GPL, sam projekt jest projektem GNU)
jest ciągle rozwijany
ciągły rozwój biblioteki standardowej i olbrzymia liczba pakietów do każdego rodzaju analizy (ale też uczenie maszynowe itp.)
jest przetestowany
praktycznie nieograniczone możliwości tworzenia grafiki
coraz więcej możliwości wykraczania poza same obliczenia (Web, interfejsy graficzne, interaktywne aplikacje, reproducible research)
jest pełnoprawnym językiem programowania
Wady
jest językiem programowania dla statystyków
niezbyt rozbudowane możliwości tworzenia złożonych aplikacji graficznych/webowych (ale są!)
niektóre decyzje dotyczące języka kontrowersyjne
jest językiem programowania - brak graficznego interfejsu (ale: istnieją nakładki takie jak JASP)
jest językiem interpretowanym a nie kompilowanym, więc teoretycznie aplikacja w C/C++ może być szybsza
R vs Python
oba są językami interpretowanymi*, mogą być więc wolne
większość operacji numerycznych w R jest zaimplementowana w C/Fortranie, więc będzie szybszy niż czysty Python
oba języki mają możliwość pisania rozszerzeń w C, jeżeli wydajność to w Pythonie można użyć numpy lub nawet numba
oba są typowane dynamicznie
podstawowe typy danych w R są wektorowe i operacje na nich są wektoryzowane
w Pythonie biblioteki mają odseparowaną przestrzeń nazw, w R biblioteki ładują często swoje funkcje do globalnego namespace
funkcje z zewnętrznych bibliotek mają niesamowite kombinacje wielkich liter i nazw, by odróżnić się od biblioteki standardowej i innych bibliotek
R vs Python
W R możemy wykonać mnożenie dwóch wektorów przez siebie. Jeśli są innej długości, R będzie powtarzał krótszy (nie zawsze to jest super)
x =c(1,2,3,4,5,6)y =c(2,2,3,3)z = x * yprint(z)
[1] 2 4 9 12 10 12
W Pythonie nie da się przemnożyć dwóch list przez siebie.
x = [1,2,3,4,5,6]y = [2,2,3,3]z = x * y print(z)
R vs Python
Można jednak użyć pakietu numpy i wykonywać operacje na wektorach.
import numpy as npx = np.array([1,2,3,4,5,6])y = np.array([2,2,3,3])y = np.concatenate([y,y])[:6] z = y * x print(z)
[ 2 4 9 12 10 12]
R vs Python
LSD.test oraz bar.group są funkcjami, które do globalnej przestrzeni nazw dodał pakiet agricolae
W zasadzie są wektorami ciągów znaków, przechowują jednak dodatkowe informacje.
table(pieciu_mezczyzn)## pieciu_mezczyzn## M ## 5zadnej_kobiety =factor(pieciu_mezczyzn, levels =c('K', 'M'),ordered =TRUE )zadnej_kobiety## [1] M M M M M## Levels: K < Mtable(zadnej_kobiety)## zadnej_kobiety## K M ## 0 5