Analiza danych Tomasz Górecki Wydział Matematyki i Informatyki Uniwersytet im. Adama Mickiewicza
W ciągu ćwiczeń zostaną przeprowadzone 2 kolokwia. Na każdym z nich będzie do zdobycia 25 punktów. Od 25 punktów będzie zaliczenie ćwiczeń. W sesji odbędzie się egzamin z części teoretycznej, na którym do zdobycia będzie również 50 punktów. Od 25 punktów egzamin będzie uważany za zaliczony. Ocena końcowa z egzaminu będzie wystawiana na bazie sumy uzyskanych punktów(każda część musi być zaliczona).
Biecek P.(2008), Przewodnik po pakiecie R, GiS. Box G.E.P., Jenkins G.M.(1983), Analiza szeregów czasowych, PWN. Brandt S.(1999), Analiza danych, PWN. Cook D., Swyane D.F.(2007), Interactive and Dynamic Graphics for Data Analysis With R and GGobi, Springer. Crawley M.J.(2007), The R Book, Wiley. Cryer J.D., Chan K.S.(2008), Time Series Analysis With Applications in R, Springer. Ćwik J., Koronacki J.(2009), Statystyczne systemy uczące się. Ćwiczenia w oparciu o pakiet R, Oficyna Wydawnicza Politechniki Warszawskiej.
Górecki T.,(2011), Podstawy statystyki z przykładami w R, BTC. Kopczewska K., Kopczewski T., Wójcik P.(2009), Metody ilościowe w R. Aplikacje ekonomiczne i finansowe, CeDeWu. Krzyśko M., Wołyński W., Górecki T., Skorzybut M.(2008), Systemy uczące się, WNT. Seber G.A.F.(2004), Multivariate Observations, Wiley.
R jest zaawansowanym pakietem statystycznym jak również językiem programowania istniejącym na platformy Windows, Unix oraz MacOS. ObjętyjestlicencjąGNUGPLiopartynajęzykuS.JęzykRjestjęzykiem interpretowanym, a nie kompilowanym. Z tego względu program w nim napisany nie będzie tak szybki jak np. program napisany w C++. Można jednak wykorzystać funkcje z bibliotek napisanych np. w C, C++ czy Fortran. Można również używać funkcji R w Javie czy C++, a ostatnio również w Visual Basic for Statistica. Dokładny opis metod wykorzystania bibliotek znajduje się w pliku R-exts.pdf. Pakiet umożliwia również tworzenie zaawansowanych wykresów, które mogązostaćzapisanewformatachtakichjakpdfijpg. O sile R stanowi ponad 2000 bibliotek, przeznaczonych do najróżniejszych zastosowań. Całość wzbogacona jest kompleksową dokumentacją. Dodatkowo bardzo użyteczną cechą R jest dostępność zbiorów danych praktycznie do każdego zagadnienia.
Pierwsze kroki Warunki zaliczenia Demonstracje demo()
Pierwsze kroki Warunki zaliczenia Pomoc help()lub? Jeśli w nazwie znajdują się pewne znaki szczególne lub słowa kluczowe języka np. takie jak if, for, function, to nazwę funkcji wpisujemy w cudzysłowie. W przypadku gdy nie pamiętamy nazwy funkcji ale znamy temat wpisujemy: help.search() Pomoc na temat pakietu uzyskamy wpisując: library(help = nazwa pakietu)
Pierwsze kroki Warunki zaliczenia Przykład example()
Pierwsze kroki Warunki zaliczenia Argumenty funkcji args()
Pierwsze kroki Warunki zaliczenia Komentarz #
Pierwsze kroki Warunki zaliczenia Operator przypisania =, <-,->
Pakiety Warunki zaliczenia Instalacja install.packages(nazwa pakietu, dependencies = T)
Pakiety Warunki zaliczenia Ładowanie library(nazwa pakietu)
Pakiety Warunki zaliczenia Usunięcie detach(package:nazwa pakietu)
Struktury danych typy proste numeryczny, zespolony, logiczny jedna z dwóch wartości prawda(true/t) lub fałsz (FALSE/F), znakowy napisy, łańcuchy znaków. Powinny być zawarte pomiędzy znakami lub. W łańcuchu można używać znaków sterujących, którepoprzedzonesą \(np. \n nowalinia, \t tabulatoritd.).
Podstawowe funkcje operujące na napisach chartr(stary, nowy, napis) Zamienia określone znaki na inne grep(wyrażenie regularne, dane) Poszukuje wystąpień wyrażenia w danych nchar(napis) Liczba znaków paste(napis1, napis2) Łączy napisy strsplit(napis, wyrażenie regularne) Dzieli napis strtrim(napis, ile) Obcina napis sub(wyrażenie regularne, nowy tekst, napis) Zamienia pierwsze wystąpienie łańcucha (funkcja gsub zamienia wszystkie wystąpienia) tolower(napis) Zamiana znaków na małe toupper(napis) Zamiana znaków na wielkie
Struktury danych sprawdzanie typu i wielkości Type mode()
Struktury danych sprawdzanie typu i wielkości Długość length()
Struktury danych obiekty wektor Wprowadzanie danych Proste dane wprowadzamy do R za pomocą funkcji c(). Tak wprowadzone dane stają się wektorem. Wektor może zawierać dane jedynie jednego typu.
Struktury danych obiekty wektor Generowanie ciągów liczb : generuje liczby z podanego przedziału, seq generuje liczby z podanego przedziału, przy czym można podać krok(by) i długość(length), rep generuje ciąg składający się z powtórzeń innego ciągu.
Struktury danych obiekty wektor Indeksowanie Wykonujemy je poprzez użycie nawiasu kwadratowego. W wyniku indeksowania uzyskuje się również wektor.
Struktury danych obiekty wektor Operacje arytmetyczne Na wektorach można wykonywać praktycznie wszystkie operacje arytmetyczne. Przy czym np. kwadrat wektora jest wektorem złożonym z kwadratów jego składowych, iloczyn wektorów jest wektorem, którego każda składowa jest iloczynem odpowiednich składowych mnożonych wektorów.
Struktury danych obiekty czynnik Czynnik jest specjalną strukturą danych w R, przechowującą oprócz danych również liczbę wystąpień każdej wartości(w wielu językach programowania nazywany jest typem wyliczeniowym). Strukturę taką tworzymy za pomocą funkcji factor, natomiast liczbę wystąpień danego składnika otrzymamy funkcją table. Na tablicach można wykonywać także bardziej zaawansowane operacje. Służy do tego funkcja tapply, która działa na całej tablicy. Tablicę można, za pomocą polecenia, addmargins dodatkowo rozszerzyć o wiersze i kolumny podsumowujące. Warta uwagi jest jeszcze funkcja by(będąca w zasadzie wraperem na funkcję tapply), która pozwala na podsumowanie określonej zmiennej według innej zmiennej(najczęściej grupującej).
Struktury danych obiekty czynnik Istnieje również struktura zwana uporządkowanym czynnikiem. Tworzymy ją za pomocą funkcji ordered.
Struktury danych obiekty tablica Tablica jest wektorem, zawierającym dodatkowe dane określające uporządkowanie elementów. Najczęściej stosowana jest tablica dwuwymiarowa czyli macierz. Indeksowanie tablic odbywa się podobnie do wektorów, w nawiasie kwadratowym podajemy współrzędne indeksowanego elementu. W razie pominięcia współrzędnej wynikiem indeksowania jest cały wiersz lub kolumna. Tablice tworzone są kolumnowo. Tablice można tworzyć z istniejących wektorów używając funkcji dim. Innymi, bardziej naturalnymi funkcjami tworzącymi tablice są matrix(dwuwymiarowe) i array(większe niż dwuwymiarowe). Do wykonywania operacji na wszystkich wierszach lub kolumnach macierzy równocześnie służy funkcja apply(macierz, wymiar, funkcja).
Podstawowe operacje na macierzach(1) Funkcja Działanie outer(a, B, * ) Tworzy z dwóch tablic większą tablicę wielowymiarową. Wymiary tej tablicy są połączeniem wektorów wymiarów dwóch tablic, zaś jej zawartość stanowią wszystkie możliwe kombinacje iloczynów(lub innych operacji) pomiędzy elementami. Ostatnim argumentem jest nazwa funkcji operującej na dwóch zmiennych. Istnieje zatem możliwość przeprowadzenia dowolnych operacji pomiędzy tablicami przez utworzenie własnej funkcji. cbind(a, b) Tworzy tablicę z podanych wektorów, poprzez umieszczenie ich kolumnami w nowo tworzonej tabeli. rbind(a, b) Tworzy tablicę z podanych wektorów, poprzez umieszczenie ich wierszami w nowo tworzonej tabeli. t(a) Transpozycja det(a) Wyznacznik A%*%B Iloczyn macierzy, samo* daje iloczyn po elementach diag(a) W przypadku wektora daje macierz z elementami tego wektora na przekątnej. W przypadku macierzy daje wektor o elementach przekątniowych macierzy.
Podstawowe operacje na macierzach(2) Funkcja solve(a, b) colsums(a) eigen(x) Działanie Rozwiązuje układy równań liniowych, jako pierwszy parametr podajemy macierz współczynników, a jako drugi wektor wyrazów wolnych. Jeśli nie podamy drugiego parametru funkcja obliczy macierz odwrotną. Wektor sum kolumn macierzy. Dla sumy wierszy mamy funkcję rowsums, podobnie można policzyć średnie dla kolumn i wierszy za pomocą funkcji colmeans oraz rowmeans odpowiednio. Wektory oraz wartości własne svd(a) dekompozycja SVD macierzy qr(a) dekompozycja QR macierzy chol(a) dekompozycja Choleskiego macierzy kronecker(a, B) iloczyn Kroneckera dwóch macierzy
Struktury danych obiekty lista Lista jest uporządkowanym zbiorem elementów różnego typu. Do tworzenia list służy funkcja list. Jeśli chcemy odwołać się do konkretnego elementu listy to indeks elementu należy podać w podwójnych nawiasach kwadratowych. Każdy z elementów listy może mieć nazwę i takie nazwane listy spotyka się najczęściej(można się odwoływać do nazw, co nie jest możliwe w przypadku wektorów). Nazwy elementów listy można skracać do takiej długości, która wystarcza do jednoznacznej ich identyfikacji. Za pomocą funkcji lapply można wykonywać działania na całych listach(można również użyć funkcji sapply, która w wyniku działania daje wektor, funkcja lapply daje listę). W przypadku wielokrotnego wykonywania tej samej operacji(np. generowanie danych) można również wykorzystać funkcję replicate, będącą wraperem na funkcję sapply.
Struktury danych obiekty ramka danych Ramka danych to specyficzna struktura R. Najprościej można określić ją jako macierz, w której poszczególne kolumny mogą zawierać wartości różnego typu. Można sobie wyobrazić, że wiersze takiej ramki to kolejne obserwacje w naszym doświadczeniu, a kolumny to cechy, które obserwujemy(nie wszystkie muszą być ilościowe). W rzeczywistości ramka jest szczególnym typem listy. Do utworzenia takiej struktury służy funkcja data.frame.
Struktury danych obiekty ramka danych Dołaczenie attach()
Struktury danych obiekty ramka danych Odłaczenie detach()
Obiekty oraz typy Warunki zaliczenia Obiekt Typy Różne typy? Wektor numeryczny, znakowy, zespolony, logiczny Nie Czynnik numeryczny, znakowy Nie Tabela numeryczny, znakowy, zespolony, logiczny Nie Ramka numeryczny, znakowy, zespolony, logiczny Tak numeryczny, znakowy, zespolony, logiczny Lista Tak funkcja, wyrażenie
Odczytywanie i zapisywanie danych Wczytanie wektora scan()
Odczytywanie i zapisywanie danych Odczyt zbioru danych read.table(),load()
Odczytywanie i zapisywanie danych Nazwy kolumn, wierszy rownames(), colnames(), dimnames()
Odczytywanie i zapisywanie danych Zapis zbioru danych write.table(),save()
Odczytywanie i zapisywanie danych Edycja danych edit(),fix()
Odczytywanie i zapisywanie danych Podzbiór subset()
R dysponuje bardzo dużymi możliwościami w zakresie graficznej prezentacji uzyskanych wyników. Aby jednak w pełni korzystać z jego możliwości zapoznamy się wpierw z systemem prezentacji grafiki. Bazowy system graficzny dzieli każdą stronę na trzy główne obszary: marginesy zewnętrzne(ang. outer margins), obszar rysunku(ang. figure region) oraz obszar kreślenia(ang. plot region). Obszar jaki uzyskujemy po odrzuceniu marginesów zewnętrznych nazywany jest obszarem wewnętrznym(ang. inner region).
Podział strony graficznej
Obszar na zewnątrz obszaru kreślenia, ale wewnątrz obszaru rysunku nazywa się marginesami rysunku(ang. figure margins). Większość funkcji rysujących wykorzystuje obszar kreślenia do rysowania symboli graficznych oraz linii, natomiast osie oraz etykiety nanoszone są na marginesach rysunku lub marginesach zewnętrznych. Rozmiar oraz położenie marginesów kontrolowane są za pomocą funkcji par. Polecenia graficzne w R można podzielić na trzy typy: funkcje wysokiego poziomu, funkcje niskiego poziomu oraz funkcje parametrów graficznych.
Funkcje wysokiego poziomu Tworzą nowy wykres.
Funkcje wysokiego poziomu plot wykres punktowy, najpopularniejsza funkcja graficzna, przeciążona praktycznie dla każdego obiektu, curve wykres funkcji.
Funkcje wysokiego poziomu Każda funkcja wysokiego poziomu może zostać wywołana z parametrami. add=false jeżeli TRUE, nakłada wykres na już istniejący, axes=true jeżeli FALSE, nie rysuje osi i pudełka naokoło, type= p określa rodzaj wykresu. Główne typy to: p punkty, l liniebezpunktów, b punktypołączonezapomocą linii, o linieorazpunktynanichleżące, h linie pionowe, s oraz S liniełącząpunkty(najpierww poziomiepotemwpionielubnaodwrót), n pusty wykres, xlim=, ylim= określa początek i koniec osi, xlab=, ylab= tytuły osi, main= tytuł wykresu, sub= podtytuł(mniejsza czcionka).
Użycie parametru type w procedurach graficznych
Funkcje niskiego poziomu Funkcje takie dodają pewne elementy do już istniejącego wykresu.
Funkcje niskiego poziomu abline(a,b) rysujeprostą y = ax +b,
Funkcje niskiego poziomu arrows(x0, y0, x1, y1) dodaje strzałkę,
Funkcje niskiego poziomu legend(x, y, legend = legenda ) dodaje legendę,
Funkcje niskiego poziomu lines(x, y) rysuje linię,
Funkcje niskiego poziomu points(x, y) rysuje punkty,
Funkcje niskiego poziomu poly(x, y) rysuje wielokąt,
Funkcje niskiego poziomu rect(x0, y0, x1, y1) rysuje prostokąt,
Funkcje niskiego poziomu text(x,y,label= tekst ) dodaje tekst wpunkcie(x,y).możemy dodawać opisy matematyczne(i nie tylko), których składnia opiera się na wewnętrznym systemie R zbliżonym do TEXa,
Funkcje niskiego poziomu title( tytuł ) dodaje tytuł.
Funkcje parametrów graficznych Zmieniają oraz poprawiają wygląd okna graficznego. Większość ustawień jest kontrolowana poprzez funkcję par, która wywołana bez parametrów wyświetla bieżące ustawienia okna. Jedną z najważniejszych opcji oferowanych przez par jest podział okna graficznego. Uzyskujemy to za pomocą opcji mfrow oraz mfcol. W tym pierwszym przypadku obrazki rysowane są po wierszach, w drugim po kolumnach. Bardziej skomplikowane układy mogą być uzyskane za pomocą poleceń split.screen oraz layout.
Przykładowe układy rysunków stworzone za pomocą funkcji layout
Podstawowe parametry graficzne(1) ask Ustawienie na TRUE powoduje, że przed rozpoczęciem rysowania należy nacisnąć dowolny klawisz. adj Wyrównanietekstu,0 dolewej,0.5 dośrodka,1 doprawej. bg Kolortła bty Kontroluje rodzaj obramowania rysunku(w połączeniu z funkcją box). Dopuszczalnewartościto: n, o, l, 7, c, u, ],gdzie n oznaczabrak obramowania, natomiast pozostałe parametry określają typy obramowania zgodnezwyglądemznaków,np.: u wszystkieliniepozagórną. cex Wielkość powiększenia symboli i tekstu. Można również używać: cex.axis, cex.lab, cex.main, cex.sub. col Kolor punktów, linii, tekstu oraz wypełnionych obrazków. Za pomocą dodatkowych poleceń(col.axis, col.lab, col.main, col.sub) uzyskujemy kolor osi, etykiet oraz tytułu i podtytułu. font Typczcionkidlatekstu:1 normalna,2 pogrubiona,3 pochylona,4 pogrubiona i pochylona. Dla osi, etykiet oraz tytułu i podtytułu zmieniamy czcionkę za pomocą font.axis, font.lab oraz font.main i font.sub odpowiednio.
Podstawowe parametry graficzne(2) lty Określatyplinii,0 braklinii( blank ),1 ciągła( solid ),2 przerywana ( dashed ),3 kropkowana( dotted ),4 kropka-kreska( dotdash ),5 długa kreska( longdash ), 6 podwójna kreska( twodash ). Poza tym istnieje możliwość określenia dowolnej linii, w taki sposób, że po kolei w liczbach szesnastkowych podajemy ile jednostek ma być wypełnionych linią, a ile pustych(maksymalnie osiem znaków, tylko parzyste długości), np:. lty = 13 oznacza linię kropkowaną. lwd Grubość linii new Ustawienie na TRUE powoduje, że nowy wykres rysowany jest na istniejącym wykresie bez jego czyszczenia. pch Symbol używany na obrazkach, można używać domyślnych symboli określonych liczbami od 0 do 25. Symbole 21 25 różnią się od wcześniejszych jedynie typem wypełnienia. Dodatkowo istnieje możliwość użyciaznakówokodachasciiod32do255zbieżącejczcionki(wszystkie symbole dostępne do użycia można wyświetlić poleceniem symboltable z pakietu fbasics). ps Wielkość czcionki(w punktach) srt Kąt obrotu tekstu(w stopniach)
Predefiniowane typy linii(6 pierwszych) oraz przykładowe linie użytkownika (7.i8.)
Symbole używane na rysunkach
Kolory Warunki zaliczenia Do kolorów można się odwoływać za pomocą nazwy lub korzystając z modelu RGB. Wszystkie 657 nazw kolorów możemy wyświetlić za pomocą funkcji colors(). Natomiast podając kolor w modelu RGB podajemy go w następującej postaci: #RRGGBB, gdzie RR(czerwony), GG(zielony), BB(niebieski) to natężenie każdej ze składowych barwnych z przedziału(0, 255) zapisane w postaci liczby szesnastkowej. Istnieje również możliwość skorzystania z jednej z palet wbudowanych: rainbow, heat.colors, terrain.colors, topo.colors, cm.colors.
Interakcja z obrazkiem Warunki zaliczenia Po stworzeniu wykresu możemy w niego również, w ograniczony sposób, ingerować za pomocą myszki. Najprostszą tego typu funkcją jest: locator(n=512,type= n ) gdzie n oznacza ilość punktów, a type ma analogiczne znaczenie do parametrów funkcji wysokiego poziomu. Drugim użytecznym poleceniem jest identify(x, y, labels) które pozwala wskazywać punkty na wykresie. Na wykresie dodawana jest etykieta ze zbioru labels(lub numer punktu w zbiorze danych jeśli nie podano wektora etykiet), dla punktu najbliższego wskazania. W podstawowej wersji R nie istnieje możliwość innej interakcji z obrazkiem (obroty, rysowanie myszą itp.). Funkcjonalność taka może być uzyskana poprzez użycie pakietów np. rggobi lub rgl.
Interakcja z obrazkiem Warunki zaliczenia Po stworzeniu wykresu możemy w niego również, w ograniczony sposób, ingerować za pomocą myszki. Najprostszą tego typu funkcją jest: locator(n=512,type= n ) gdzie n oznacza ilość punktów, a type ma analogiczne znaczenie do parametrów funkcji wysokiego poziomu. Drugim użytecznym poleceniem jest identify(x, y, labels) które pozwala wskazywać punkty na wykresie. Na wykresie dodawana jest etykieta ze zbioru labels(lub numer punktu w zbiorze danych jeśli nie podano wektora etykiet), dla punktu najbliższego wskazania. W podstawowej wersji R nie istnieje możliwość innej interakcji z obrazkiem (obroty, rysowanie myszą itp.). Funkcjonalność taka może być uzyskana poprzez użycie pakietów np. rggobi lub rgl.
Histogram Warunki zaliczenia Histogram zbór przylegających prostokątów, których podstawy, równe rozpiętości przedziałów klasowych znajdują się na osi odciętych, a wysokości są liczebnościami przedziałów. Tworzymy go za pomocą polecenia: hist(dane, breaks, probability = F), gdzie breaks może być liczbą określającą liczbę słupków(jest to tylko sugestia) lub wektorem zawierającym punkty, gdzie mają być słupki; probability zamiast liczebności rysowane są częstości.
Histogram Warunki zaliczenia Często do tak utworzonego histogramu dodaje się na dole wartości obserwacji za pomocą polecenia rug(jitter(dane)), co pozwala zaobserwować gdzie dokładnie są obserwacje w klasach. Polecenie jitter dodaje losowy szum do danych, co powoduje, że jeśli mamy kilka takich samych wartości, to nie są one przedstawione jako pojedynczy punkt, ale kilka punktów blisko siebie.
Histogram Warunki zaliczenia Niestety histogram nie nadaje się do analizy zmiennych dyskretnych. W takiej sytuacji można wykorzystać wykres typu zawieszony korzeń (ang. hanging rootogram). Jest to diagram, na którym na osi pionowej znajdują się pierwiastki z zaobserwowanych częstości(aby nieco spłaszczyć wykres i uwypuklić również małe liczebności). Dodatkowo rysowana jest teoretyczna funkcja gęstości dopasowywanego rozkładu. Jednakże słupki są tak przesunięte aby dotykały dopasowywanej krzywej. Wykres taki został zaimplementowany w pakiecie vcd w funkcji rootogram.
Histogram Warunki zaliczenia Ocenę gęstości otrzymamy za pomocą polecenia density i narysujemy poleceniem plot.
Wykres pudełkowy(1) Warunki zaliczenia Wykres pudełkowy inaczej ramkowy(ang. boxplot, box-and-whisker plot). Tworzymy go odkładając na pionowej osi wartości niektórych parametrów rozkładu. Nad osią umieszczony jest prostokąt(pudełko), którego dolny bok jest wyznaczony przez pierwszy kwartyl, górny bok zaś przez trzeci kwartyl. Wysokość pudełka odpowiada wartości rozstępu ćwiartkowego. Wewnątrz prostokąta znajduje się pozioma linia, określająca wartość mediany.
Wykres pudełkowy(1) Warunki zaliczenia Rysunek pudełka uzupełniamy od góry i od dołu odcinkami(wąsy). Dolny koniec dolnego odcinka wyznacza najmniejszą wartość w zbiorze, natomiast górny koniec górnego odcinka, to wartość największa. Końcowe wartości wąsów muszą spełniać dodatkowy warunek, a mianowiciedolnykoniecniemożebyćmniejszyniż Q 1 1,5 (Q 3 Q 1 ), agórnywiększyniż Q 3 +1,5 (Q 3 Q 1 ).Jeśliwystępująobserwacje spoza tego przedziału, to nanoszone są na wykres indywidualnie(są to tzw. obserwacje odstające(ang. outlier)). (dane, formuła).
Wykres pudełkowy(2) Warunki zaliczenia
Wykres paskowy(1) Warunki zaliczenia Dla prób, w których istnieją powtarzające się wartości, używa się również wykresu paskowego(ang. stripchart). Na wykresie takim rysowane są wszystkie obserwacje w jednej poziomej linii, przy czym mamy możliwość wyboru metody postępowania w przypadku wartości powtarzających się. stripchart(dane, method). Parametr method określa sposób postępowania w przypadku obserwacji powtarzających się i może przyjmować wartość: stack, overplot oraz jitter.
Wykres paskowy(2) Warunki zaliczenia
Wykres skrzypcowy Warunki zaliczenia Wykres skrzypcowy(ang. violin plot). Można go traktować jako wygładzoną wersję wykresu pudełkowego. Przydatny jest zwłaszcza w przypadku danych wielomodalnych. Jest to w zasadzie wykres pudełkowy, gdzie szerokość skrzypiec w punkcie x odpowiada natężeniu obserwacji o wartości cechy zbliżonej do x(estymator jądrowy gęstości). Funkcja vioplot znajduje się w pakiecie o tej samej nazwie.
Porównanie wykresu skrzypcowego i pudełkowego
Wykres typu łodyga liście (1) Wykres typu łodyga liście (ang. stem and leaf plot, stemplot). Jego celem jest połączenie dokładności polegającej na zachowaniu oryginalnych wartości poszczególnych obserwacji z zaletami histogramu. Jeśli np. będziemy rozpatrywać dane dotyczące wieku badanych, to wszystkie liczby można zapisać jako dziesiątki i jednostki(poza szczególnymi przypadkami osób ponad 100-letnich). Po prawej stronie od linii obrazującej dziesiątki będziemy zapisywali jednostki odpowiadające poszczególnym obserwacjom. W taki sposób otrzymujemy obrócony o 90 o histogram.dodatkowojednakmożemyzniegoodczytaćwartości poszczególnych obserwacji. stem(dane)
Wykres typu łodyga liście (2) 3 0 457 21 1 001233445555666677789 18 2 001223334556677788 33 3 000111223344444555555566667899999 15 4 124555666777889 11 5 00344578999 7 6 1112235 Liczby po lewej stronie łodygi informują o liczebności klas. Cyfry ujęte w oznaczają liczbę dziesiątek, natomiast cyfry po prawej stronie łodygi to cyfry jedności. Zapisane w ten sposób liczby odczytujemy tak, że pierwsza cyfra uwidoczniona jest na łodydze, druga cyfra zaś tworzy liść (np. 4 5 odczytujemy jako cztery dziesiątki i 5 jedności, czyli 45). Z diagramutegomożemyodczytaćnp.,żebyły3osobywwiekuponiżej10 latimiałyoneodpowiednio:4,5oraz7lat;osóbwwieku10-19latbyło 21iliczyłysobieone:10,10,11,12,13,13,14,14,15,15,15,15,16, 16,16,16,17,17,17,18,19latitd.
Wykres słupkowy Warunki zaliczenia Wykres słupkowy(kolumnowy)(ang. bar plot) używany raczej w przypadku danych jakościowych, przedstawia kolejne kategorie danych za pomocą słupków odpowiedniej wysokości. Może być poziomy lub pionowy(czasami występuje rozróżnienie, pionowy nazywany jest wtedy kolumnowym, a poziomy słupkowym). Czasami używa się również tzw. wykresu Pareto, gdzie słupki rysowane są od najwyższego do najniższego. Czasami dobrym rozwiązaniem może być zastąpienie wykresu słupkowego przez wykres kropkowy(ang. dotchart). barplot(dane)#wykres słupkowy barplot(sort(dane, decreasing = T))#Wykres Pareto dotchart(dane)#wykres kropkowy
Wykres kołowy Warunki zaliczenia Wykres kołowy(ang. pie chart). Wartości liczbowe są przedstawiane za pomocą wycinków koła. Wykres kołowy występuje w rozmaitych wariantach graficznych. Typowy jest wykres płaski, ale można też utworzyć trójwymiarowy tort lub ser. pie(dane) Funkcja rysująca trójwymiarowy wykres kołowy(serowy) znajduje się w pakiecie plotrix. pie3d(dane, radius = promień, explode = odstępy, labels = etykiety)
Wykres kwadratów Warunki zaliczenia Wykres kwadratów(ang. squareplot). W pakiecie UsingR znajduje się bardzo ciekawy wykres do prezentacji liczebności kategorii danych. Powstał on na bazie podobnych wykresów prezentowanych w gazecie New York Times. W przeciwieństwie do wykresów słupkowych oraz kołowych widzimy dokładnie liczebność każdej kategorii. squareplot(dane, kolory)
Uwagi ogólne Warunki zaliczenia R nie jest wyjątkiem w językach programowania i opiera się na zmiennych i funkcjach. Zmienne nie muszą być deklarowane, można ich zatem od razu używać.
Uwagi ogólne Warunki zaliczenia Klasycznym operatorem przypisania w R jest <-, natomiast obecnie coraz częściej wykorzystuje się znak równości(=).
Uwagi ogólne Warunki zaliczenia Jeśli chcemy żeby wynik przypisania został wyświetlony na ekranie należy przypisanie zamknąć w nawiasy().
Uwagi ogólne Warunki zaliczenia Jeśli chcemy aby kilka wyrażeń było zapisanych w jednej linii, to musimy oddzielić je średnikiem(;).
Uwagi ogólne Warunki zaliczenia Komentarz poprzedzamy znakiem hash(#), wszystko do końca linii jest już komentarzem.
Uwagi ogólne Warunki zaliczenia Dla czytelności kodu można używać spacji gdziekolwiek się chce, są one pomijane.
Uwagi ogólne Warunki zaliczenia Rrozróżniawielkieimałelitery,coznaczy,żexorazXtodwieinne zmienne.
Uwagi ogólne Warunki zaliczenia W celu określania kolejności działań używamy wyłącznie nawiasów okrągłych().
Uwagi ogólne Warunki zaliczenia Możemy używać następujących operatorów matematycznych: +,,,/ oraz ˆ(potęgowanie),%%(reszta z dzielenia tzw. modulo)%/%(część całkowita z dzielenia).
Uwagi ogólne Warunki zaliczenia Jeśli chcemy aby wykonało się kilka wyrażeń, to musimy je zgrupować za pomocą {}.
Uwagi ogólne Warunki zaliczenia WnazwachmożnaużywaćwszystkichznakówA-Za-z0-9oraz. i. Dodatkowo nazwa musi zaczynać się od. lub litery, jeśli jednak zaczynasięod.,todrugiznakniemożebyćcyfrą.
Uwagi ogólne Warunki zaliczenia Za pomocą polecenia ls() możemy zobaczyć wszystkie aktualnie istniejące obiekty. Usunąć jakiś obiekt możemy za pomocą polecenia rm(nazwa).
Uwagi ogólne Warunki zaliczenia Kod źródłowy funkcji możemy zobaczyć wpisując jej nazwę. W przypadku funkcji przeciążonych należy wyspecyfikować również klasę obiektu. Wszystkie przeciążenia funkcji możemy wyświetlić za pomocą funkcji methods, funkcje ukryte(czyli takie, które nie są przeznaczone do osobnego wywoływania) oznaczone są za pomocą *. Kod takich funkcji wyświetlamy za pomocą funkcji getanywhere.
Instrukcja warunkowa Warunki zaliczenia Najprostsza postać tej instrukcji to: if(warunek) wyrażenie Instrukcja ta sprawdza czy warunek jest prawdziwy, jeśli tak to wykonuje wyrażenie, w przeciwnym razie nic nie robi. Jeśli chcemy aby w przypadku nieprawdziwości warunku również coś się działo musimy użyć następującej postaci instrukcji warunkowej: if(warunek) wyrażenie1 else wyrażenie2 Istnieje również bardzo użyteczna(i szybsza od pętli) wielowymiarowa wersja instrukcji warunkowej postaci: ifelse(warunek, a, b) W tym przypadku wszystkie elementy instrukcji są wektorami. Sprawdzane są kolejne warunki w wektorze warunek, jeśli jest prawdziwy to odpowiednia składowa ma wartość a[i], w przeciwnym razie ma wartość b[i].
Operatory logiczne oraz operatory porównania Operator Działanie & Logiczne AND(i) Logiczne OR(lub)! Logiczne NOT(nieprawda, że) xor(x, y) Logiczne XOR(różnica symetryczna) == równy!= różny < mniejszy > większy <= mniejszy bądź równy >= większy bądź równy istrue(x) Czy prawda?
Zagnieżdżanie instrukcji if Czasami zamiast wielokrotnego zagnieżdżania instrukcji if warto skorzystać z funkcji switch(zmienna, wartosc1 = akcja1, wartosc2 = akcja2,...) W takim przypadku w zależności od wartości zmiennej(powinna być typu znakowego lub wyliczeniowego) wykonywane są różne akcje.
Pętla Warunki zaliczenia W R mamy wszystkie trzy klasyczne postaci pętli: for(licznik in start:koniec) wyrażenie while(warunek) wyrażenie repeat wyrażenie
Pętla Warunki zaliczenia Pętlaforjestużywanawtedygdyzgórywiemyilekrokówbędzie konieczne do zakończenia zadania. Określamy to poprzez zmienną licznik, dla której zadajemy zakres zmian. Pętla while polega na tym, że wyrażenie jest wykonywane tak długo dopóki warunek jest prawdziwy, w momencie gdy warunek staje się fałszywy pętla się kończy. Ostatnim rodzajem pętli jest pętla typu repeat. W tym przypadku wyrażenie jest tak długo wykonywane aż gdzieś wewnątrz nakażemy zakończenie pętli za pomocą polecenia break. Jest to jedyna możliwość zakończenia tego typu pętli. Można tej funkcji również używać do wcześniejszego opuszczenia innych pętli. Czasami przydaje się również polecenie next, które przerywa bieżącą iterację i przechodzi do następnej.
Funkcje Warunki zaliczenia Własne funkcje tworzymy następująco nazwa funkcji = function(argumenty) ciało funkcji Tak skonstruowana funkcja może być wywołana za pomocą swojej nazwy, jeśli funkcja nie posiada argumentów wywołujemy ją za pomocą nazwa funkcji(). Jeśli chcemy aby pewne argumenty miały wartości domyślne, to możemy wykorzystać konstrukcję: nazwa funkcji = function(arg1 = wartość) ciało funkcji W przypadku takiej konstrukcji arg1 ma wartość domyślną i jeśli wywołamy funkcję nazwa funkcji(), to zostanie ona wywołana właśnie z takim domyślnym argumentem.
Funkcje Warunki zaliczenia Specjalnym argumentem są, trzy kropki(...). Oznaczają one nieokreśloną liczbę argumentów. Najczęściej jest używany do przekazywania parametrów funkcjom wywoływanym wewnątrz definiowanej funkcji(np. parametrów graficznych). Funkcje możemy tworzyć bezpośrednio w oknie R, jak również za pomocą specjalnego edytora skryptów File/New Script. Skrypty zapisujemy z rozszerzeniem R. W ostatniej linii ciała funkcji zapisujemy, to co funkcja ma zwrócić, możemy do tego użyć instrukcji grupującej(czyli funkcji c). Wszystkie operacje wewnątrz funkcji są lokalne, tzn. zmienne, które tam powstają oraz zmiany wartości zmiennych mają miejsce jedynie wewnątrz funkcji i po jej zakończeniu przywracane są takie wartości jakie zmienne miały przed jej wywołaniem, a zmienne lokalne są kasowane. Jeśli chcemy, żeby tak się nie działo, czyli aby zmiany były przenoszone na zewnątrz funkcji musimy użyć operatora superprzypisania <<-.
Funkcje Warunki zaliczenia Jeśli chcemy, aby nasza funkcja zwracała jednak kilka wartości, a nie wektor, to musimy zgrupować wyniki w listę. Jeśli planujemy zakończyć wykonywanie funkcji wcześniej należy użyć polecenia return.
Podstawowe funkcje matematyczne oraz pomocnicze abs(x) Wartość bezwzględna atan2(y,x) Kąt(wradianach)pomiędzyosiąOXawektoremopoczątkuw punkcie(0,0)ikońcuwpunkcie (x,y). Używanadozamiany współrzędnych z układu kartezjańskiego na biegunowy. ceiling(x) Sufit, czyli najmniejsza liczba całkowita nie mniejsza od x. choose(n, k) Liczba kombinacji k z n, listę tych kombinacji otrzymamy za pomocą funkcji combn(n, k). diff(x) Różnice kolejnych par składowych wektora x exp(x) Funkcja wykładnicza floor(x) Podłoga, czyli największa liczba całkowita nie większa od x. log(x) Logarytm naturalny, istnieją też funkcje log2(x) oraz log10(x), które są odpowiednio logarytmem o podstawie 2 i 10. Ogólna funkcja licząca logarytm o podstawie b, ma postać log(x, b)
Podstawowe funkcje matematyczne oraz pomocnicze min(x), max(x) Minimum, maksimum. Funkcje which.min oraz which.max zwracają numer odpowiedniej obserwacji (pierwszej). Funkcje pmin oraz pmax wywołane dla dwóch wektorów zwracają odpowiednio minimum (maksimum) dla każdej pary. prod(x) Iloczyn elementów, funkcja cumprod(x) daje iloczyn skumulowany round(x) Zaokrąglanie, round(x, n) - zaokrąglanie do n miejsc. Rzaokrągla0.5do0,odwrotnieniżnp. Matlab. sin(x), cos(x), tan(x) Funkcje trygonometryczne asin(x), acos(x), atan(x) Funkcje cyklometryczne (funkcje odwrotne do funkcji trygonometrycznych) sinh(x), cosh(x), tanh(x) Funkcje hiperboliczne asinh(x), acosh(x), atanh(x) Funkcje hiperboliczne odwrotne
Podstawowe funkcje matematyczne oraz pomocnicze sign(x) Znak liczby sqrt(x) Pierwiastek kwadratowy sum(x) Suma elementów, funkcja cumsum(x) daje sumę skumulowaną length(x) Liczba elementów, funkcje nrow oraz ncol podają odpowiednio liczbę wierszy i kolumn print(x) Wyświetla dane rev(x) Odwraca porządek danych sort(x) Sortuje dane(wektor) summary(x) Statystyki danych