Home > Wprowadzenie do R

Wprowadzenie do R

Page 1
Wprowadzenie do R
v 1.1
Artur Suchwaªko, Agnieszka Suchwaªko, Adam Zagda«ski
QuantUp.pl
10.03.2011-11.07.2012

Page 2
Spis tre��ci
1 Wst¦p
3
2 Wprowadzenie
5
2.1 Na pocz¡tek... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
2.2 Wªa��ciwo��ci R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
2.3 Instalacja R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
2.4 Dodatkowe pakiety do R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
3 Pierwszy kontakt z R
10
3.1 R nie jest trudny . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3.2 Pomoc w R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.3 Warto zapami¦ta¢ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.4 Pierwszy kontakt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4 Podstawy R
14
4.1 Proste operacje na danych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 4.2 Obiekty w R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 4.3 Wywoªywanie funkcji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 4.4 Zmienne i operatory logiczne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 4.5 Wektory i operacje na wektorach . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 4.6 Macierze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 4.7 Listy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 4.8 Skrypty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
5 Dane w R
23
5.1 Dane w R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 5.2 Ramki danych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 5.3 Sprawdzenie i konwersja typu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
6 Odczyt i zapis
28
6.1 Klawiatura i ekran . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 6.2 Przykªadowe dane tekstowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 6.3 Dane z plik��w tekstowych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 6.4 Pliki binarne w R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
7 Grafika w R
33
1

Page 3
Materiaªy rmy QuantUp
quantup.pl, quantup.eu
c 2014, Artur Suchwaªko
8 Elementy programowania w R
38
8.1 Instrukcje warunkowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 8.2 P¦tle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 8.3 Pisanie wªasnych funkcji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
9 Elementy statystyki
42
10 Losowanie, zmienne losowe i symulacje
44
11 Przykªadowe sesje z R
46
2

Page 4
1 Wst¦p
Ksi¡»eczka ta uzupeªnienia prowadzone przez nas szkolenia z dziedziny budowy i walidacji modeli scoringowych i predykcyjnych, statystyki, praktycznej analizy danych i data miningu. Naszym celem podczas niekt��rych szkole« nie jest uczenie samego R. R pomaga nam w ucze- niu metod analizy danych. Pomijamy wi¦c szczeg��ªy techniczne i du»o informacji dodatkowych o R. Ograniczaj¡c te informacje do niezb¦dnego minimum podczas szkole« udost¦pniamy gotowe funkcje i skrypty. Pozwala to nawet zapomnie¢, »e pracujemy w pot¦»nym narz¦dziu, jakim jest R. Zalecamy zapoznanie si¦ z tymi materiaªami przed szkoleniami oraz samodzielne prze¢wiczenie podanych przykªad��w. Podczas innych szkole« uczymy jednak, jak analizowa¢ dane w R. Zdecydowali��my, »e chcemy udost¦pni¢ te materiaªy wszystkim zainteresowanym, nie tylko uczestnikom szkole«. System R jest oparty na j¦zyku programowania. Oznacza to, »e bardziej zaawansowani u»yt- kownicy mog¡ nieograniczenie rozwija¢ mo»liwo��ci systemu tworz¡c wªasne metody upraszczaj¡ce wykonywane przez nich analizy danych. Te mo»liwo��ci nie b¦d¡ jednak utrudnia¢ pracy pocz¡t- kuj¡cym u»ytkownikom. Ta grupa u»ytkownik��w mo»e korzysta¢ z systemu po prostu wywoªuj¡c odpowiednie funkcje. Samodzielne nauczenie si¦ R wymaga czasu. Problemami nie nale»y si¦ przejmowa¢, a naj- lepsza jest metoda pr��b i bª¦d��w. Biegªo��¢ przyjdzie z czasem, a mo»liwo��ci j¦zyka R mog¡ spowodowa¢, »e system R stanie si¦ podstawowym narz¦dziem do codziennej pracy z danymi. R zdobywa coraz wi¦ksze uznanie w bankowo��ci i innych instytucjach finansowych. Nawet je��li podstawowe narz¦dzie jest inne, R bardzo cz¦sto stosowany jest jako uzupeªnienie i pomaga w wykonywaniu niestandardowych analiz. Chcesz wiedzie¢, dlaczego warto nauczy¢ si¦ R i z niego korzysta¢? Przeczytaj ten kr��tki tekst:
Dlaczego R? .
W kolejnych rozdziaªach opisane s¡:
Wprowadzenie po»yteczne informacje na temat systemu R, Pierwszy kontakt z R korzystanie z R bez programowania i pierwsze kroki, Podstawy R przegl¡d obiekt��w w R, Dane w R praca z danymi, Odczyt i zapis komunikacja R ze ��wiatem zewn¦trznym, Grafika w R tworzenie grafiki,
3

Page 5
Materiaªy rmy QuantUp
quantup.pl, quantup.eu
c 2014, Artur Suchwaªko
Elementy programowania w R podstawy programowania, Elementy statystyki statystyka opisowa, wykresy statystyczne, Losowanie, zmienne losowe i symulacje jak generowa¢ liczby pseudolosowe, Przykªadowe sesje z R kilka gotowych przykªad��w do samodzielnego prze��ledzenia.
Je��li nie masz czasu, to przeczytaj rozdziaªy: Wprowadzenie, Pierwszy kontakt z R, Dane w R (tylko pobie»nie) i Przykªadowe sesje z R. Je��li chcesz pozna¢ mo»liwo��ci R, to w Internecie znajdziesz naprawd¦ du»o informacji. Liczba ksi¡»ek dotycz¡cych systemu R systematycznie ro��nie. Kilka wymieniamy w spisie literatury. Wyczerpuj¡ce informacje o systemie R mo»na znale¹¢ na stronie domowej projektu: http://
www.r-project.org. W dziale Documentation znajduje si¦ wiele materiaª��w mog¡cych pom��c
w samodzielnej nauce R. Czego nie ma w tym dokumencie, a czego warto si¦ nauczy¢:
operacje na napisach (ªa«cuchach znakowych), operacje macierzowe i algebra macierzowa, wektory indeks��w element��w, wi¦cej o programowaniu, formuªy, NaN i NA, zmienne typu czynnikowego (factor), bardziej zaawansowane operacje na ramkach danych, bardziej zaawansowana grafika, dostosowywanie wygl¡du wykres��w: parametry graficzne, tworzenie pakiet��w.
Je��li chcesz zaoszcz¦dzi¢ czas, ªatwo nauczy¢ si¦ wi¦cej ni» z tej ksi¡»eczki (na przykªad z wymienionych wy»ej temat��w), prze¢wiczy¢ wszystko na komputerze z pomoc¡ do��wiadczonych u»ytkownik��w i programist��w R oraz otrzyma¢ solidne materiaªy i skrypty, to zapraszamy na nasze szkolenia z R. Oferujemy te» szkolenia z analizy danych, statystyki i podobnych dziedzin. Jeste��my fanami (i fankami) R. Wykorzystujemy go od lat w zastosowaniach biznesowych, na- ukowych i dydaktycznych. Jeste��my przekonani, »e polubicie system R, a z jego pomoc¡ analiza danych oraz modelowanie oka»¡ si¦ przyjemniejsze ni» dotychczas.
Ostrze»enie
Czytasz wªa��nie bardzo wczesn¡ i wci¡» robocz¡ wersj¦ tej ksi¡»eczki (v 1.1). Uznali��my jednak, »e mimo to mo»e Ci si¦ ona przyda¢. Przepraszamy za niedor��bki i planujemy aktualizacj¦.
Artur, Agnieszka i Adam
4

