Środowisko R wprowadzenie c.d. Wykład R2; 21.05.07 Struktury danych w R c.d. Oprócz zmiennych i wektorów strukturami danych w R są: macierze; ramki (ang. data frames); listy; klasy S3 1
Macierze Macierze można tworzyć z wektorów kolumnowych (o równych wymiarach) za pomocą polecenia cbind: > x=c(1,3);y=c(2,4) > m=cbind(x,y) # z wektorow kolumnowych tworzy macierz > m x y [1,] 1 2 [2,] 3 4 2
Operacje na macierzach Macierz odwrotną można obliczać przy użyciu polecenia solve, a wyznacznik przy pomocy polecenia det > dimnames(m)=null # usuwa nazwy kolumn > solve(m) # oblicza macierz odwrotna do m [,1] [,2] [1,] -2.0 1.0 [2,] 1.5-0.5 > det(m) # oblicza wyznacznik m [1] -2 3
Ramki (data frames) Ramka (ang. data frame) układ wektorów, o tej samej długości, niekoniecznie tego samego typu. Przykładem ramki jest faithful; ramka ta jest dostępna w środowisku R. Składa się on z dwóch wektorów (zmiennych) numerycznych, każda składa się z 252 obserwacji (pomiarów czasu erupcji i czasu oczekiwania na erupcję gejzeru Old Faithful) eruptions czas erupcji (w minutach) waiting czas oczekiwania na erupcję (w minutach) 4
Ramki c.d. Pierwsze 3 obserwacje w zbiorze (ramce) faithful można zapisać wyświetlić na ekranie wydając polecenie > faithful[1:3,] eruptions waiting 1 3.600 79 2 1.800 54 3 3.333 74 Średni czas erupcji wynosi: > mean(faithful$eruptions) [1] 3.487783 5
Listy i klasy typu S3 Struktura składająca się ze składowych o różnych typach (mogą to być wektory, macierze itd.): lista Klasa typu S3: lista z dodanym identyfikatorem typu Wyniki procedur statystycznych, takich jak t.test (wykonuje obliczenia związane z weryfikacją hipotezy dotyczącej średniej lub średnich) są zapisywane do klas typu S3. 6
Rozkłady prawdopodobieństwa W środowisku R można obliczać wartości dystrybuant, kwantyle oraz wartości funkcji gęstości dla wielu rozkładów prawdopodobieństwa; Rozkład Nazwa w R Dodatkowe argumenty dwumianowy binom size, prob jednostajny unif min, max normalny norm mean, sd Poissona pois lambda t Studenta t df Np. dla rozkładu normalnego N(3, 1) wartości funkcji gęstości można obliczać korzystając z funkcji dnorm, wartości dystrybuanty za pomocą funkcji pnorm a kwantyle za pomocą funkcji qnorm 7
Rozkłady prawdopodobieństwa c.d. Zmienna losowa Y ma rozkład N(3, 1). Prawdopobieństwo P (Y 4) = Φ 3,1 (4) jest równe > pnorm(4,mean=3,sd=1) [1] 0.8413447 > pnorm(4,3,1) # krotsza forma [1] 0.8413447 Wartość funkcji gęstości zmiennej Y w punkcie x = 3 φ 3,1 (3) jest równa > dnorm(3,mean=3,sd=1) [1] 0.3989423 8
Rozkłady prawdopodobieństwa Kwantyl rzędu 0.95 rozkładu N(0, 1) jest równy > qnorm(0.95,mean=0,sd=1) [1] 1.644854 a kwantyl rzędu 0,975 rozkładu t-studenta z 10-ma stopniami swobody jest równy > qt(0.975,df=10) [1] 2.228139 9
Rozkłady prawdopodobieństwa Niech X oznacza liczbę orłów otrzymanych po 5-krotnym rzucie monetą ( rzetelną ). Zmienna losowa X ma rozkład Bin(5; 0,5). Prawdopodobieństwo P (X = 1) obliczamy: > dbinom(1,size=5,prob=0.5) [1] 0.15625 (w R gęstość, dla zmiennych losowych dyskretnych, oznacza prawdopodobieństwo przyjęcia przez zmienną losową danej wartości liczbowej). Prawdopobieństwo wyrzucenia co najmniej 3 orłów P (X 3) jest równe > pbinom(3,size=5,prob=0.5) [1] 0.8125 R oblicza kwantyle dla rozkładów dyskretnych wg. wzoru podanego w [6, Rozdz. 8] 10
Generowanie liczb pseudolosowych Sekwencję k liczb pseudolosowych o rozkładzie N(µ, σ) odpowiadającą realizacji losowej próby prostej z rozkładu N(µ, σ) można wygenerować przy pomocy polecenia rnorm. Np. wydając polecenie rnorm(5,3,2) otrzymamy wektor, który odpowiada realizacji 5-elementowej losowej próby prostej. > rnorm(5,3,2) [1] 2.319389 2.844417-1.229590 4.251217 3.152550 Liczby pseudoloswe o rozkładach innych niż normalny można generować przy użyciu poleceń runif (generuje liczby pseudolosowe o rozkładzie jednostajnym), rpois (generuje liczby losowe o rozkładzie Poissona) itd. 11
Wykresy statystyczne histogram Dla danych zapisanych w wektorze numerycznym histogram można sporządzić korzystając z polecenia hist. Histogram dla danych dotyczących cen mieszkań w dzielnicy A można otrzymać w następujący sposób: y=c(65,80,139,180,355,158,240,205,265,305,200,155,209, 310,149,254,188,265,275,200,184,130,260,250,195) hist(y) 12
Histogram liczebności dla danych ceny mieszkań w A Histogram of y Frequency 0 2 4 6 8 50 100 150 200 250 300 350 400 y 13
Histogram... c.d. Chcąc sporządzić histogram probabilistyczny, w którym słupki byłyby zaznaczone na niebiesko, z osią X podpisaną "ceny mieszkań", z osią Y bez żadnego podpisu, z nagłówkiem "Ceny mieszkań - histogram probabil." należy użyć polecenia hist z odpowiednio ustalonymi opcjami: prob=true itd. hist(y,prob=true,col="blue",xlab="ceny mieszkań",ylab="", main="ceny mieszkań - histogram probabil.") Rysunek można zapisać do pliku typu png (pliki tego typu można łatwo wkleić do Worda) lub Postscript (w oknie graficznym trzeba skorzystać z opcji File-> Save as) 14
Polecenie png Pliku typu png z odpowiednim histogram probabilistycznym można wygenerować wydając polecenia: png(file="cenmiesz.png") hist(y,prob=true,col="blue",xlab="ceny mieszkań",ylab="", main="ceny mieszkań - histogram probabil.") dev.off() 15
Histogram probabilistyczny dla danych ceny mieszkań w A, odpowiednio opisany 16
Szereg rozdzielczy Za pomocą polecenia hist można skonstruować szereg rozdzielczy, odpowiadający histogramowi liczebności, który został przez nas skonstruowany dla danych ceny mieszkań w A : > wynh=hist(y,prob=true,col="blue",xlab="ceny mieszkań", ylab="", main="ceny mieszkań - histogram probabil.") > names(wynh) [1] "breaks" "counts" "intensities" "density" "mids" [6] "xname" "equidist" > wynh$breaks [1] 50 100 150 200 250 300 350 400 > wynh$counts [1] 2 3 8 4 5 2 1 17
Literatura [1] Venables, W., Smith, D., An Introduction to R. Książka dostępna na stronie http://www.r-project.org/ 18