1 Wprowadzenie do programowania i środowiska RBiomatematyka - wykład 6 Dr Wioleta Drobik-Czwarno
2 Dlaczego biolodzy powinni nauczyć się podstaw programowania?Pomaga lepiej zrozumieć działanie programów komputerowych z których korzystamy w codziennej pracy Każdy program jest pisany przez ludzi i może zawierać błędy Jest całkiem prawdopodobne, że kiedyś będziecie pracowali z programistą/bioinformatykiem, więc dobrze znać język jakim się posługują Co jeżeli nikt jeszcze nie stworzył programu komputerowego do waszej nowej, genialnej metody której chcecie/musicie użyć w badaniach?
3 Model Lotka-Volterra w Rlibrary(deSolve) LotVmod <- function (Time, State, Pars) { with(as.list(c(State, Pars)), { dx = x*(alpha - beta*y) dy = -y*(gamma - delta*x) return(list(c(dx, dy))) }) } Pars <- c(alpha = 2, beta = .5, gamma = .2, delta = .6) State <- c(x = 10, y = 10) Time <- seq(0, 100, by = 1) out <- as.data.frame(ode(func = LotVmod, y = State, parms = Pars, times = Time)) matplot(out[,-1], type = "l", xlab = "time", ylab = "population") legend("topright", c("Cute bunnies", "Rabid foxes"), lty = c(1,2), col = c(1,2), box.lwd = 0) Źródło: https://www.r-bloggers.com/
4 Czym jest programowanie?Programowanie nie jest zajęciem dla wybrańców posiadających ogromną i niemal tajemną wiedzę
5 Języki programowania Język programowania to język stworzony do opisu kolejnych kroków, które mają być podjęte przez komputer. ~ instrukcja dawana komputerowi przez człowieka. Język używany przez procesor to kod maszynowy Kod pisany w języku programowania jest przetwarzany na kod maszynowy tak, by mógł zostać przetworzony przez procesor
6 Klasyfikacja Interpretowane KompilowaneNa bieżąco tłumaczone na język maszynowy komputera przez program zwany interpreterem Kompilowane Kod źródłowy jest tłumaczony na kod maszynowy (wykonywalny program) przez program zwany kompilatorem Jedna instrukcja w kodzie źródłowym to kilka (języki niskiego poziomu), kilkaset instrukcji (języki wysokiego poziomu) w kodzie maszynowym
7 Klasyfikacja Poziom Języki niskiego poziomu - języki maszynowe (zapisane są w postaci liczb binarnych) oraz asemblery (języki symboliczne) języki wysokiego poziomu –w tych językach jedna instrukcja jest tłumaczona na kilka, kilkadziesiąt instrukcji procesora
8 Algorytm Czym jest algorytm?Algorytm to jednoznaczny przepis wykonania pewnej czynności w skończonym czasie np. zmiana pewnych danych wejściowych do pewnych danych wynikowych
9 Od pojęć do kodu… Typowe formy zapisu algorytmu:Opis słowny Schemat blokowy Pseudokod Lista kroków do wykonania Kod źródłowy programu Program to algorytm zapisany w postaci (zależnie od języka programowania) umożliwiającej jego automatyczną realizację za pomocą komputera
10 Od problemu do programuSformułowanie problemu (definicja zadania) Analiza problemu Wybór metody (metod) rozwiązania Opracowanie algorytmu Kodowanie (implementacja) programu Testowanie programu Sporządzenie dokumentacji
11 Główne składowe każdego programuZmienne Funkcje Sterowanie przepływem wykonywanie programu instrukcje warunkowe pętle Schemat blokowy algorytmu
12 Instrukcje warunkowe Najczęściej wykorzystywane elementy w języku programowania Słownie: Jeżeli spełniony został warunek wykonaj operacje X, jeżeli nie, wykonaj operacje Y. np. robienie sałatki warzywnej dla Jasia Zrobimy sos na bazie…. Czy Jaś ma nietolerancje laktozy? TAK NIE
13 Instrukcje warunkowe w RPrzykład: Skrypt (widok w edytorze tekstu) Widok w konsoli wynik
14 Pętle Rodzaj instrukcji pozwalających na wielokrotne powtórzenie wykonania zaprogramowanych operacji Np. doprawiaj sałatkę dopóki nie będzie dobra Przykłady w R:
15 Paradygmaty programowaniaParadygmat to: W programowaniu: Inaczej: ogół oczekiwań programisty wobec języka programowania i komputera, na którym będzie działał program Przyjęty sposób widzenia rzeczywistości w danej dziedzinie Zbiór mechanizmów, jakich programista używa, pisząc program, i o to, jak ów program jest następnie wykonywany przez komputer
16 Biblioteki To zbiór klas, funkcji możliwych do wykorzystania przez programistę / użytkownika W R nazywane są pakietami Biblioteka standardowa: Podstawowy zestaw funkcji pozwalający zrealizować najważniejsze operacje
17 Jak nauczyć się podstaw programowania?Kursy online Książki PRAKTYKA !!! Rozwiązywanie problemów biologicznych przez programowanie
18 Środowisko R
19 Narzędzia Najpopularniejsze środowiska do obliczeń numerycznych MATLABOCTAVE R obliczenie inżynierskie i naukowe symulacje obliczenia statystyczne i zaawansowana grafika
20 Narzędzia Najpopularniejsze programy do statystyki i analizy danychSAS Statistica SPSS S-PLUS R
21 Czym jest R? GNU R to język programowania i środowisko do m.in..:obliczeń statystycznych wizualizacji danych symulacji Cieszy się rosnącą popularnością i uznaniem zwłaszcza w Europie Zachodniej i USA, gdzie od lat jest standardem w dziedzinie analiz statystycznych
22 Trochę HistoRii Pierwsza wersja R została napisana przez Roberta Gentlemana i Ross Ihake (znanych jako R&R) pracujących na Wydziale Statystyki Uniwersytetu w Auckland Pakiet początkowo służył jako pomoc dydaktyczna do uczenia statystyki na tym uniwersytecie Od roku 1997 rozwojem R kieruje: zespół ponad dwudziestu osób nazywanych core team fundacja „The R Foundation for Statistical Computing” z setkami aktywnych uczestników Wkład tysięcy osób z całego świata publikujących własne biblioteki z bardzo różnych dziedzin
23 Polecana literatura: Biecek P Przewodnik po pakiecie R. Oficyna wydawnicza GIS. – Rozdział 1 wersji ze starszego wydania dostępny za darmo w Internecie: Komsta Ł Wprowadzenie do R. Wersja PDF dostępna za darmo w Internecie: Wprowadzenie.pdf Rybiński M Krótkie wprowadzenie do R dla programistów, z elementami statystyki opisowej. WMIM UW. Dostępny za darmo w Internecie: skrypt.pdf Paradis E R for Beginners. Dostępny za darmo w Internecie:
24 Ważne miejsca w sieci The Comprehensive R Archive NetworkInstalacja, pakiety, materiały Informacje i tutoriale Tutoriale statystyczne i nie tylko Try R
25 Dlaczego waRto? Oprogramowanie na licencji GPL do zastosowań prywatnych oraz komercyjnych Darmowa dystrybucja Dostępność kodu źródłowego Dynamiczny rozwój, tysiące dostępnych pakietów Możliwość tworzenia pakietów zawierających nowe funkcjonalności Wsparcie naukowe Aktywna społeczność użytkowników w Polsce i na świecie Wieloplatformowość (Windows, Linux, Mac OS) Optymalizacja obliczeń Praca z dużymi zbiorami danych Where in the world is R and Rstudio.
26 Zalety platformy R R pozwala na tworzenie i upowszechnianie pakietów zawierających nowe funkcjonalności koniec 2014 r., ponad 6000 pakietów Wykres 1. Liczba pakietów dostępnych w kolejnych latach Źródło: r4stats.com/2016/04/19/rs-growth-continues-to-accelerate/
27 Źródło: http://blog. revolutionanalytics. com/2010/01/r-package-growth
28 R jest obecnie najpopularniejszym narzędziem w analizie danych na świecieŹródło:
29 Możliwości gRaficzne
30 Cechy chaRakterystyczne:Interpretowalność języka R Odmienność od arkuszy kalkulacyjnych Praca w linii komend lub nakładki graficzne Nakładki i narzędzia R Studio – wygodne środowisko obliczeń zintegrowane z R, udogodnienia dla analityków i programistów R Commander – interfejs okienkowy
31 Czy R ma jakieś wady? Stroma krzywa uczenia sięBrak oszczędności w użyciu pamięci RAM Nie zawsze najlepsza jakość dokumentacji oraz pakietów (w zależności od pakietu)
32 Jak wygląda praca z R Język R jest językiem interpretowanym, a korzystanie sprowadza się do podania ciągu komend, które mają zostać wykonane Znak > jest zachętą do wprowadzania poleceń Znak + jest znakiem kontynuacji Kolejne komendy mogą być wprowadzane linia po linii z klawiatury lub też mogą być wykonywane jako skrypt
33 Skrypt Jest to program wykonywany wewnątrz pewnej aplikacji , w odróżnieniu od programów „normalnych” wykonywanych niezależnie, bezpośrednio w systemie operacyjnym Składa się z wykonywalnego kodu oraz komentarzy # jest znakiem komentarza wszystko co znajdzie się za tym znakiem jest pomijane przez program
34 Pojęcia i komendy Obszar roboczy (ang. workspace) ESC q()Wszystkie obiekty znajdujące się aktualnie w pamięci operacyjnej ESC Przerwanie aktualnie wykonywanej czynności q() Zamknięcie środowiska
35 Praca z R studio Dostępne na stronie: http://www.rstudio.com/Zarządzenie wieloma plikami/projektami Wyświetlanie obiektów obecnych w przestrzeni nazw Wbudowany edytor – kolorowanie składni Podpowiadanie składni (skrót klawiaturowy: shift+enter) Łatwa instalacja pakietów
36 Praca z R studio
37 R Commander Interfejs okienkowy dla środowiska R Instalacja:install.packages("Rcmdr",dependencies=TRUE)
38 Podstawy składni języka RObiektem mogą być: Zmienne Macierze Funkcje Itd.. Obiekty posiadają nazwy i inne atrybuty takie jak np. wymiary, nazwy kolumn Wszystko z czym mamy do czynienia z R jest obiektem
39 Czym jest zmienna w informatyce?Zmienne są sposobem przechowywania informacji w komputerze Miejsce w pamięci które trzeba odpowiednio nazwać i zaadresować Np. tworzymy zmienną o nazwie „wiek” i przechowujemy w niej wiek danej osoby tworzymy zmienną kot…. Zawartość Zmienna kot
40 Zmienne w R Etapy procesu tworzenia zmiennej: Przykłady:Podaj nazwę zmiennej np. lata Dodaj znak przypisania wartości do zmiennej „<-” lub znak równości „=” Dodaj zawartość zmiennej np. 5 i naciśnij enter Sprawdź zawartość zmiennej przez wpisanie jej nazwy. W konsoli powinien pojawić się wynik Przykłady:
41 Zmienne w R Nazwy zmiennych: Istotna jest wielkość literPowinny zaczynać się od litery Mogą składać się z liter, cyfr, kropek, podkreślników Nie może zawierać m.in. spacji
42 Typy zmiennych Typ liczbowy Liczby całkowite, rzeczywisteKropką dziesiętna jest kropka, nie przecinek NaN - wartość specjalna z ang. „not a number” czyli „nie liczba” Oznaczenia Inf oraz –Inf – to plus i minus nieskończoność
43 Typy zmiennych Typ czynnikowy (kategoryczny, ang. factor)Przydatny do przechowywania wartości występujących na kilku poziomach (w kilku kategoriach) → zmienne o charakterze jakościowym np. płeć, rasa, wykształcenie Przechowuje informacje o powtórzeniach takich samych wartości oraz o zbiorze unikalnych wartości tego ciągu Najczęściej służy do definiowania grup Zmienne takie tworzymy z użyciem funkcji factor()
44 Typy zmiennych Typ znakowy (character)Wartościami obiektów są napisy (łańcuchy znaków) Rozpoczynają się i kończą znakiem ” lub ‘ Znaki specjalne: \n – znak nowej linii \t – znak tabulacji Z łańcuchów znaków można wycinać fragmenty, sklejać, wyszukiwać podciągi znaków, itd.
45 Typy zmiennych Typ logiczny (logical)Obiekty tego typu przechowują jedną z dwóch wartości: logiczną prawdę (TRUE lub jego skrót T, odpowiednik liczbowy 1) logiczny fałsz (FALSE lub jego skrót F, odpowiednik liczbowy 0) Dzięki nim można wykonywać operacje logiczne, np. Wartości logiczne są szczególnie istotne przy instrukcjach warunkowych
46 Wektor (vector) Jest to ciąg zmiennych tego samego typu, np. liczb, znaków, wartości logicznych Do tworzenia wektorów służy funkcja c() Przykładowe funkcje: length(wektor) – długość wektora sort(wektor) – sortowanie, rosnąco sample(wektor, length(wektor) ,FALSE)
47 Wektor (vector) Wektory są strukturami, na których można wykonywać praktycznie wszystkie działania arytmetyczne. Np.: pierwiastek z wektora jest wektorem, którego elementy są pierwiastkami elementów oryginalnego wektora suma dwóch wektorów o tej samej długości jest wektorem zawierającym sumy poszczególnych elementów (dwa pierwsze, dwa drugie etc.) Jeśli wektory mają różne długości, to po dojściu do końca pierwszego wektora obliczenia zaczynają się od początku. w konsoli wyświetlane jest ostrzeżenie
48 Indeksowanie Odnosimy się do konkretnych elementów stanowiących podzbiór całości otrzymujemy wektor ale jest on krótszy i zawiera jedynie elementy z wyjściowego wektora polega na dodaniu wyrażenia w nawiasach kwadratowych
49 Indeksowanie Jako indeksu możemy użyć:Wektora zawierającego liczby naturalne (od 1 do długości wektora) Wektora zawierającego ujemne liczby całkowite wektor zawiera wszystkie elementy oprócz wskazanych Wektora logicznego o tej samej długości otrzymany wektor zawiera tylko te liczby dla których indeks zawiera wartość TRUE
50 Macierz (matrix) Jest wektorem, dodatkowo zawierającym informacje o uporządkowaniu elementów Najczęściej stosowana jest macierz dwuwymiarowa Indeksowanie: Macierz[wiersz, kolumna]
51 Ramka danych (data frame)Macierz (tablica), której poszczególne kolumny sa wektorami lub/i czynnikami o tej samej długości Kolumny mogą różnic się pomiędzy sobą typem elementów, jakie zawierają. Konstruktorem jest funkcja data.frame
52 Funkcje mojafunkcja <- function(argument1, argument2, ... )Wydzielona część programu do wielokrotnego wykorzystania Schemat instrukcji, które mają zostać wykonane na wybranych argumentach Jej konstruktorem jest funkcja function() mojafunkcja <- function(argument1, argument2, ... ) { statements return(object) }
53 Pakiety Na przykładzie pakietu Rcmdr Instalacja:install.packages("Rcmdr",dependencies=TRUE) – instaluje pakiet Rcmdr oraz wszystkie wspomagające jego działanie Wyświetli sie lista serwerów z repozytoriami - wybieramy najbliższy (szybkość) Funkcja library(Rcmdr): Ładowanie biblioteki do aktywnej przestrzeni roboczej (workspace) Aby wyświetlić listę załadowanych bibliotek używamy tej samej funkcji, ale bez argumentu
54 Analizy statystyczne w R
55 Przykładowa baza danychBaza „survey” z pakietu MASS Baza zawiera odpowiedzi 237 studentów uniwersytetu Adelaide na pytania zawarte w ankiecie Przykładowe zmienne: Płeć: „Male”, „Female” W.Hnd: praworęczność ”right” lub leworęczność „left”, Pulse (uderzenia serca na minute) Smoke (jak dużo papierosów pali student): „Heavy”,”Regul”, „Occas”, „Never” Height (wzrost w cm) Age (wiek)
56 Przykładowa baza danych
57 Cechy jakościowe Tabela liczebności (kontyngencji) Przykład:funkcja table() – zestawienie liczebności w grupach Przykład:
58 Statystyka opisowa – cechy ilościoweCechy ilościowe - najważniejsze funkcje: length — długość wektora (liczba elementów) sum — suma elementów wektora max, min— maksymalna i minimalna wartość z wektora mean — średnia arytmetyczna Jeśli podamy dodatkowy parametr trim - to funkcja policzy, średnią po odrzuceniu określonego odsetka wartości skrajnych, np. mean(x,trim=0.1) – to średnia z x po odrzuceniu 10% wartości skrajnych quantile— dowolny kwantyl, np. quantile(x,.5) - to mediana z x, inaczej median(x) sd — odchylenie standardowe var — wariancja moda – wartość występująca najczęściej
59 Statystyka opisowa Funkcja summary() wyświetla proste podsumowania wektora obserwacji Dla zmiennej jakościowej: Liczebności obserwacji w każdym z możliwych poziomów Dla zmiennej ilościowej: Wektor z wartościami: Minimum Maksimum Średnia Mediana Kwartyle
60 Statystyka opisowa Wynik funkcji summary() dla przykładowej ramki danych
61 Wykresy Możliwość wykorzystania jednego z dwóch systemów graficznychPakiet graphics Pakiet grid wykorzystany w pakietach np. lattice, ggplot2 Pakiet graphics Pakiet lattice Pakiet ggplot2 plot(Pulse,Height) xyplot(Height~Pulse) qplot(Pulse,Height)
62 Wykresy Histogram – przedstawia liczebności obiektów w poszczególnych przedziałach (klasach) danej zmiennej Funkcja hist() Histogram, ustawienia domyślne Zmiana liczby przedziałów (breaks)
63 Wykresy Wykres pudełkowy – zmienność pojedynczej lub kilku zmiennychFunkcja boxplot() Obserwacje odstające (ang. outliers) - ponad 1,5 przedziału międzykwartylowego (IQR) od kwartyli
64 Wykresy Wykres rozrzutu – zależności między parą zmiennych ilościowychFunkcja plot() plot(Pulse,Height,col=rainbow(2),pch=19)
65 Wykresy Najważniejsze argumenty wykresówmain – tytuł np. main=„wykres” xlab, ylab - tytuły osi np. xlab=”nazwa osi x” ylim – dolna i górna granica wartości dla osi y np. zakres od 0 do 50 co 5: ylim=c(0,50,5) breaks – liczba przedziałów przy tworzeniu histogramu col - kolory
66 Testowanie hipotez p-value = prawdopodobieństwo testowe, graniczny poziom istotności Prawdopodobieństwo uzyskania analizowanych danych przy założeniu, że hipoteza zerowa jest prawdziwa Miara prawdopodobieństwa popełnienia błędu pierwszego rodzaju czyli nieodrzucenia fałszywej hipotezy zerowej p-value > 0.05 –brak podstaw do odrzucenia hipotezy zerowej p-value <= 0.05 – istotnie odrzucamy hipotezę zerową p-value <= 0.01 – wysokoistotnie odrzucamy hipotezę zerową
67 Wybrane testy statystyczneSprawdzanie czy zmienna ma rozkład normalny Ograniczenia przy powtórzonych wartościach w próbie Test Shapiro-Wilka shapiro.test(x) H0: badana zmienna ma rozkład normalny Wartość empiryczna testu Czyli: 1 x 10^-16 Prawdopodobieństwo testowe < 0.01 więc odrzucamy hipotezę zerową wysokoistotnie Prawdopodobieństwo testowe > 0.05 więc brak podstaw do odrzucenia hipotezy zerowej
68 Wybrane testy statystyczneSprawdzanie zgodności rozkładu z założonym (ang. Chi square goodness of fit test) H0: Rozkład jest zgodny z założonym (1:7:1:1) zakładamy, że 70% studentów należy do osób nie palących, a w każdej z pozostałych grup znajduje się po 10% studentów
69 Wybrane testy statystyczneTest na jednorodność wariancji F-Snedecora var.test(x,y) H0: σ21= σ22
70 Wybrane testy statystyczneTest na proporcje – mała próba binom.test(x=9,n=20,p=0.2) Oparty na rozkładzie dwumianowym 9 sukcesów w 20 próbach prawdopodobieństwo sukcesu 20% H0: p=0.2
71 Wybrane testy statystyczneTest na proporcje – duża próba (odpowiednik testu U) Oparty na statystyce Chi-kwadrat prop.test(x=2000,n=100000,p=0.2) 2000 sukcesów w prób prawdopodobieństwo sukcesu 20% H0: p=0.2
72 Wybrane testy statystyczneTest na średnią w jednej populacji Zakłada rozkład normalny Test t-studenta Przykład: Czy średni wzrost studentów był równy 170 cm? t.test(x,mu=170) H0: μ=170
73 Wybrane testy statystyczneTest na średnią w dwóch populacjach Zakłada rozkład normalny i jednorodność wariancji Test t-studenta Przykład: Czy średnia wzrostu dla studentów obu płci jest taka sama? t.test(wzrost_M,wzrost_F) H0: μ1= μ2
74 Wybrane testy statystyczneTest na niezależność chi-kwadrat Musimy mieć tabelę liczebności np: Kolejne elementy to gatunek filmowy: sensacyjny, komedia, horror kobiety<-c(21,12,32) mezczyzni<-c(33,22,33) chisq.test(bind(kobiety, mezczyzni)) H0: Cechy są niezależne
75 Wybrane testy statystyczneTest na niezależność chi-kwadrat Czy częstotliwość palenia tytoniu u studentów zależy od płci?
76 Wybrane testy statystyczneKorelacja liniowa Pearsona Wartości od -1 do +1 Liniowa zależność pomiędzy dwoma zmiennymi ilościowymi funkcja: cor() lub z testem istotności cor.test()
77 Dziękuje za uwagę