Page 6
2 Wprowadzenie
Ten rozdziaª przedstawia specyfik¦ i wyj¡tkowo��¢ systemu R. Opisane s¡ w nim skr��towo mo»li- wo��ci i dziedziny zastosowania systemu R. Bardzo niecierpliwy czytelnik mo»e pomin¡¢ wi¦ksz¡ cz¦��¢ tego rozdziaªu. Tym czytelnikom zalecamy jednak przeczytanie przynajmniej opisu insta- lacji. Po zainstalowaniu R mog¡ oni przej��¢ do przykªad��w umieszczonych w ostatnim rozdziale.
2.1 Na pocz¡tek. . .
Omawiane w tym dokumencie zagadnienia stanowi¡ tylko przegl¡d u»ytecznych lub po prostu potrzebnych zastosowa« pakietu R przez osoby, kt��re nie s¡ biegªymi programistami. Ka»dy z zamieszczonych tu przykªad��w mo»na (czytaj: nale»y ) wykona¢ samodzielnie. Oczywi��cie, trzeba zwr��ci¢ przy tym uwag¦, »e cz¦��¢ polece« nie ma sensu (czyli mo»e nie dziaªa¢), je��li nie zostan¡ wykonane polecenia poprzednie.
2.2 Wªa��ciwo��ci R
Ten zagadkowo zatytuªowany rozdziaª przedstawia wªa��ciwo��ci systemu R takie jak: integralny j¦zyk programowania, obszary, w kt��rych R jest stosowany, opisuje te» mo»liwo��ci systemu.
Historia R i S-PLUS
R bazuje na j¦zyku S. Pierwsza dyskusja z cyklu spotka«, kt��re doprowadziªy do powstania specyfikacji j¦zyka S odbyªa si¦ w maju 1976 roku w grupie pi¦ciu os��b (w��r��d nich byª John Chambers). Byªy problemy z wyborem nazwy. Cz¦sto w akronimach powtarzaªo si¦ S , wi¦c tak¡ nazw¦ wybrano. J¦zyk S jest zaimplementowany w S-PLUS i R. S-PLUS jest komercyjn¡ implementacj¡ j¦zyka S (http://www.tibco.com/). J¦zyk S miaª by¢ opracowany wyª¡cznie dla potrzeb r��»norodnych analiz wykonywanych przez grup¦ statystyk��w z Bell Labs, wa»na byªa zatem elastyczno��¢ i mo»liwo��¢ programowania. Ross Ihaka i Robert Gentleman (nazywani R & R ) napisali pierwsz¡ wersj¦ R w roku 1995 (Auckland, Nowa Zelandia). Zamierzali wykorzystywa¢ ten program do cel��w edukacyjnych. Nazwa R pochodzi od ich inicjaª��w i nawi¡zuje do S . Od 1997 istnieje R Core Team (17 os��b). Zesp��ª ten kieruje rozwojem R oraz bierze aktywny udziaª w rozwijaniu systemu. W grupie tej znajduje si¦ r��wnie» John Chambers, tw��rca S. Udziaª w tworzeniu R bierze wiele os��b, a pakiety / biblioteki tworz¡ u»ytkownicy systemu oraz naukowcy z caªego ��wiata. 5

Page 7
Materiaªy rmy QuantUp
quantup.pl, quantup.eu
c 2014, Artur Suchwaªko
Czym jest R?
R jest ��rodowiskiem, w kt��rym s¡ zaimplementowane metody statystyczne oraz metody analizy i wizualizacji danych. Wªa��nie tak charakteryzuj¡ R jego tw��rcy. Okre��lenie R mianem ��rodo- wiska, w kt��rym s¡ zaimplementowane pewne metody podkre��la uniwersalno��¢ systemu (inaczej R byªby opisywany na przykªad jako ��rodowisko analiz statystycznych). W ponad tysi¡cu pakiet��w dodatkowych udost¦pniona jest wi¦kszo��¢ metod klasycznej i wsp��ª- czesnej statystyki. System R dziaªa praktycznie na wszystkich platformach, a u»ytkownicy mog¡ wybiera¢ mi¦dzy kilkoma opcjonalnymi interfejsami u»ytkownika. System R oraz prawie wszyst- kie jego pakiety dodatkowe s¡ darmowe do wszelkich zastosowa« (licencja GNU GPL). Szczeg��l- nie ch¦tnie jest u»ywany przez naukowc��w j¦zyk R jest standardem dla wsp��ªczesnej statystyki. Autorzy artykuª��w metodologicznych cz¦sto uzupeªniaj¡ je o biblioteki stworzone dla ��rodowiska R. Liczba u»ytkownik��w szacowana nawet na kilkaset tysi¦cy. Popularno��¢ systemu R w Polsce wci¡» ro��nie i jest on coraz cz¦��ciej wykorzystywany w zastosowaniach komercyjnych. Niezmiernie wa»ny jest fakt, »e R jest oparty na j¦zyku programowania. Oznacza to ogromn¡ elastyczno��¢ systemu. ›eby korzysta¢ z R nie trzeba jednak ani by¢ programist¡, ani nawet umie¢ programowa¢.
Co potra R?
R jest bardzo wszechstronnym systemem i dªugo mo»na opowiada¢ o jego mo»liwo��ciach. W zwi¡zku z tym w naszym kr��tkim opracowaniu wyliczymy jedynie jego kluczowe zalety:
- obsªuga danych praktycznie dowolnego rodzaju (np. MySQL, Oracle, ODBC, XML, SAS
transport file),
- ogromna liczba gotowych do u»ycia narz¦dzi statystyki i analizy danych, - ogromne mo»liwo��ci graficzne (grafika w peªni modyfikowalna), - grafika o jako��ci prezentacyjnej (do raport��w, prezentacji i publikacji), - operacje macierzowe (wraz z macierzami rzadkimi), - prosty i efektywny j¦zyk programowania R (w tym elementy programowania obiektowego), - mo»liwo��¢ integracji praktycznie ze wszystkimi j¦zykami programowania i z wieloma innymi
narz¦dziami.
Kto wykorzystuje R?
System R jest wykorzystywany przede wszystkim w ��rodowisku naukowym, biznesie i w naucza- niu. Stopniowo j¦zyk R staª si¦ uniwersalnym j¦zykiem wsp��ªczesnej statystyki. W zastosowaniach biznesowych szczeg��lnie popularny staª si¦ w��r��d ludzi zajmuj¡cych si¦ mo- delowaniem statystycznym i in»ynieri¡ finansow¡. System R ujawnia tak»e ogromne zalety, gdy wykorzystuje si¦ go jako pomoc w nauczaniu statystyki i analizy danych. Wymaga zrozumienia wykonywanej analizy, a z drugiej strony nie jest ogromnym systemem, kt��rego nauka wymaga wielu lat pracy. Kolejny ogromny walor dydaktyczny to dost¦pno��¢ kod��w ¹r��dªowych wszyst- kich metod zaimplementowanych w R. Istniej¡ podr¦czniki do statystyki oparte wyª¡cznie na R. 6

Page 8
Materiaªy rmy QuantUp
quantup.pl, quantup.eu
c 2014, Artur Suchwaªko
Dziedziny zastosowania R
System R mo»e by¢ stosowany wsz¦dzie tam, gdzie pojawia si¦ potrzeba analizy danych, bu- dowy modeli statystycznych i stochastycznych, czy graficznej prezentacji informacji. Wymie«my niekt��re z obszar��w zastosowa«:
ekonometria, finanse, nauki spoªeczne, analiza danych ekologicznych, ankietowych, przestrzennych, analiza szereg��w czasowych, testowanie hipotez (r��wnie» testy dokªadne), modelowanie stochastyczne, wnioskowanie bayesowskie, modele regresyjne, modele mieszane, uczenie maszyn (w tym sieci neuronowe), data mining, statystyka wielowymiarowa (analiza skupie«, klasyfikacja).
Popatrz, kt��re pakiety wykorzysta¢ do jakich analiz: CRAN Task Views.
Specy ka i wyj¡tkowo��¢ R
Przyjrzyjmy si¦ temu, co jest specyficzne dla systemu R i co sprawiaja, »e jest on wyj¡tkowym narz¦dziem.
R jest darmowy do wszelkich zastosowa« (licencja GPL) j¦zyk R: - w przeciwie«stwie do R, systemy statystyczne dostarczaj¡ cz¦sto zamkni¦ty zbi��r metod,
co ogranicza ich zastosowania,
- dzi¦ki j¦zykowi R mo»liwa jest dowolna rozbudowa ��rodowiska. R dziaªa w interaktywnym trybie komend: - narzuca u»ytkownikowi dyscyplin¦ w sposobie wykonywania analiz, - sprzyja wykonywaniu analiz ze zrozumieniem, - procentuje wyksztaªceniem dobrych nawyk��w w analizie danych, - trudniej ni» w innych narz¦dziach jest zrobi¢ w R co��, czego si¦ nie rozumie, - je��li zrobiªo si¦ w R co��, czego si¦ nie rozumie, ªatwiej to p��¹niej zrozumie¢ ni» gdyby��my
pracowali w innych narz¦dziach,
- powszechne u»ywanie skrypt��w, - uzyskiwanie powtarzalnych rezultat��w dzi¦ki skryptom (tzw. reproducible research), - mo»na operowa¢ na wynikach dziaªania metod; to jest pozornie techniczna sprawa, ale
okazuje si¦ wa»na podczas tworzenia wi¦kszych program��w do analizy danych, 7

Page 9
Materiaªy rmy QuantUp
quantup.pl, quantup.eu
c 2014, Artur Suchwaªko
stroma krzywa uczenia: - oznacza to, »e konieczny jest wi¦kszy nakªad pracy (inwestycja) na pocz¡tku ni» w przy-
padku narz¦dzi okienkowych ,
- zyskujemy jednak lepsze i gª¦bsze zrozumienie wykonywanych analiz oraz nieograniczone
mo»liwo��ci uczenia si¦.
podstawowa r��»nica mi¦dzy R i innymi systemami: - R przechowuje wyniki w obiektach, na kt��rych mo»na wykonywa¢ dowolne dalsze opera-
cje,
- wyj��cie na ekran jest ograniczone i R nie zasypuje nas wynikami, je��li tego nie chcemy.
Platformy i gra czne interfejsy u»ytkownika
System R jest dost¦pny na praktycznie wszystkie platformy (mo»liwe jest nawet uruchomienie R na PocketPC). Nale»¡ do nich oczywi��cie: Windows, Linux, MacOS. Na platformie linuksowej system R dziaªa zauwa»alnie szybciej. System R posiada graficzny interfejs u»ytkownika o dosy¢ ograniczonych mo»liwo��ciach (tylko na platformie Windows). Dla wi¦kszo��ci u»ytkownik��w nie jest to przeszkod¡ (po czasie potrzebnym na przyzwyczajenie si¦). Pozostali u»ytkownicy mog¡ skorzysta¢ z wielu dost¦pnych nakªadek graficznych na R:
RStudio (http://www.rstudio.com/ide/download/), RCommander (http://socserv.mcmaster.ca/jfox/Misc/Rcmdr/), Jaguar (http://rosuda.org/JGR/), TINN-R (http://www.sciviews.org/Tinn-R/), Emacs (Emacs Speaks Statistics) (http://ess.r-project.org/).
Programowanie w R
R bazuje na kompletnym, wygodnym i efektywnym j¦zyku programowania. Praktycznie wszyst- kie pakiety dost¦pne s¡ w postaci kod��w ¹r��dªowych. Istnieje sporo ksi¡»ek po��wi¦conych pro- gramowaniu w j¦zyku S i R. Nie b¦dziemy po��wi¦ca¢ programowaniu w R du»ej uwagi, ale mo»liwo��ci dla programist��w R s¡ wr¦cz nieograniczone. Mo»liwa jest te» integracja z C, C++, czy Fortranem. Kody w C mog¡ korzysta¢ bezpo��rednio z obiekt��w R. Dzi¦ki serwerowi i klientowi (D)COM (platforma Windows) mo»liwa jest integracja R ze wszystkimi j¦zykami programowania oraz na przykªad z oprogramowaniem Microsoft Office.
2.3 Instalacja R
Instrukcja instalacji napisana zostaªa wyª¡cznie dla u»ytkownik��w systemu Windows, u»ytkow- nicy Linux'a sami sobie poradz¡, a u»ytkownicy MacOS przywykli, »e si¦ ich zazwyczaj pomija. Wymagania sprz¦towe i programowe dla R s¡ naprawd¦ minimalne, w zasadzie dziaªa na ka»dym komputerze: 8

Page 10
Materiaªy rmy QuantUp
quantup.pl, quantup.eu
c 2014, Artur Suchwaªko
Windows 95 lub nowszy, obsªuga dªugich nazw plik��w, przynajmniej 18 MB miejsca na dysku.
Oto kr��tki opis sposobu instalacji systemu R dla Windows:
Pobieramy plik instalacyjny: http://www.r-project.org �� CRAN �� Wyb��r mirrora ��
Download R for Windows �� base �� Download R 3.0.3 for Windows
Instalacja: uruchomienie ��ci¡gni¦tego pliku Zalecamy zmian¦ podczas instalacji j¦zyka komunikat��w R na angielski. Dzi¦ki temu b¦dzie
mo»na du»o ªatwiej znale¹¢ pomoc, je��li pojawi¡ si¦ komunikaty o bª¦dach.
Uruchomienie: menu Windows Start Instalacja dodatkowych pakiet��w: menu Packages �� Install package(s)... (mo»na te»
instalowa¢ pakiety z plik��w lokalnych)
Aktualizacja pakiet��w: menu Packages �� Update packages. . . Podstawowe komendy: q(), help(), help.start()
Mo»na zainstalowa¢ R na CD lub pami¦ci USB (PenDrive) po prostu przenosz¡c instalacj¦ z dysku twardego. System R nie zapisuje nic w rejestrach systemowych, instalacj¦ mo»na przenosi¢ wi¦c bez ogranicze«.
2.4 Dodatkowe pakiety do R
Po zainstalowaniu R mamy do dyspozycji ju» spore mo»liwo��ci, poniewa» dostarczany jest on z kilkudziesi¦cioma podstawowymi pakietami. To jest dopiero pocz¡tek. O prawdziwej pot¦dze R decyduj¡ dodatkowe pakiety, kt��re mo»na w miar¦ potrzeb zainstalowa¢. Ile jest pakiet��w, tego dokªadnie nikt nie wie, ale wiadomo, »e liczba oficjalnie dystrybuowanych bibliotek przekracza
4.000 (maj 2012). Poza oficjaln¡ dystrybucj¡ istnieje wiele specjalizowanych pakiet��w, kt��re nie
uzyskaªy tak du»ej popularno��ci. Instalacja pakiet��w jest ªatwa. Aby zainstalowa¢ dodatkowy pakiet nale»y wybra¢ z menu Pac-
kages opcj¦ Install package(s). . .. Przy instalacji R zapyta z jakiego serwera chcemy skorzy-
stac (mo»na wybra¢ dowolny, ale najlepiej zdecydowa¢ si¦ na poªo»ony w Polsce lub niedaleko), a nastepnie wyswietli liste pakiet��w gotowych do zainstalowania. Wystarczy wybra¢ pakiety i klikn¡¢ OK. Automatycznie zostan¡ zainstalowane pakiety, kt��re s¡ niezb¦dne do poprawnego dziaªania wybranego przez nas pakietu, tzw. dependencies czyli zale»no��ci . Bardziej zaawansowani u»ytkownicy lub osoby, kt��re nie korzystaj¡ z GUI (na przykªad pracuj¡cy pod Linuxem) mog¡ posªu»y¢ si¦ nast¦puj¡c¡ komend¡ do uzyskania identycznego efektu:
install.packages(nazwa.pakietu, dependencies=T)
Je��li chcemy korzysta¢ z pakietu, to po zainstalowaniu trzeba go zaªadowa¢. Do tego celu sªu»y polecenie:
library(nazwa.pakietu)
Nazwa polecenia jest nieco myl¡ca, ale wªa��ciwie ka»dy pakiet jest r��wnie» w sensie programi- stycznym bibliotek¡, wi¦c trzeba po prostu do tego przywykn¡¢. 9

Page 11
3 Pierwszy kontakt z R
Ten rozdziaª przedstawia, jak korzysta¢ z systemu R bez programowania. Nawet najbardziej niecierpliwy czytelnik powinien zapozna¢ si¦ z tym rozdziaªem.
3.1 R nie jest trudny
Maj¡c kontakt z R po raz pierwszy mo»na pomy��le¢, »e jest on programem niezbyt przyjaznym i bardzo trudnym do nauczenia si¦. Opanowanie podstaw R nie jest jednak trudne. Wªa��nie o tym chcieliby��my przekona¢ czytelnik��w w tym rozdziale. Oczywi��cie, aby zosta¢ ekspertem systemu R potrzeba du»o praktyki i sporo czasu sp¦dzonego przed komputerem.
Przykªad na pocz¡tek
Zaczniemy od klasycznego przykªadu: budowa modelu regresji liniowej. W wielu pakietach staty- stycznych model regresyjny buduje si¦ kilkoma lub kilkunastoma klikni¦ciami. W R wymaganych jest zaledwie kilka prostych polece«.
# wczytanie biblioteki
library(MASS)
# wczytanie danych
data(iris)
# budowa modelu regresyjnego
model.reg <- lm(Petal.Length~Sepal.Length, data=iris)
# tak wyglada model
summary(model.reg)
# zestaw wykresow diagnostycznych
plot(model.reg)
Zwr��¢my uwag¦ na rozbudowany zestaw wykres��w diagnostycznych Siªa systemu R objawi si¦ podczas wykonywania skomplikowanych analiz oraz podczas ich auto- matyzacji. Konieczno��¢ wykonania skomplikowanej obr��bki wst¦pnej danych ujawni mo»liwo��ci systemu R. 10

Page 12
Materiaªy rmy QuantUp
quantup.pl, quantup.eu
c 2014, Artur Suchwaªko
Ilustracja mo»liwo��ci gra cznych
Grafice w R po��wi¦cona jest ��wietna ksi¡»ka P. Murrela [6] oraz interesuj¡ca strona internetowa [7]. Jednak najprostszym sposobem na zapoznanie si¦ z mo»liwo��ciami systemu R jest przyjrzenie si¦ tworzonym przez niego wykresom. Do tego wystarczy jedna instrukcja:
demo(graphics) # polecenie uruchamia demonstracje mozliwosci graficznych
3.2 Pomoc w R
Jest bardzo wiele sposob��w uzyskiwania pomocy dotycz¡cej systemu R. Przedstawiamy skr��towo niekt��re z nich. Pomoc na temat konkretnej funkcji:
help( nazwa ) help(nazwa) ?nazwa
Pomoc w formacie HTML:
help.start()
Zawansowane wyszukiwanie (mo»na korzysta¢ z wyszukiwania przybli»onego i z wyra»e« regu- larnych)
help.search()
Przykªadowe zastosowanie funkcji
example(nazwa)
Pakiet, w kt��rym dost¦pna jest dana funkcja
find(nazwa)
Z pewno��ci¡ na szczeg��ln¡ uwag¦ zasªuguje system pomocy w HTML uruchamiany instrukcj¡ help.start() i pojawiaj¡cy si¦ po chwili w przegl¡darce internetowej. Wyszukiwanie informacji na temat R w Internecie mo»e sprawia¢ trudno��¢, poniewa» nazwa systemu jest jednoliterowa. Rozwi¡zaniem jest wykorzystywanie dedykowanej R wyszukiwarki RSeek (http://www.rseek.org).
3.3 Warto zapami¦ta¢
Poni»ej wymieniamy wa»ne informacje praktyczne: uªatwienia w korzystaniu z R, wybrane wa»ne polecenia R oraz opisujemy wszystkie opcje menu programu. 11

Page 13
Materiaªy rmy QuantUp
quantup.pl, quantup.eu
c 2014, Artur Suchwaªko
Uªatwienia w korzystaniu z R
strzaªka w g��r¦ przywoªywanie wykonanych wcze��niej komend, CTRL + L czyszczenie ekranu, ustawianie katalogu roboczego polecenie setwd() lub Change dir... z menu File , mo»na zapisa¢ histori¦ pracy (menu File , opcja Save history ), mo»na zapisa¢ tak zwan¡ przestrze« robocz¡ (workspace); dzi¦ki temu mo»emy przerwa¢ ana-
liz¦ i nic nie trac¡c powr��ci¢ do niej w innym momencie (menu File , opcja Save work- space ),
praca ze skryptami, uruchamianie skrypt��w.
Wa»ne polecenia R
Poni»ej wymieniamy naszym zdaniem najwa»niejsze polecenia systemu R.
help() wywoªuje pomoc, q() zamykamy R, library(nazwa) wczytanie pakietu o wskazanej nazwie, data(nazwa) wczytanie zbioru danych, search() ��cie»ka poszukiwa« R (r��wnie» lista zaªadowanych pakiet��w), ls(), ls(2) dost¦pne obiekty , getwd(), setwd() ustawienie i sprawdzenie katalogu roboczego, source("skrypt.R") wczytanie kodu R z pliku,
history() przejrzenie historii wykonanych polece«.
Po»yteczne funkcje dost¦pne z menu
Poni»ej prezentujemy przegl¡d mo»liwo��ci graficznego menu systemu R dost¦pnego dla platformy Windows. Nie jest ono zbyt rozbudowane, ale funkcje s¡ przydatne i warto pozna¢ wszystkie mo»liwo��ci dost¦pne z menu. 12

Page 14
Materiaªy rmy QuantUp
quantup.pl, quantup.eu
c 2014, Artur Suchwaªko
Zakªadka Opcja Dziaªanie
File Source R code wczytanie kodu ¹r��dªowego Load workspace / Save workspace odczyt / zapis przestrzeni roboczej Load history / Save history odczyt / zapis historii Change dir zmiana katalogu roboczego Exit wyj��cie z R Edit GUI preferences preferencje Misc Remove all objects usuni¦cie wszystkich obiekt��w Packages Load package wczytywanie pakiet��w Install package(s) instalowanie pakiet��w z repozytorium Update packages automatyczna aktualizacja pakiet��w Install packages from local zip files instalacja pakiet��w z lokalnych plik��w zip Help FAQ on R najcz¦��ciej zadawane pytania FAQ on R for Windows najcz¦��ciej zadawane pytania (R dla Win- dows) Manuals (in PDF) podr¦czniki Html help pomoc w formacie html Search help przeszukiwanie pomocy
3.4 Pierwszy kontakt
Proponujemy zobaczy¢, jaki b¦dzie rezultat wprowadzenia do R poni»ej wypisanych komend. Ilustruj¡ one najbardziej podstawowe wªa��ciwo��ci R: obliczenia, zmienne oraz prac¦ z obiektami w pami¦ci R.
Podstawowe polecenia
2 + 2
suma
exp(2)
e2
rnorm(10)
pr��ba dziesi¦cioelementowa z rozkªadu normalnego
x <-2
przypisanie, r��wnawa»ne zapisowi x = 2
x + 3
5, ale wynik nie zostanie nigdzie zapisany
napis <-"to jest napis" ªa«cuch znak��w
objects()
wypisuje obiekty przechowywane aktualnie w pami¦ci
ls()
to samo co objects()
rm(x)
usuni¦cie obiektu x 13

Page 15
4 Podstawy R
Korzystanie w zakresie podstawowym z systemu R nie wymaga du»ej znajomo��ci j¦zyka R. S¡ jednak pewne wa»ne elementy, o kt��rych warto wspomnie¢. Nale»¡ do nich operacje na wek- torach, macierzach i indeksach. Posiadanie takiej wiedzy uªatwi zrozumienie dziaªania systemu oraz dalsz¡ nauk¦. W tym rozdziale przedstawiamy podstawowe zasady pracy z R, troch¦ wska- z��wek praktycznych oraz elementarne informacje o wykorzystywanych przez R obiektach. Ponad 90% czynno��ci wykonywanych podczas analizy danych przez pocz¡tkuj¡cego u»ytkow- nika R b¦dzie sprowadzaªo si¦ do operacji na ramkach danych (data.frame). Dlatego wªa��nie te obiekty uznajemy za najwa»niejsze. Niecierpliwy czytelnik mo»e pomin¡¢ ten rozdziaª i przej��¢ do rozdziaªu dotycz¡cego ramek da- nych. Serdecznie zach¦camy jednak do zapoznania si¦ z tym kr��tkim rozdziaªem w caªo��ci. Uªatwi to dalsz¡ nauk¦ i zapewni zrozumienie tego, co si¦ robi.
4.1 Proste operacje na danych
Na pocz¡tek podajemy kilka najbardziej podstawowych operacji na ramkach danych. Dla lep- szego zrozumienia rozdziaªu po��wi¦conego danym zach¦camy do przeczytania fragment��w po- ��wi¦conych obiektom i podstawom pracy z R. Bez znajomo��ci tych kwestii trudno b¦dzie wyko- nywa¢ bardziej zaawansowane operacje na danych.
# wczytujemy przykªadowe dane
library(MASS) data(Cars93) edit(Cars93) # ogl adamy dane dim(Cars93) # wielkosc zbioru danych names(dane) # lista zmiennych
Cars93$Price # dostep do zmiennej Cars93[17,5] # dostep do pojedynczych elementow Cars93[,5] # dostep do kolumn danych Cars93[17,] # dostep do wierszy danych
14

Page 16
Materiaªy rmy QuantUp
quantup.pl, quantup.eu
c 2014, Artur Suchwaªko
4.2 Obiekty w R
W R wszystko jest obiektem. Ka»dy obiekt ma swoje wªa��ciwo��ci. Obiekty w pakiecie R to:
tablice liczb (liczba jest tablic¡ jednoelementow¡), tablice znak��w, funkcje, bardziej zªo»one struktury danych, na przykªad modele statystyczne albo dane, kt��re analizu-
jemy (te struktury zbudowane s¡ z powy»szych element��w). Przestrze« robocza (workspace), to zbi��r aktualnie przechowywanych obiekt��w. Dodatkowa zalet¡ jest mo»liwo��¢ zapisania przestrzeni roboczej, dzi¦ki czemu ªatwo b¦dzie mo»na wr��ci¢ do przerwanej analizy. R odr��»nia du»e i maªe litery. Mo»na nazwa¢ zmienne u»ywaj¡c kropki wewn¡trz nazwy: taka.nazwa.zmiennej .
Funkcje obsªuguj¡ce cechy obiekt��w
class()
klasa (rodzaj) obiektu, dodatkowy atrybut uzupeªniaj¡cy mode ,
length()
dªugo��¢ obiektu,
attributes()
atrybuty obiektu,
attr()
dost¦p do atrybut��w obiektu,
object.size() wielko��¢ obiektu w bajtach,
mode()
wewn¦trzna reprezentacja obiektu,
str()
szczeg��ªy wewn¦trznej reprezentacji obiektu.
4.3 Wywoªywanie funkcji
W du»ej mierze analiza danych b¦dzie sprowadzaªa si¦ do wywoªywania gotowych funkcji. W systemie R wywoªania funkcji s¡ specyficzne: pozwalaj¡ nazywa¢ argumenty, zmienia¢ ich ko- lejno��¢ i korzysta¢ z parametr��w domy��lnych. Przedstawimy te wªasno��ci na podstawie funkcji seq , kt��ra tworzy wektor skªadaj¡cy si¦ z r��wnoodlegªych liczb. Kolejnym wa»n¡ cech¡ jest to, »e funkcje w R s¡ przeci¡»one (polimorficzne). Oznacza to, »e pewne funkcje (na przykªad print, summary, czy plot) mog¡ by¢ wywoªywane dla r��»nych obiek- t��w: ramek danych, wektor��w, tablic kontyngencji, a nawet zbudowanych modeli statystycznych. Dzi¦ki temu zapami¦tanie podstawowych funkcji jest ªatwiejsze.
Przykªad
?seq
pomoc na temat funkcji seq
seq(1,5)
liczby od 1 do 5 (krok r��wny 1)
seq(1,5,by=0.5)
liczby od 1 do 5 z krokiem 0.5
seq(by=0.5,to=5,from=1) wynik identyczny jak poprzednio, ale inna kolejno��¢ parame-
tr��w wej��ciowych funkcji
seq()
wywoªanie funkcji z parametrami domy��lnymi Ciekawostka: wywoªanie: args(seq.default) zwraca list¦ argument��w przyjmowanych przez funkcj¦ seq.default . args() jest r��wnie» funkcj¡. 15

Page 17
Materiaªy rmy QuantUp
quantup.pl, quantup.eu
c 2014, Artur Suchwaªko
4.4 Zmienne i operatory logiczne
TRUE (T)
warto��¢ liczbowa == 1
FALSE (F)
warto��¢ liczbowa == 0
NA ( not available )
kod brakuj¡cej obserwacji wa»ne w statystyce
NaN ( Not a Number ) wyra»enie nie jest warto��ci¡ liczbow¡ np. dzielenie przez zero x<y
prawda je��li x mniejsze od y
x<=y
prawda je��li x mniejsze lub r��wne y
x>y
prawda je��li x wi¦ksze od y
x>=y
prawda je��li x wi¦ksze lub r��wne y
x==y
prawda je��li x r��wne y
x!=y
prawda je��li x r��»ne od y
&
logiczny and
|
logiczny or
!A
negacja wyra»enia logicznego A
Przykªad
x <- TRUE
# zmienna x = 1
y <- x & T # zmienna y = 1 z <- x & F # zmienna z = 0
4.5 Wektory i operacje na wektorach
Wektory sªu»¡ do zapisywania liczb, ale mog¡ tak»e przechowywa¢ inne, dowolne, obiekty. W wektorze mo»e by¢ na przykªad zapisany wiek pewnej liczby os��b. Mo»liwe s¡ praktycznie wszystkie operacje arytmetyczne oraz logiczne na wektorach. Oto przykªady: 16

Page 18
Materiaªy rmy QuantUp
quantup.pl, quantup.eu
c 2014, Artur Suchwaªko
w <-c(1,2,3)
w jest wektorem o elementach 1, 2 i 3
c(1,2,3)-> w
to samo
w <-1:3
to samo
w = 1:3
to samo
length(w)
zwraca ilo��¢ element��w wektora w
sin(w)
liczy sinus dla wszystkich element��w wektora
min(w)
znajduje najmniejszy element wektora w i zwraca go
max(w)
znajduje najwi¦kszy element wektora w i zwraca go
sum(w)
sumuje wszystkie elementy wektora w i zwraca wynik
prod(w)
mno»y wszystkie elementy wektora w i zwraca wynik
w.l <-c(T,T,F)
wektor w.l skªada si¦ z element��w 1, 1, 0
w.t <-c("jeden","dwa","trzy")
wektor w.t to wektor zawieraj¡cy ªa«cuchy znakowe
sort(w.t)
poniewa» sortujemy ªa«cuchy, wi¦c porz¡dek jest leksykograficzny (czyli alfabetyczny)
length(w.t)
wektor ma trzy elementy
w.t[2]
tak dostajemy si¦ do drugiego elementu wek- tora w.t ; nale»y pami¦ta¢, »e R numeruje od 1!!!
w.t[c(3,2)]
zwr��cone zostan¡ elementy wektora w.t znajduj¡ce si¦ na pozycjach b¦d¡cych skªa- dowymi wektora z nawias��w kwadratowych, czyli: trzy , dwa
zakupy<-c(ser = 3, woda = 5, chleb = 1) utworzony zostaª wektor z nazwanymi ele-
mentami, takie wektory lub listy cz¦sto s¡ zwracane jako wyniki dziaªania wbudowa- nych funkcji R.
Operacje na wektorach warto��ci logicznych
Wektory warto��ci logicznych b¦d¡ przydatne podczas wybierania podzbior��w ze zbior��w danych. To b¦dzie nasze podstawowe zastosowanie dla tego rodzaju obiekt��w. Wydawa¢ by si¦ mogªo, »e to sprawa bardzo techniczna, ale warto prze¢wiczy¢ i zrozumie¢, jak pracowa¢ na wektorach warto��ci logicznych.
Funkcja Dziaªanie
TRUE, FALSE warto��ci logiczne &
operator and
|
operator or
==
por��wnanie
any
czy przynajmniej jedna warto��¢ wektora to TRUE
all
czy wszystkie warto��ci wektora to TRUE
which
indeksy element��w, w kt��rych jest TRUE Jest du»a r��»nica mi¦dzy operatorami logicznymi & i && dla wektor��w warto��ci logicznych. Rezultatem dziaªania pierwszego z nich jest wektor, a operacje wykonywane s¡ dla kolejnych 17

Page 19
Materiaªy rmy QuantUp
quantup.pl, quantup.eu
c 2014, Artur Suchwaªko
element��w przekazanych wektor��w i umieszczane w kolejnych elementach wektora wynikowego. Drugi z operator��w w wyniku daje tylko jedn¡ warto��¢ logiczn¡. Dziaªanie innych operator��w logicznych jest analogiczne. Najlepiej zrozumie¢ r��»nic¦ analizuj¡c poni»szy przykªad.
> a <- c(T,T,F); b <- c(T,F,T) > a&b [1] TRUE FALSE FALSE # wynikiem jest caly wektor > a&&b [1] TRUE # w wyniku dostajemy tylko jedna wartosc logiczna >
Podsumowanie operacji na wektorach
Funkcja Dziaªanie
vector
tworzenie wektora
c
tworzenie wektora z podanych element��w
:, seq
tworzenie ci¡g��w
rep
powielanie wektora
length
dªugo��¢ wektora
[ ]
pobieranie i zmiana element��w wektora
+,-,*,/,<, <=, sin operacje na wektorach sort
sortowanie wektora (tak»e z indeksem)
rev
zmiana kolejno��ci element��w wektora
sum, cumsum
suma element��w wektora
prod, cumprod
iloczyn element��w wektora
max, min
najwi¦kszy i najmniejszy element wektora
which.max
indeks najwi¦kszego elementu wektora
Wa»ny przykªad wektoryzacja operacji
To jest naprawd¦ wa»ny przykªad. Wi¦kszo��¢ operacji na wektorach albo macierzach mo»e by¢ wykonywana tak, jak na liczbach. Mo»emy na przykªad dodawa¢ albo odejmowa¢ caªe wektory. To jest wªa��nie tytuªowa wektoryzacja operacji . Zalecamy taki spos��b pracy na wektorach. Podstawowe korzy��ci s¡ dwie: zapis jest bardziej czytelny oraz tak napisane polecenia wykony- wane s¡ szybciej ni» jakby zapisa¢ je przy wykorzystaniu p¦tli. Uwaga dla czytelnik��w maj¡cych jakiekolwiek do��wiadczenie programistyczne: R jest j¦zykiem interpretowanym, a nie kompilowanym, wobec tego p¦tle wykonywane s¡ krok po kroku, a ope- racje na caªych wektorach wykonywane s¡ bezpo��rednio przez kod w C, w kt��rym napisany jest R. W poni»szym przykªadzie wyznaczymy dla ilustracji operacji wektorowych indeks BMI (Body- Mass Index) dla fikcyjnych danych dotycz¡cych kilku os��b. P��¹niej wyznaczymy dla wagi jej ��redni¡ i odchylenie standardowe z pomoc¡ elementarnych operacji na wektorach. Wyniki po- r��wnamy z rezultatami uzyskanymi z pomoc¡ wbudowanych funkcji mean i sd . 18

Page 20
Materiaªy rmy QuantUp
quantup.pl, quantup.eu
c 2014, Artur Suchwaªko
waga <-c(60,72,57,90,95)
tworzony jest wektor warto��ci licz- bowych
waga
wypisanie zawarto��ci wektora na ekran
wzrost <-c(1.72,1.80,1.65,1.90,1.74)
kolejny wektor warto��ci
wzrost
wypisanie zawarto��ci wektora
bmi <-waga /wzrost^2
deklaracja wektora bmi i przypi- sanie do niego warto��ci b¦d¡cych wynikiem operacji na dw��ch przed chwil¡ utworzonych wektorach
bmi
wypisanie zawarto��ci na ekran
sum(waga)
suma element��w wektora waga
sum(waga)/length(waga)
suma element��w wektora waga podzielona przez liczb¦ element��w tego wektora
sr.waga <-sum(waga)/length(waga)
jak wy»ej, ale przypisanie wyliczo- nej warto��ci do zmiennnej sr.waga (��radnia waga)
waga - sr.waga
wektor odchyle« od ��redniej dla wektora waga
(waga - sr.waga)^2
wektor kwadrat��w odchyle« dla wektora waga
sum((waga - sr.waga)^2)
suma kwadrat��w odchyle«
sqrt(sum((waga - sr.waga)^2)/(length(waga)- 1)) odchylenie standardowe wektora
waga
mean(waga)
��rednia wektora waga
sd(waga)
odchylenie standardowe (identyczna warto��¢ otrzymana zostaªa dwie li- nie wy»ej)
summary(waga)
podsumowanie dla wektora waga (minimum, maksimum, ��rednia, kwantyle)
bmi > 25
wynikiem dziaªania polecenia jest wektor o dªugo��ci takiej, jak wek- tor bmi i warto��ciach logicznych b¦d¡cych wynikiem dziaªania wa- runku na poszczeg��lne elementy wektora bmi
4.6 Macierze
Macierze wykorzystywane s¡ w bardzo wielu dziedzinach matematyki (przykªad: odwzorowania liniowe) i statystyki (przykªady: macierz kowariancji, macierz eksperymentu, wspolczynniki ma- cierzowe modeli statystycznych). Trudno w zwi¡zku z tym wyobrazi¢ sobie analiz¦ danych bez operacji macierzowych. Oczywi��cie, typowy pocz¡tkuj¡cy u»ytkownik z takich operacji korzystaª nie b¦dzie bezpo��rednio. Warto jednak wiedzie¢, »e ramki danych (o kt��rych wi¦cej powiemy p��¹niej) cz¦sto zachowuj¡ si¦ tak, jak macierze. 19

Page 21
Materiaªy rmy QuantUp
quantup.pl, quantup.eu
c 2014, Artur Suchwaªko
Poni»ej przedstawiamy podstawowe operacje macierzowe.
a <-matrix(1,4,3)
macierz 4��3 wypeªniona je- dynkami
a[1,2]
pobieranie elementu z pierwszego wiersza i drugiej kolumny
a[,2]
druga kolumna macierzy
a[1,]
piewszy wiersz macierzy
a %*%t(a)
mno»enie macierzowe ma- cierzy a i jej macierzy transponowanej
a.1<-solve(a)
odwr��cenie macierzy a i zapisanie macierzy odwrot- nej w zmiennej a.1
a *a.1
mno»enie macierzy element po elemencie
diag(a)
przek¡tna macierzy a
rbind(c(1,2),c(3,4))
tworzenie macierzy przez podanie jej kolejnych wier- szy jako wektor��w
cbind(c(1,2),c(3,4))
tworzenie macierzy przez podanie jej kolejnych ko- lumn jako wektor��w,
m <-matrix(1:9,3)
tworzona jest macierz o trzech wierszach, wypeª- niona elementami od 1 do 9,
dimnames(m)<-list(c("x1","x2","x3"),c("y1","y2","y3")) nadane zostan¡ nazwy:
wierszom x1 , x2 , x3 , a kolumnom y1 , y2 , y3 ,
m["x2","y3"]
teraz w inny spos��b mo»na si¦ dosta¢ do potrzebnych element��w 20

Page 22
Materiaªy rmy QuantUp
quantup.pl, quantup.eu
c 2014, Artur Suchwaªko
Macierze podsumowanie
Funkcja Dziaªanie
matrix
tworzenie macierzy
rbind
ª¡czenie macierzy wierszami
cbind
ª¡czenie macierzy kolumnami
dim
wymiar macierzy
dimnames
nazwy wymiar��w macierzy
t
transpozycja
[ ]
pobieranie i zmiana element��w macierzy
+,-,*,/,<,<=, sin operacje na macierzach sum
suma element��w macierzy
colSums, rowSums
sumy element��w w kolumnach i wierszach
%*%, solve
mno»enie macierzowe i odwracanie macierzy
diag
przek¡tna lub tworzenie macierzy przek¡tniowej
apply
automatyzacja operacji na macierzy
4.7 Listy
Lista jest obiektem zawieraj¡cym obiekty dowolnych typ��w. Elementy listy mog¡ posiada¢ na- zwy. Listy cz¦sto wykorzystywane s¡ przez funkcje do zwracania wynik��w. Ramka danych (wa»ny typ danych) te» jest list¡!
Przykªad
student <-list(imie="Jan", wiek=22, zonaty=F) zmienna student jest obiektem typu
lista
student$imie
zwr��ci Jan ; do skªadowych zmiennej student odwoªujemy si¦ przy pomocy znaku $
student$wiek
analogicznie
student$zonaty
analogicznie
student[[1]]
dziaªa identycznie jak student$imie
lista <-c(list(1,2,3),list(4,5,6))
przykªad ª¡czenia dw��ch list
lapply(lista,mean)
na ka»dy element listy lista zostanie naªo»ona funkcja mean
Listy podsumowanie
Funkcja Dziaªanie
list
tworzenie listy
c
tworzenie listy z podanych element��w / ª¡czenie list
length
dªugo��¢ listy
[ ], [[ ]] dost¦p do element��w lapply
automatyzacja operacji na listach 21

Page 23
Materiaªy rmy QuantUp
quantup.pl, quantup.eu
c 2014, Artur Suchwaªko
4.8 Skrypty
Analiza danych w R w du»ej mierze polega na programowaniu. Nie jest to programowanie za- awansowane, ale przy okazji ka»dej analizy u»ytkownik R pisze sekwencj¦ instrukcji, kt��re analiz¦ wykonuj¡. Zapisanie tych instrukcji do pliku tekstowego umo»liwi powt��rzenie analizy albo uªatwi wykona- nie tej samej analizy na innych danych. Instrukcje z takiego pliku tekstowego mo»na wkleja¢ do R za po��rednictwem schowka. Druga opcja to wykorzystanie polecenia Source w menu File systemu R. Kolejna opcja to wykorzystanie instrukcji source(nazwa.pliku) Ka»dy u»ytkownik systemu R pr¦dzej czy p��¹niej poczuje potrzeb¦ tworzenia wªasnych skryp- t��w wykonuj¡cych czy automatyzuj¡cych analizy danych. Mo»na pisa¢ je w dowolnym edytorze tekstowym, system R posiada wªasny, prosty edytor. My polecamy jednak Notepad++ (http:
//http://notepad-plus-plus.org/) Crimson Editor (http://www.crimsoneditor.com) albo
Tinn-R (http://www.sciviews.org/Tinn-R/) dla OS Windows. Wszystkie te edytory wspo- mniane potrafi¡ pod��wietla¢ skªadni¦ j¦zyka R, co zdecydowanie upraszcza prac¦. Tinn-R do- datkowo potrafi wysyªa¢ kod do R, posiada kilka innych naprawd¦ interesuj¡cych mo»liwo��ci. Wszystkie narz¦dzia s¡ darmowe. U»ytkownicy innych sytem��w raczej nie b¦d¡ mieli trudno��ci z odnalezieniem odpowiedniego dla siebie edytora, dla Linuxa polecamy jednak edytor Kate (http://kate-editor.org/). Programi��ci mog¡ korzysta¢ z dodatku StatET do Eclipse (http://www.walware.de/goto/
statet).
22

Page 24
5 Dane w R
5.1 Dane w R
Wczytywanie danych do R w praktycznie dowolnej postaci, tekstowej czy binarnej, nie stanowi problemu. Stosunkowo ªatwo jest wczyta¢ nawet bardzo specyficzne dane. Obsªuga danych w R jest wyj¡tkowo prosta i dodatkowo R radzi sobie z brakami danych. Szczeg��lnie przydatn¡ i wart¡ zapami¦tania jest funkcja read.table. Rozpoczniemy jednak od pracy z danymi wbudowanymi oraz przedstawienia najprostszych operacji na tych danych.
Przykªad
data(iris)
ten zestaw danych jest wbudowany w R; polecenie ªaduje zestaw danych do pami¦ci i pozwala z tych danych korzysta¢
dane <-iris
w ten spos��b zestaw danych iris zostaª przypisany do zmiennej dane
head(dane)
wy��wietla pi¦¢ pierwszych element��w zbioru dane
summary(dane)
wy��wietla minimum, maksimum, ��redni¡ i kwantyle dla ka»dej kolumny
row.names(dane) wy��wietla nazwy wierszy, w tym przypadku s¡ to numery
dim(dane)
zwraca wymiar, w tym przypadku 150 �� 5
class(zmienna)
klasa, jak¡ reprezentuje obiekt; wa»ne w programowaniu obiektowym
5.2 Ramki danych
Ramka danych (data.frame) jest podstawowym obiektem, z kt��rego b¦dziemy korzysta¢ pracuj¡c z R. Dla wielu u»ytkownik��w mo»e to by¢ jedyny rodzaj obiekt��w, kt��ry b¦d¡ wykorzystywa¢. Ramka danych skªada si¦ ze zmiennych (kolumny) i przypadk��w (wiersze). Proponujemy naj- pierw wczyta¢ przykªadowe dane wbudowane:
library(MASS) data(Cars93)
oraz obejrze¢ dane w nast¦puj¡cy spos��b:
edit(Cars93)
Podstawowe operacje, czyli wyb��r zmiennych, wyb��r przypadk��w oraz poszczeg��lnych element��w zostan¡ opisane w tym rozdziale.
Wa»ne: ramka danych zachowuje si¦ jak macierz.
Ramki danych (data.frame) s¡ wykorzystywane do reprezentacji typowych tabel (arkuszy) zawieraj¡cych dane. Ramka danych jest tablic¡ dwuwymiarow¡, w kt��rej dane w okre��lonej kolumnie s¡ tego samego typu, ale r��»ne kolumny mog¡ zawiera¢ dane r��»nych typ��w. Ramki 23

Page 25
Materiaªy rmy QuantUp
quantup.pl, quantup.eu
c 2014, Artur Suchwaªko
danych obsªuguj¡ r��»ne typy zmiennych: ci¡gªe, dyskretne czy znakowe. Bardzo uªatwiaj¡ prac¦ na danych umo»liwiaj¡c wygodne wykonywanie wielu operacji. Technicznie m��wi¡c, ramka da- nych to lista z nadan¡ klas¡ data.frame. Tworzenie ramek w ��rodowisku R mo»e odbywa¢ si¦ na r��»ne sposoby:
z linii polece« R (czyli z pomoc¡ j¦zyka R), interaktywnie, z pomoc¡ wbudowanego edytora (funkcje edit(), fix()), tworz¡c ramki danych z innych obiekt��w, na przykªad konwertuj¡c macierze, wczytywanie z r��»nego rodzaju plik��w.
Przykªad
Poka»emy, jak tworzy¢ proste dane z wykorzystaniem linii polece« R. Wyobra¹my sobie maªe zoo, kt��re zapiszemy w R jako ramk¦ danych w nast¦puj¡cy spos��b:
zwierzeta <- data.frame( gatunek =c("bobr", "morswin", "swistak", "leszcz", "kielb", "turkuc podjadek"), gromada =c("ssaki", "ssaki", "ssaki", "ryby", "ryby", "owady"), srodowisko=c("ladowe", "wodne", "ladowe", "wodne", "wodne", "ladowe"), wielkosc =c("sredni", "duzy", "sredni", "sredni", "maly", "maly"), liczba =c( 2, 4, 1, 3, 4, 10))
Zwr��¢my uwag¦ na typy zmiennych:
gatunek zmienna znakowa; ka»de z naszych zwierz¡t nale»y do innego gatunku; mo»na trakto-
wa¢ j¡ jako identyfikator zwierz¦cia,
gromada zmienna kategoryczna; ka»dy gatunek nale»y do pewnej gromady; gromad jest mniej
ni» gatunk��w,
srodowisko podobnie jak gromada, wielkosc zmienna kategoryczna; podobnie jak gromada i srodowisko; r��»nica jest taka, »e wielko-
��ci mo»na ze sob¡ por��wnywa¢ (mimo, »e opisane s¡ sªowami), dlatego definiujemy zmienn¡ jako kategoryczn¡ uporz¡dkowan¡,
liczba zwykªa zmienna numeryczna (ale przyjmuje tylko warto��ci naturalne).
Nadajemy zmiennym typy. To jest operacja raczej techniczna, ale wa»na jest nawet sama ��wia- domo��¢, »e zmienne w ramce danych maj¡ typy i »e mo»na je zmienia¢:
zwierzeta$gatunek <- as.character(zwierzeta$gatunek) zwierzeta$gromada <- factor(zwierzeta$gromada) zwierzeta$srodowisko <- factor(zwierzeta$srodowisko) zwierzeta$wielkosc <- ordered(zwierzeta$wielkosc,levels=c("maly","sredni","duzy"))
Liczba zwierz¡t jest zmienn¡ numeryczn¡, sprawd¹my to:
class(zwierzeta$liczba)
Uwaga: podobne modyfikacje typ��w cech na og��ª trzeba wykonywa¢ po wczytaniu danych z plik��w tekstowych. Podczas analizy musimy wiedzie¢, jakiego typu s¡ poszczeg��lne zmienne. Brak znajomo��ci typu zmiennej mo»e doprowadzi¢ do niezrozumiaªych bª¦d��w. 24

Page 26
Materiaªy rmy QuantUp
quantup.pl, quantup.eu
c 2014, Artur Suchwaªko
Zmienne typu factor
Aby ªatwiej zrozumie¢ czym s¡ zmienne typu factor (zmienne kategoryczne) prze��led¹my tak¡ sesj¦:
> zwierzeta$wielkosc [1] sredni duzy sredni sredni maly maly Levels: maly < sredni < duzy > > levels(zwierzeta$wielkosc) [1] "maly" "sredni" "duzy" > > zwierzeta$srodowisko [1] ladowe wodne ladowe wodne wodne ladowe Levels: ladowe wodne
Teraz ju» ªatwo zrozumie¢, »e wielkosc jest zmienn¡ kategoryczn¡. Oznacza to, »e przyjmuje tylko pewn¡ liczb¦ z g��ry okre��lonych poziom��w. Poziomy te zostaªy wypisane przy pomocy polecenia
levels(zwierzeta$wielkosc). Mo»liwe poziomy mog¡ by¢ uporz¡dkowane, mog¡ by¢ te» nieupo-
rz¡dkowane, jak w przypadku zmiennej srodowisko.
Dost¦p do element��w ramki danych
Dost¦p do element��w ramki danych mo»na uzyska¢ tak samo, jak do element��w macierzy, czyli w nast¦puj¡cy spos��b:
zwierzeta$gatunek
wypisze zawarto��¢ zmiennej
zwierzeta$gatunek[3]
wypisany zostanie trzeci element zmiennej
zwierzeta[1,"gatunek"]
dost¦p do elementu na przeci¦ciu pierwszego wiersza i ko- lumny gatunek
zwierzeta[-(1:4),]
otrzymamy zwierzeta bez pierwszych czterech wierszy i ze wszystkimi kolumnami
zwierzeta$liczba[1] <-3
element zwierzeta$liczba[1] zmieniª warto��¢ z 2 na 3
zwierzeta$wielkosc <-NULL usuwanie zmiennej
Warto te» pami¦ta¢ o funkcji table(). U»ywa si¦ jej tak:
> table(zwierzeta$gromada) owady ryby ssaki 1 2 3 >table(zwierzeta$gromada,zwierzeta$srodowisko) ladowe wodne owady 1 0 ryby 0 2 ssaki 2 1
25

Page 27
Materiaªy rmy QuantUp
quantup.pl, quantup.eu
c 2014, Artur Suchwaªko
Bezpo��redni dost¦p do zmiennych
Do zmiennych mo»na uzyska¢ bezpo��redni dost¦p. Bezpo��redni dost¦p przyspiesza prac¦ z po- ziomu linii komend i skraca zapis. Skr��cenie zapisu mo»na uzyska¢ te» z wykorzystaniem funkcji
with() (jak w j¦zyku Pascal!):
attach(zwierzeta)
gatunek[3] # teraz nie jest juz potrzebny zapis zwierzeta$gatunek[3]
detach(zwierzeta)
Przykªad
Jakich zwierz¡t jest najwi¦cej?
> zwierzeta[which.max(zwierzeta$liczba),] gatunek gromada srodowisko wielkosc liczba 6 turkuc podjadek owady ladowe maly 10
Przykªad wybieramy podzbi��r danych
> subset(zwierzeta,gromada=="ssaki") gatunek gromada srodowisko wielkosc liczba 1 bobr ssaki ladowe sredni 3 2 morswin ssaki wodne duzy 4 3 swistak ssaki ladowe sredni 1
Operacje na ramkach danych podsumowanie
Funkcja Dziaªanie
data.frame
tworzenie ramki danych
[ ]
dost¦p do element��w
$
dost¦p do zmiennych
dim
wymiar danych
attach, detach dost¦p do zmiennych jak do niezale»nych obiekt��w head, tail
pocz¡tek i koniec danych
names
nazwy zmiennych
row.names
nazwy przypadk��w
subset
wyb��r podzbioru
split
podziaª na ramki danych wedªug zmiennej kategorycznej
levels
poziomy zmiennej factor
table
tablica kontyngencji
5.3 Sprawdzenie i konwersja typu
Typ zmiennej czy obiektu wydawa¢ si¦ to mo»e nieistotny, ale niedopasowanie typu albo zmiana (inaczej: konwersja) typu dokonana automatycznie przez R mo»e spowodowa¢ bª¦dy w dziaªaniu funkcji R. Konwersje s¡ przydatne przy pisaniu wªasnych funkcji i sprawdzaniu typu argument��w. Dzi¦ki ��wiadomym konwersjom mo»na pracowa¢ du»o bardziej efektywnie. Czasami s¡ konieczne po to, 26

Page 28
Materiaªy rmy QuantUp
quantup.pl, quantup.eu
c 2014, Artur Suchwaªko
»eby dopasowa¢ typ obiektu do funkcji, z kt��rej chcemy skorzysta¢. Prze��led¹my nast¦puj¡cy przykªad konwersji:
> d <- factor(c("A", "B", "C", "C")) # tworzymy zmienna kategoryczna > d [1] A B C C Levels: A B C > is.factor(d) # czy to zmienna typu factor? [1] TRUE > is.numeric(d) # czy to zmienna numeryczna? [1] FALSE > as.numeric(d) # zrobmy konwersje na zmienna numeryczna [1] 1 2 3 3 > # dwie kolejne konwersje: najpierw na zmienna numeryczna, pozniej na factor > as.factor(as.numeric(d)) [1] 1 2 3 3 Levels: 1 2 3 > class(d) # jakiej klasy to jest obiekt? [1] "factor" >
Sprawdzenie typu Konwersja
is.numeric() as.numeric() is.integer() as.integer() is.double() as.double() is.complex() as.complex() is.logical() as.logical() is.character() as.character() is.factor() as.factor() is.na()
27

Page 29
6 Odczyt i zapis
W tym rozdziale opisujemy kr��tko sposoby komunikacji systemu R ze ��wiatem zewn¦trznym. Znajduje si¦ w nim opis komunikacji z u»ytkownikiem, opis zapisu i odczytu danych w forma- tach tekstowych oraz wskaz��wki dotycz¡ce importowania danych z format��w r��»nych system��w statystycznych. Pocz¡tkuj¡cy u»ytkownik b¦dzie prawdopodobnie wykorzystywaª tylko odczyt i zapis plik��w w formacie CSV (Comma Separated Values) oraz odczyt i zapis plik��w binarnych R.
6.1 Klawiatura i ekran
Klawiatura i ekran to podstawowy spos��b komunikacji z u»ytkownikiem. Na og��ª nie b¦dziemy pobiera¢ parametr��w od u»ytkownika, a raczej b¦dziemy samodzielnie wpisywa¢ parametry do odpowiednich obiekt��w. Z pewno��ci¡ b¦dziemy jednak cz¦sto informowa¢ u»ytkownika o wyni- kach analizy, czyli wy��wietla¢ informacje na ekranie.
Przykªad wej��cie
dane <-scan()
enter ko«czy wczytywanie
dane <-scan(what="",sep="\n")
wczytywanie tekst��w
dane <-scan(what = list(flag = "", x = 0, y = 0)) wczytywanie rekord��w; pierwsze
pole tekstowe, pozostaªe nume- ryczne
Przykªad wyj��cie
> (x<-1:15) # wziecie w nawiasy powoduje wyswietlenie wyniku [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 > > # mozna w ten sposob wyswietlac praktycznie dowolnie skomplikowane obiekty > print(x) [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 > > cat(x,"\n") 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 > cat("Napis\n") Napis > cat("Napis\n",file="output.txt") > cat("Wynik: suma =",round(pi,3),"$\n") Wynik: suma = 3.142
28

Page 30
Materiaªy rmy QuantUp
quantup.pl, quantup.eu
c 2014, Artur Suchwaªko
6.2 Przykªadowe dane tekstowe
Zaczniemy od prezentacji przykªadowych danych tekstowych. Najcz¦��ciej wªa��nie z takich danych b¦dziemy korzysta¢ w analizach. Oczywi��cie, R mo»e pobiera¢ dane bezpo��rednio na przykªad z bazy Oracle, ale praktycznie z ka»dego systemu baz danych mo»na wyeksportowa¢ dane w formacie tekstowym. W zwi¡zku z tym komunikacja z R wykorzystuj¡ca pliki tekstowe jest najbardziej uniwersalnym rozwi¡zaniem.
"NumPreg" "Glucose" "BloodPress" "Insulin" "BMI" "DiabPedigree" "Age" "Diagnosis" "1" 6 148 72 0 33.6 0.627 50 "Chory" "2" 1 85 66 0 26.6 0.351 31 "Zdrowy" "3" 8 183 64 0 23.3 0.672 32 "Chory" "4" 1 89 66 94 28.1 0.167 21 "Zdrowy" "5" 0 137 40 168 43.1 2.288 33 "Chory" "6" 5 116 74 0 25.6 0.201 30 "Zdrowy" "7" 3 78 50 88 31.0 0.248 26 "Chory"
Pliki maj¡ pewne bardzo wa»ne wªasno��ci, kt��re mo»na kontrolowa¢ z pomoc¡ parametr��w funkcji wczytuj¡cych. Nale»¡ do nich:
precyzja, posiadania nagª��wka lub jego brak, separator p��l, separator dziesi¦tny, kodowanie znak��w, kodowanie brakuj¡cych warto��ci, cudzysªowy (do ªa«cuch��w tekstowych), definiowanie rodzaj��w zmiennych
6.3 Dane z plik��w tekstowych
Stwierdzili��my ju», »e komunikacja przez pliki tekstowe jest najbardziej uniwersalnym sposobem dostarczania danych dla R. W tym rozdziale przedstawimy, jak wczytywa¢ i zapisywa¢ dane w formatach tekstowych.
Odczyt funkcja read.table()
Podstawow¡ funkcj¡ wczytuj¡c¡ pliki tekstowe jest read.table(). Wywoªanie tej funkcji ma nast¦puj¡c¡ posta¢:
read.table(file, header = FALSE, sep = "", quote = "\"'", dec = ".", row.names, col.names, as.is = FALSE, na.strings = "NA", colClasses = NA, nrows = -1, skip = 0, check.names = TRUE, fill = !blank.lines.skip, strip.white = FALSE, blank.lines.skip = TRUE, comment.char = "#", allowEscapes = FALSE, flush = FALSE)
29

Page 31
Materiaªy rmy QuantUp
quantup.pl, quantup.eu
c 2014, Artur Suchwaªko
gdzie poszczeg��lne parametry oznaczaj¡:
Parametr Znaczenie
file
plik wej��ciowy
header
czy plik ma nagª��wek?
sep
separator p��l
dec
separator dziesi¦tny
row.names
nazwy przypadk��w
col.names
nazwy zmiennych
na.strings kodowanie brakuj¡cych warto��ci colClasses klasy zmiennych dla kolumn
Mo»e si¦ to wydawa¢ przytªaczaj¡ce, ale mnogo��¢ parametr��w ��wiadczy o elastyczno��ci funkcji. Wielu z tych parametr��w podawa¢ nie musimy, a zazwyczaj wystarczy takie wywoªanie:
dane <- read.table("dane.txt", header=FALSE, sep=";",dec=".", na.strings = "brak")
Mo»liwe jest tak»e wywoªanie z jedynym argumentem:
dane <- read.table("dane.txt")
Ciekawostk¦ stanowi fakt, »e w razie potrzeby mo»na wczyta¢ dane wprost z adresu URL.
Zapis funkcja write.table()
Zapis danych odbywa si¦ r��wnie ªatwo dzi¦ki funkcji write.table() o skªadni bardzo zbli»onej do funkcji write.table(). Najprostsze wywoªanie tej funkcji to:
write.table(dane, file="dane.txt")
Wywoªanie z dodatkowymi parametrami jest niewiele bardziej zªo»one:
write.table(dane, file="dane.txt", append=TRUE, sep=";", row.names=TRUE, col.names=FALSE)
6.4 Pliki binarne w R
System R posiada wªasny standard zapisywania i odczytywania plik��w binarnych. Korzystanie z plik��w binarnych R jest wygodne, poniewa» pliki binarne s¡ mniejsze od tekstowych. Czasami po wczytaniu pliku tekstowego do R trzeba nada¢ zmiennych odpowiednie typy. Za- zwyczaj R prawidªowo odr��»nia zmienne kategoryczne od numerycznych, ale nie jest w stanie zgadn¡¢, czy zmienna kategoryczna ma mie¢ warto��ci uporz¡dkowane, czy nie. Wtedy zmien- nym nadajemy typ r¦cznie . Po zapisaniu takich danych w formacie tekstowym typ zmiennej nie b¦dzie zapami¦tany. Rozwi¡zaniem tego problemu jest zapisanie danych w postaci binarnej. Dodatkow¡ zalet¡ jest to, »e do plik��w binarnych mo»emy zapisywa¢ wszelkie obiekty, nie tylko ramki danych.
Odczyt funkcja load()
load("dane.RData")
30

Page 32
Materiaªy rmy QuantUp
quantup.pl, quantup.eu
c 2014, Artur Suchwaªko
Wynikiem dziaªania funkcji load() jest wczytanie obiekt��w do przestrzeni roboczej. Nazwy tych obiekt��w b¦d¡ takie same, jak nazwy, pod jakimi obiekty zostaªy wcze��niej zapisane.
Zapis funkcja save()
save(x,y,z,"dane.RData")
Skr��cona wersja save, zapisuje do pliku caª¡ przestrze« robocz¡ R (czyli wszystkie obiekty w pami¦ci systemu R):
save.image()
Uwaga: kolejne wersje R zapisuj¡ w inny spos��b pliki binarne, kompatybilno��¢ wstecz nie jest wi¦c peªna.
Dane z innych system��w statystycznych
Pakiet foreign umo»liwia komunikacj¦ z innymi systemami statystycznymi. Oznacza to mo»li- wo��¢ wczytywania, oraz zapisywania danych w specyficznych dla poszczeg��lnych system��w sta- tystycznych formatach. W tabeli poni»ej zebrane s¡ cz¦��ciej przydatne:
Funkcja System
read.dbf(...)
format dbf
read.spss(...)
SPSS
library(Hmisc); spss.get(...) rozszerzony import SPSS read.octave(...)
Octave
read.xport(...)
SAS
library(R.matlab)
wsp��ªpraca z Matlabem
Wbudowane dane
Podstawowe sposoby wczytywania wbudowanych danych, s¡ jak si¦ mo»na byªo spodziewa¢ jesz- cze prostsze. Aby dowiedzie¢ si¦ jakie dane s¡ dost¦pne wystarczy posªu»y¢ si¦ poleceniem:
data()
Dane ze wszystkich zainstalowanych pakiet��w pojawi¡ si¦ na ekranie je��li wpiszemy komend¦:
data(package=.packages(all.available=TRUE))
Je��li wiemy, jakie dane chcemy wczyta¢:
data(Cars93)
Uwaga: pakiet datasets zawiera du»o interesuj¡cych danych. 31

Page 33
Materiaªy rmy QuantUp
quantup.pl, quantup.eu
c 2014, Artur Suchwaªko
Wej��cie i wyj��cie podsumowanie
Funkcja Dziaªanie
scan
odczyt z ekranu (lub pliku)
(...)
wy��wietlanie wyniku dziaªania instrukcji
cat, print
wyj��cie na ekran
format
formatowanie wyniku do wyj��cia na ekran
sink
przekierowanie wyj��cia do pliku
pdf, postscript, . . .
urz¡dzenia graficzne
dev.off
wyª¡czenie urz¡dzenia graficznego
read.table, read.csv
wczytwanie danych tekstowych
read.fwf
wczytanie danych o staªej szeroko��ci p��l
write.table
zapis danych tekstowych
write.matrix, write, dump inne funkcje do zapisu tekstowego load, save, save.image
odczyt i zapis binarny obiekt��w R
data
dost¦p do danych wbudowanych 32

Page 34
7 Gra ka w R
R ma ogromne mo»liwo��ci graficzne. Opr��cz setek gotowych do u»ycia wykres��w mo»liwa jest ich nieograniczona modyfikacja, a tak»e tworzenie caªkiem nowych typ��w graficznych prezentacji danych. Pocz¡tkuj¡cy u»ytkownik mo»e ograniczy¢ si¦ do wykorzystywania gotowych funkcji. Przez wy- woªanie funkcji z odpowiednimi parametrami uzyskuje si¦ mo»liwo��¢ du»ej modyfikacji wygl¡du rysunk��w. Taki zach¦caj¡cy przykªad prezentowany jest w tym rozdziale. Dlaczego R jest doskonaªy do tworzenia grafiki:
ogromna liczba gotowych wykres��w, nieograniczone wr¦cz mo»liwo��ci graficzne, ªatwo��¢ generowania gotowych rysunk��w w wielu formatach bitmapowych i wektorowych, automatyzacja tworzenia grafiki dzi¦ki programowaniu, dowolna integracja z innym oprogramowaniem i wieloma ¹r��dªami danych.
Lista wybranych bibliotek gra cznych
System R ma ogromn¡ liczb¦ bibliotek graficznych. Niekt��re z nich s¡ uniwersalne, niekt��re zwi¡zane ze specyficznymi zastosowaniami. Poni»ej przedstawiamy list¦ bibliotek mog¡cych za- interesowa¢ pocz¡tkuj¡cych u»ytkownik��w R.
Biblioteka Przeznaczenie
graphics
standardowa biblioteka graficzna
grid
system graficzny bardziej elastyczny ni» standardowy
ggplot
wygodna uniwersalna biblioteka graficzna
rgl
wizualizacja 3d w OpenGL
scatterplot3d wykresy rozrzutu 3d lattice
wizualizacja danych wielowymiarowych
cat, vcd
wizualizacja danych kategorycznych
iplots
interaktywna grafika
Funkcje gra czne wysokiego i niskiego poziomu
Funkcje graficzne w systemie R mo»na podzieli¢ na funkcje wysokiego poziomu i niskiego po- ziomu. To rozr��»nienie jest wa»ne i pozwoli na tworzenie bardziej zaawansowanej grafiki.
Funkcje graficzne wysokiego poziomu rysuj¡ caªy obrazek (np. funkcja plot()).
33

Page 35
Materiaªy rmy QuantUp
quantup.pl, quantup.eu
c 2014, Artur Suchwaªko
Funkcje graficzne niskiego poziomu uzupeªniaj¡ tylko istniej¡ce rysunki (np. funkcja points
()).
Funkcja plot() jest najwa»niejsz¡ funkcj¡ graficzn¡. Mo»emy j¡ zastosowa¢ do wielu typ��w obiekt��w. Wywoªanie wyª¡cznie funkcji niskiego poziomu spowoduje bª¡d.
Przykªad 1
Poni»szy kod tworzy najprostszy wykres g¦sto��ci rozkªad��w ��2 dla r��»nej liczby stopni swobody:
x <- seq(from=0,to=10,by=0.01)
curve(dchisq(x,1), xlim=c(0,10), ylim=c(0,.6)) curve(dchisq(x,4), add=T)
0 2 4 6 8 10 0.0 0.1 0.2 0.3 0.4 0.5 0.6 x dchisq(x, 1)
Rysunek 7.1: Najprostszy wykres
Przykªad 2
Teraz uatrakcyjnimy ten wykres uzupeªniaj¡c o kolory i grubo��ci linii oraz opisy osi:
curve(dchisq(x,1), xlim=c(0,10), ylim=c(0,.6),
34

Page 36
Materiaªy rmy QuantUp
quantup.pl, quantup.eu
c 2014, Artur Suchwaªko
col="red", lwd=3, main="Rozklady Chi^2", xlab="",ylab="") curve(dchisq(x,4), add=T, col="green", lwd=3)
0 2 4 6 8 10 0.0 0.1 0.2 0.3 0.4 0.5 0.6
Rozklady ��2
1 stopien swobody 4 stopnie swobody
Rysunek 7.2: Zmodyfikowany wykres
Przykªad 3
Innym przykªadem ilustruj¡cym mo»liwo��ci graficzne jest histogram. Zn��w modyfikujemy kolory i grubo��ci linii.
proba <- rnorm(200)
hist(proba,20,probability=TRUE,col="light blue") curve(dnorm(x),lwd=3,col="red",add=TRUE)
Wykresy standardowe wprowadzenie
Wykresy standardowe nale»¡ do grupy funkcji wysokiego poziomu. R posiada ogromny wy- b��r gotowych do wykorzystania wykres��w standardowych. Tworzenie wykres��w standardowych 35

Page 37
Materiaªy rmy QuantUp
quantup.pl, quantup.eu
c 2014, Artur Suchwaªko Histogram of proba
proba Density −3 −2 −1 0 1 2 3 0.0 0.1 0.2 0.3 0.4
Rysunek 7.3: Funkcje wysokiego i niskiego poziomu ilustracja sprowadza si¦ do wywoªania odpowiedniej funkcji (ewentualnie poprzedzonego wczytaniem od- powiedniego pakietu). Wszystkie funkcje graficzne maj¡ wiele parametr��w, z pomoc¡ kt��rych mo»na modyfikowa¢ i udoskonala¢ prezentacj¦ graficzn¡ danych.
Podstawowe wykresy jednej zmiennej
Proponujemy samodzielne zapoznanie si¦ z podstawowymi wykresami dla jednej zmiennej po- przez wªasne eksperymenty albo skorzystanie z pomocy systemu R.
plot(), barplot(), hist(), boxplot(), pie().
36

Page 38
Materiaªy rmy QuantUp
quantup.pl, quantup.eu
c 2014, Artur Suchwaªko
Funkcje gra czne wysokiego poziomu podsumowanie
Funkcja Dziaªanie
plot
podstawowa funkcja graficzna
hist
histogram
pie
wykres koªowy
barplot
wykres sªupkowy
boxplot
wykres pudeªkowy
pairs
zestaw wykres��w rozrzutu
stars
wykres radarowy
mosaicplot wykres mozaikowy
Mody kacja gra ki
Jedn¡ z mocnych stron R s¡ nieograniczone mo»liwo��ci modyfikacji wykres��w. Mo»liwe jest uzy- skanie praktycznie dowolnej grafiki. Modyfikacje wykres��w uzyskuje si¦ dzi¦ki parametrom, kt��re mo»na okre��li¢ z pomoc¡ funkcji par() lub przekazywa¢ do funkcji wysokiego poziomu. Liczba tych parametr��w jest ogromna, a jej przedstawienie wykracza poza zakres tego opracowania. Proponujemy samodzielne zapoznanie si¦ z nimi.
Zapisywanie gra ki
Jak ju» podkre��lali��my, system R tworzy grafik¦ o jako��ci prezentacyjnej. Grafik¦ mo»na zapi- sywa¢ w wielu formatach i na wiele sposob��w. Istniej¡ co najmniej trzy sposoby zapisywania grafiki:
menu okienka graficznego, menu kontekstowe pojawiaj¡ce si¦ po naci��ni¦ciu prawego klawisza myszy, gdy kursor jest
ustawiony w okienku graficznym,
urz¡dzenia graficzne.
Urz¡dzenia graficzne s¡ najbardziej elastycznym sposobem. Korzystaj¡c z nich mo»na okre��li¢ niemal wszystkie parametry tworzonego pliku.
Przykªad zapisu do pliku przy pomocy urz¡dzenia gra cznego
pdf(file="nazwa_pliku.pdf") otwarcie urz¡dzenia graficznego
hist(rnorm(10^3))
operacje graficzne (ka»dy wykres na osobnej stronie)
hist(rnorm(10^4))
dev.off()
zamkni¦cie urz¡dzenia graficznego (r��wnocze��nie zamyka plik) Oczywi��cie istnieje mo»liwo��c wyboru urz¡dzenia graficznego. Najcz¦��ciej wybierane to:
postscript(...),
png(...), jpeg(...), bmp(...).
Peªna lista urz¡dze« graficznych pojawi si¦ na ekranie po wpisaniu polecenia Devices(). 37

Page 39
8 Elementy programowania w R
Jak ju» wiemy, j¦zyk programowania jest integraln¡ cz¦��ci¡ systemu R, a wykonywanie analiz danych w R ma wiele wsp��lnego z programowaniem. R jest zaskakuj¡co zaawansowanym i naprawd¦ pot¦»nym j¦zykiem programowania. Umo»liwia pisanie du»ych program��w, programowanie obiektowe, obsªug¦ wyj¡tk��w, debugowanie i opty- malizacj¦ kodu (profilowanie). W tym rozdziale chcieliby��my przedstawi¢ tylko najbardziej podstawowe elementy programowa- nia: pisanie wªasnych funkcji, p¦tle i instrukcje warunkowe.
8.1 Instrukcje warunkowe
if (warunek)instr1 [else instr2] pozwala na warunkowe wykonanie fragmentu kodu, ifelse(warunek, instrNie, instrTak) pozwala na skr��cenie zapisu instrukcji warunkowej, switch(wartosc, ...) pozwala na warunkowe wykonanie jednego z wielu mo»liwych fragmen-
t��w kodu.
Przykªad if(warunek)
Najcz¦��ciej przydatna jest instrukcja if(warunek). Oto prosty przykªad sprawdzaj¡cy, czy liczba jest parzysta:
> liczba <- 42 > if (liczba %% 2 == 0){ + cat("liczba jest parzysta\n") + }else{
# wazne zeby "else" bylo zaraz po "}"
+ cat("liczba jest nieparzysta\n") + } liczba jest parzysta >
Przykªad 1 ifelse(warunek, instrNie, instrTak)
Je»eli kod wykonywany warunkowo jest kr��tki, to mo»na upro��ci¢ zapis wykorzystaj¡c funkcj¦
ifelse(warunek, instrNie, instrTak).
> jeden <- "jeden" > dwa <- "dwa" > ifelse(jeden == dwa, "inne", "to samo") [1] "to samo"
38

Page 40
Materiaªy rmy QuantUp
quantup.pl, quantup.eu
c 2014, Artur Suchwaªko
Przykªad 2 ifelse(warunek, instrNie, instrTak)
Trzeba zachowa¢ ostro»no��¢ przy por��wnywaniu liczb rzeczywistych. Nawet, zdawaªoby si¦ pro- sta, operacja dodawania mo»e by¢ ¹r��dªem bª¦d��w numerycznych, kt��rych si¦ nie spodziewamy:
> jeden <- 0.4 > dwa <- 0.1 > ifelse(0.5 == jeden + dwa, "inne", "to samo") [1] "inne"
Przykªad 3 ifelse(warunek, instrNie, instrTak)
Instrukcja warunkowa ifelse(warunek, instrNie, instrTak) ��wietnie nadaje si¦ do przetwarza- nia wektor��w. To jest wªa��nie jej podstawowe zastosowanie.
> wektor <- rnorm(5) > wektor [1] -0.65426992 0.71763580 0.08559266 1.04562332 1.49848355 > ifelse(wektor<0,-1,1) [1] -1 1 1 1 1
Przykªad switch(wartosc)
Je��li chcemy uzale»ni¢ dalsze dziaªanie programu na przykªad od kilku mo»liwych wersji otrzyma- nego wyniku, to mo»emy u»y¢ rozbudowanej instrukcji warunkowej switch(wartosc). Oczywi��cie, w tej sytuacji wszystkie mo»liwe wyniki powinny by¢ nam z g��ry znane.
> wartosc <- c(1,2,3) > switch(length(wartosc), + "1" = cat("jeden\n"), + "2" = , + "3" = cat("trzy\n"), + cat("nie wiem ile\n") + ) trzy
8.2 P¦tle
P¦tle w R tylko nieznacznie r��»ni¡ si¦ od p¦tli spotykanych w innych j¦zykach programowania. Mamy do dyspozycji typowe trzy ich rodzaje:
for (iterator)instr stosuje si¦, gdy liczba powt��rze« p¦tli jest z g��ry znana, while (warunek)instr stosuje si¦, gdy powt��rzenia maj¡ by¢ wykonywane tak dªugo, jak dªugo
prawdziwy jest pewien warunek,
repeat instr stosuje si¦, gdy »adna z powy»szych p¦tli nie mo»e by¢ ªatwo zastosowana.
39

Page 41
Materiaªy rmy QuantUp
quantup.pl, quantup.eu
c 2014, Artur Suchwaªko
Przykªad for (iterator)instr
Wewn¡trz p¦tli for mo»na umie��ci¢ dowolne instrukcje. Mo»na w p¦tli umie��ci¢ r��wnie» kolejne p¦tle wewn¦trzne, ale zwykle nie jest to potrzebne.
for(i in 1:5){ cat(paste("krok numer: "), paste(i, "\n"))
}
Warto zapami¦ta¢, »e R pozwala na u»ycie innych iterator��w ni» liczby:
> iteratory <- c("jeden", "dwa", "trzy") > for(i in iteratory){ + cat(paste(i, "\n")) + } jeden dwa trzy
Przykªad while (warunek)instr
Je��li chcemy wykonywa¢ pewn¡ operacj¦ tak dªugo, a» pewnien warunek przestanie by¢ praw- dziwy, ale nie wiemy dokªadnie ilu powt��rze« potrzeba, to z pomoc¡ przychodzi nam p¦tla
while.
Mo»na przerwa¢ wykonywanie danej iteracji wpisuj¡c wewn¡trz p¦tli next i w��wczas zostanie rozpocz¦te kolejne powt��rzenie p¦tli. Stosowanie polecenia next nie znamionuje dobrego stylu programowania.
> liczba<-7 > while(liczba>0){ + cat(paste("liczba = ", liczba, "\n")) + liczba <- liczba - 2 + } liczba = 7 liczba = 5 liczba = 3 liczba = 1
8.3 Pisanie wªasnych funkcji
Ju» po kr��tkim czasie pracy z R zauwa»ymy, »e pewne, specyficzne dla analizy danych, z kt��rymi pracujemy, czynno��ci powtarzaj¡ si¦. Oka»e si¦, »e trzeba kopiowa¢ do kolejnych skrypt��w te same fragmenty kodu. Takie powtarzaj¡ce si¦ fragmenty kodu warto zast¡pi¢ wywoªaniami napisanych przez siebie funkcji. To spowoduje, »e nasze skrypty stan¡ si¦ bardziej przejrzyste i trudniej b¦dzie popeªni¢ bª¡d. Z czasem napisane wªasnor¦cznie funkcje utworz¡ bibliotek¦ znacznie zwi¦kszaj¡c¡ wydajno��¢ pracy z danymi. Pisanie funkcji wcale nie jest trudne! Oto przykªadowa funkcja, kt��ra znajduje najwi¦kszy element wektora i zwraca podwojon¡ jego warto��¢. Nie jest to przykªad zbyt praktyczny, ale pokazuje wszystkie wa»ne aspekty pisania wªasnych funkcji: 40

Page 42
Materiaªy rmy QuantUp
quantup.pl, quantup.eu
c 2014, Artur Suchwaªko
max.razy.dwa <- function(wektor) { maksimum <- max(wektor) # znajdujemy maksimum res <- 2 * maksimum res }
Funkcja ta ma jeden argument: przekazujemy jej wektor liczb. Zwraca liczb¦, kt��ra jest po- dwojon¡ warto��ci¡ najwi¦kszego elementu przekazanego wektora. Warto��ci¡ funkcji jest warto��¢ ostatniego wyra»enia. W naszym przypadku jest to warto��¢ zmiennej res . Kod funkcji nale»y wpisa¢ (lub wklei¢ lu wczyta¢ z pliku) do R. Funkcj¦ wykorzystujemy jak ka»d¡ inn¡:
> max.razy.dwa(c(1,2,7)) [1] 14
Nasz¡ funkcj¦ mo»na zapisa¢ tak»e w bardziej zwi¦zªej postaci:
max.razy.dwa <- function(wektor) { 2 * max(wektor) }
Istnieje wiele ciekawych zagadnie« zwi¡zanych z pisaniem funkcji w R (argumenty domy��lne, funkcje anonimowe, polimorfizm), ale przekraczaj¡ one zakres tego opracowania. Aby zach¦ci¢ czytelnik��w do nauki spr��bujmy wykona¢ zdefiniowa¢ prostsz¡ funkcj¦:
max.razy.dwa <- function(wektor=1) 2 * max(wektor)
oraz wywoªa¢ j¡ bez argument��w, czyli max.razy.dwa(). Wtedy przyjmie ona tak zwan¡ domy��ln¡ warto��¢ argumentu. Warto��ci domy��lne cz¦sto wykorzystywane s¡ w funkcjach graficznych. 41

Page 43
9 Elementy statystyki
Zaprezentujemy kr��tko tylko najwa»niejsze funkcje zakªadaj¡c, »e czytelnik zna poj¦cia z zakresu statystyki, kt��rymi si¦ posªugujemy. Posªu»ymy si¦ dost¦pnymi w pakiecie MASS danymi Cars93. Dane dotycz¡ samochod��w sprze- dawanych na rynku ameryka«skim w roku 1993. Uzupeªnienie tego rozdziaªu mo»na znale¹¢ w przykªadach na ko«cu Wprowadzenia do R . Na pocz¡tek wczytujemy dane:
library(MASS) # wczytanie pakietu data(Cars93) # wczytanie danych
Teraz elementy statystyki opisowej:
# maksymalna i minimalna cena dla aut w wersji podstawowej
max(Cars93$Min.Price) min(Cars93$Min.Price)
# ktory samochod jest najdrozszy?
ind.max <- which.max(Cars93$Price) najdrozszy <- Cars93$Make[ind.max]
print(paste("Najdroszy samochod: ", najdrozszy)) mean(Cars93$Price) # srednia cena median(Cars93$Price) # mediana ceny sd(Cars93$Price) # odchylenie standardowe ceny var(Cars93$Price) # wariancja ceny quantile(Cars93$Price, probs=.25) # pierwszy kwartyl summary(Cars93$Price) # statystyki opisowe zebrane w jednym zestawieniu
Liczno��ci i tablice kontyngencji:
# ile jest samochodow okreslonych typow?
table(Cars93$Type)
# ile samochodow okreslonego typu produkuja poszczegolne koncerny?
table(Cars93$Manufacturer, Cars93$Type)
Korelacja liniowa:
# zale»no��¢ pomiedzy pojemnoscia silnika, a liczba przejechanych mil #na jednym galonie paliwa (jazda miejska)
cor(Cars93$EngineSize, Cars93$MPG.city)
42

Page 44
Materiaªy rmy QuantUp
quantup.pl, quantup.eu
c 2014, Artur Suchwaªko
Podstawowe wykresy statystyczne
Podstawowe wykresy przedstawimy jedynie na przykªadach, bez szczeg��ªowego ich omawiania. Po zobaczeniu wykres��w ªatwo domy��le¢ si¦, co one przedstawiaj¡.
# histogram ceny
hist(Cars93$Price, 30)
# wykres pudeªkowy ceny
boxplot(Cars93$Price)
# wykres pudeªkowy ceny z podziaªem na typy samochod��w
boxplot(Price ~ Type, data=Cars93)
# wykres liczebno��ci poszczeg��lnych typ��w
barplot(table(Cars93$Type))
# wykres koªowy udziaª��w poszczeg��lnych typ��w
pie(table(Cars93$Type))
# wykres zale»no��ci mi edzy pojemno��ci a skokow a silnika a cen a samochodu #(wykres rozrzutu)
plot(Cars93$EngineSize, Cars93$Price)
Statystyka podsumowanie funkcji
Funkcja Dziaªanie
max
najwi¦kszy element
min
najmniejszy element
mean
��rednia
median
mediana
sd
odchylenie standardowe
var
wariancja
quantile
kwantyle empiryczne
summary
statystyki opisowe
table
liczno��ci, tablica kontyngencji
cor
wsp��ªczynnik korelacji
Podstawowe wykresy statystyczne podsumowanie
hist
histogram
boxplot wykres pudeªkowy barplot wykres sªupkowy pie
wykres koªowy
plot
uniwersalna funkcja do robienia wykres��w 43

Page 45
10 Losowanie, zmienne losowe i symula- cje
Najwa»niejsza w tym rozdziale jest funkcja sample. U»ywamy jej cz¦sto przy losowaniu element��w ze zbioru danych (na przykªad przy podziale na zbi��r ucz¡cy i testowy). Wtedy stosuje si¦ j¡ tak:
data(iris)
# tutaj pojawiaja sie numery wybranych 10 obiektow
indeksy <- sample(1:dim(iris)[1], 10)
# wybieramy tylko wylosowane przypadki
iris[indeksy,]
Funkcja sample ma wiele innych zastosowa«. Jako przykªad poka»emy symulacj¦ rzutu monet¡:
# losujemy 20 razy ze zbioru {"O", "R"} ze zwracaniem
wyniki <- sample(c("O","R"), replace=TRUE, size=20)
print(wyniki) table(wyniki) # ile razy wypadl orzel, a ile reszka
Do ilustrowania niekt��rych zagadnie« wykorzystujemy dane symulowane. Przy okazji opisania funkcji sªu»¡cych do symulacji napiszemy o rozkªadach prawdopodobie«stwa dodatkowe dwa zdania. R udost¦pnia znakomit¡ wi¦kszo��¢ (cz¦��ciej i rzadziej wykorzystywanych w praktyce) rozkªad��w. Stosowana jest uniwersalna konwencja:
dnazwa g¦sto��¢ rozkªadu nazwa , pnazwa dystrybuanta, qnazwa kwantyle / dystrybuanta odwrotna, rnazwa generator liczb pseudolosowych.
W przypadku rozkªadu normalnego oznacza to odpowiednio:
dnorm(.), pnorm(.), qnorm(.), rnorm(.).
44

Page 46
Materiaªy rmy QuantUp
quantup.pl, quantup.eu
c 2014, Artur Suchwaªko
Przykªady
Zastosowanie funkcji zwi¡zanych z rozkªadami prawdopodobie«stwa najlepiej jest prze��ledzi¢ na prostych przykªadach.
# gestosc rozkladu normalnego w 0
dnorm(0)
# dystrybuanta w 0
pnorm(0)
# ile masy standardowego rozkladu normalnego N(0,1) miesci sie miedzy -3 a 3?
pnorm(3) - pnorm(-3)
# 100 obserwacji z rozkladu N(2,1)
rnorm(100,mean=2,sd=1)
# pierwszy kwartyl
qnorm(0.25)
# zobaczmy, czy przypomina rozklad normalny
hist(rnorm(1000))
# proba z rozkladu jednostajnego i histogram dla takiej proby
runif(1000) hist(runif(1000), prob=TRUE)
Zmienne losowe i symulacje podsumowanie
Funkcja Dziaªanie
sample
losowanie indeks��w obiekt��w, inne rodzaje losowa«
dnorm
g¦sto��¢ rozkªadu normalnego
pnorm
dystrybuanta rozkªadu normalnego
qnorm
kwantyl rozkªadu normalnego
rnorm
liczby pseudolosowe z rozkªadu normalnego
runif
liczby pseudolosowe z rozkªadu jednostajnego 45

Page 47
11 Przykªadowe sesje z R
W tym rozdziale przedstawiamy kilka przykªadowych sesji w R. Pokazuj¡ one jak przebiega ana- liza danych rzeczywistych. Zach¦camy do sprawdzenia zaprezentowanych kod��w w R fragment po fragmencie oraz obserwowania rezultat��w. W ka»dym kroku mo»na zobaczy¢, jakie obiekty pojawiªy si¦ w pami¦ci R (nazwa.obiektu + ENTER lub print(nazwa.obiektu)). Sesje takie mo»na zapisa¢ do plik��w. Wtedy nazywamy je skryptami R i dzi¦ki nim bez problemu mo»na powt��rzy¢ zapisan¡ analiz¦. Po przeczytaniu caªego Wprowadzenia do R jego czytelnicy b¦d¡ mogli ju» samodzielnie mo- dyfikowa¢ przedstawione w tym rozdziale skrypty.
Prosty model liniowy
Ten przykªad ilustruje prostot¦, z jak¡ buduje si¦ w systemie R modele statystyczne. Ilustruje tak»e dziaªanie dw��ch wa»nych funkcji: plot oraz summary. S¡ one u»ywane dla r��»nych typ��w obiekt��w.
library(MASS)
wczytanie biblioteki
data(iris)
wczytanie danych
model.reg <-lm(Petal.Length ~Sepal.Length, data=iris) budowa modelu regresyjnego
summary(model.reg)
tak wygl¡da model
plot(model.reg)
zestaw wykres��w diagno- stycznych Mo»na operowa¢ na wynikach zawartych w zmiennej model.reg i wykorzysta¢ je do dalszych oblicze«.
Przykªad praktycznej analizy danych (troch¦ bardziej zaawansowanej)
W tym przykªadzie pokazujemy, jak wykry¢ zale»no��¢ mi¦dzy zmiennymi ci¡gªymi oraz jak zbu- dowa¢ opisuj¡cy j¡ model regresyjny. Uwaga! W tym momencie nie zajmujemy si¦ w og��le aspektami statystycznymi, na przykªad takimi jak jako��¢ dopasowania modelu.
library(MASS) # wczytujemy biblioteke MASS, w ktorej sa dane data(Cars93) # wczytujemy dane
# przyrzyjmy si e zmiennym: cena samochodu, pojemnosc skokowa silnika
hist(Cars93$Price) hist(Cars93$EngineSize)
# zobaczymy, czy one od siebie zaleza (widac zaleznosc, ale niezbyt liniowa)
plot(Cars93$EngineSize, Cars93$Price)
46

Page 48
Materiaªy rmy QuantUp
quantup.pl, quantup.eu
c 2014, Artur Suchwaªko
# korelacja jednak jest dosyc wysoka
cor(Cars93$EngineSize, Cars93$Price)
# spr��bujmy zbudowa¢ model regresji liniowej # model da nam odpowiedz, ile musimy zaplacic, # jesli chcemy miec samochod o okreslonej pojemnosci silnika
library(MASS) model <- lm(Cars93$Price ~ Cars93$EngineSize, data=Cars93)
# zobaczmy, jak model wyglada
print(model)
# spojrzmy, czy model jest dobrze dopasowany
plot(model)
# prognozowane ceny na podstawie pojemnosci skokowej
fitted(model)
# spojrzmy na wykres
plot(Cars93$EngineSize, Cars93$Price) abline(model) points(Cars93$EngineSize, fitted(model), col="red", pch=20, cex=1.5)
Przykªad nieco bardziej zaawansowanej gra ki
Oto przykªad wykorzystania funkcji graficznych wysokiego i niskiego poziomu. Proponujemy po wpisaniu kodu do R powt��rzy¢ kilkukrotnie polecenie rozpoczynaj¡ce si¦ od points. Zrozumienie dziaªania przykªadu pozostawiamy jako ¢wiczenie.
# nic nie rysuje (type="n"), tylko definiuje zakresy osi
plot(0,0,xlim=c(-3,3),ylim=c(-3,3),type="n")
# warto uruchomic kilkukrotnie!
points(rnorm(20),rnorm(20),pch=1:20,cex=5*rnorm(20),col=rainbow(20))
47

Page 49
Bibliogra a
[1] Books related to R. Internet, http://www.r-project.org/doc/bib/R-books.html. [2] M.J. Crawley. Statistical Computing. An Introduction to Data Analysis Using S-Plus. Wiley, 2006. [3] P. Dalgaard. Introductory Statistics with R. Springer, 2004. [4] J.J. Faraway. Linear Models with R. Chapman & Hall/CRC, 2004. [5] M. Lavine. Introduction to Statistical Thought, http://www.stat.duke.edu/~michael/book.html. 2006. [6] P. Murrell. R Graphics. Chapman & Hall/CRC, 2005. [7] F. Romain. R Graph Gallery, http://gallery.r-enthusiasts.com/. Internet. [8] W. N. Venables and B. D. Ripley. Modern Applied Statistics with S. Springer, 2002. [9] V. Zoonekynd. Statistics with R, http://zoonek2.free.fr/UNIX/48_R/all.html. Internet. 48
Search more related documents:Wprowadzenie do R
Download Document:Wprowadzenie do R

Recent Search:

Set Home | Add to Favorites

All Rights Reserved Powered by Free Document Search and Download

Copyright © 2011
This site does not host pdf,doc,ppt,xls,rtf,txt files all document are the property of their respective owners. complaint#nuokui.com
TOP