Samouczek R

📗 Wprowadzenie

W niniejszym pliku przedstawiono zawartość całego opracowania - razem 14 rozdziałów.

Bezpośrednio po wskazanych komendach podany jest wynik otrzymywany w programie R.

Po lewej stronie zamieszczono menu pozwalające wygodnie przemieszczać się po wyróżnionych tematach.

We wszystkich obszarach z kodem R umieszczono przyciski pozwalające na wygodne kopiowanie kodu i następnie wklejanie go do programu R.

▶️ Tematyka

  1. Podstawy pracy z programem R
  2. Struktury danych
  3. Instrukcje warunkowe oraz pętle
  4. Funkcje i operacje matematyczne oraz statystyczne
  5. Import i eksport danych. Wykresy. Zmienne losowe
  6. Wizualizacja z pakietem lattice
  7. Model liniowy
  8. Weryfikacja hipotez i pakiet dplyr
  9. Pakiet ggplot2. Podstawy konstrukcji wykresów
  10. Pakiet patchwork
  11. Pakiety ggplot2 i gapminder. Podstawy animacji
  12. Animacje dla rzeczywistych danych z BDL
  13. Interaktywny dashboard z pakietem shiny
  14. Uczenie maszynowe z pakietem mlr3


📗 01. Podstawy pracy z programem R

📘 Początek pracy z programem R

# To jest komentarz. Komentarze rozpoczynamy znakiem #
## tak oznaczane będą wyniki wykonanych poleceń

Wypisanie liczb od 1 do 10 z odstępem co 1

1:10 
##  [1]  1  2  3  4  5  6  7  8  9 10
# Ctrl+R - wykonanie kodu z edytora R

Pomoc w programie R (przykład)

?plot
## uruchamianie serwera httpd dla pomocy ... wykonano

❕ Załadowanie pakietu ggplot2

# install.packages("ggplot2")
# można też zapisać
# install.packages('ggplot2')
library(ggplot2)
## Warning: pakiet 'ggplot2' został zbudowany w wersji R 4.2.3
# ls('package:ggplot2')

R jako kalukulator

2+2
## [1] 4
20-2
## [1] 18
6*7
## [1] 42
30/5 
## [1] 6
# 30\5 błąd, bo ukośnik jest w przeciwną stronę

2^5
## [1] 32
sqrt(4)
## [1] 2
log(12)
## [1] 2.484907
log(16,2)
## [1] 4
pi
## [1] 3.141593
sin(pi)
## [1] 1.224606e-16

Symbol Newtona

choose(4,1)
## [1] 4

Zaokrglenia liczb

round(2.4347247)
## [1] 2
round(2.55)
## [1] 3
round(2.4347247,digits=2)
## [1] 2.43

Przypisywanie wartości do zmiennych

x=7
x
## [1] 7
print(x)
## [1] 7
y<-10
y
## [1] 10
z=x*y
z
## [1] 70
z=x+y
z
## [1] 17
x;y;z
## [1] 7
## [1] 10
## [1] 17

Lista nazw zmiennych

ls()
## [1] "x" "y" "z"
rm(z)
ls()
## [1] "x" "y"
rm(list=ls())
ls()
## character(0)

📘 Typy obiektów

Typ liczbowy

n1=2.4535
n1
## [1] 2.4535
print(n1,3) #wyświetlenie 3 cyfr znaczących (ostatni element jest zaokrąglany)
## [1] 2.45
round(n1,3)
## [1] 2.454

Typ znakowy

t1="Patrycja"
t1
## [1] "Patrycja"
t2='Dawid'
t2
## [1] "Dawid"
print(t2,quote=FALSE)
## [1] Dawid
t3="to jest pies"

sub("pies","kot",t3)
## [1] "to jest kot"
paste(t1,"i",t2)
## [1] "Patrycja i Dawid"
substr(t3,9,12) #wyodrębnianie tekstu - od 9 znaku do 12
## [1] "pies"

Typ logiczny

l1=TRUE
l2=T
l3=FALSE
F
## [1] FALSE

📘 Operatory logiczne

Alternatywa (lub)

l1|l3
## [1] TRUE

Koniunkcja (i)

l1&l3
## [1] FALSE

Zaprzeczenie

!l1
## [1] FALSE

Wybrane operacje logiczne

1==1
## [1] TRUE
2>3
## [1] FALSE
25<=25
## [1] TRUE
23>=7
## [1] TRUE
(12>2)&(15==12)
## [1] FALSE
(sqrt(159)==13)&(7^5>252)
## [1] FALSE

📘 Klasy obiektów

class(t1)
## [1] "character"
class(n1)
## [1] "numeric"
identical(t1,n1)
## [1] FALSE
ls()
## [1] "l1" "l2" "l3" "n1" "t1" "t2" "t3"
ls.str()
## l1 :  logi TRUE
## l2 :  logi TRUE
## l3 :  logi FALSE
## n1 :  num 2.45
## t1 :  chr "Patrycja"
## t2 :  chr "Dawid"
## t3 :  chr "to jest pies"
is.logical(t1)
## [1] FALSE
is.numeric(t1)
## [1] FALSE
is.character(t1)
## [1] TRUE
is.matrix(t1)
## [1] FALSE

📘 Wektory

w1=c(10,9,8,7,6,5)
w1
## [1] 10  9  8  7  6  5
w2=c(T,T,F,F)
w2
## [1]  TRUE  TRUE FALSE FALSE
w3=c("Dawid","Wojtek","Robert","Kuba","Klaudia","Luiza")
w3
## [1] "Dawid"   "Wojtek"  "Robert"  "Kuba"    "Klaudia" "Luiza"
1:10
##  [1]  1  2  3  4  5  6  7  8  9 10
10:1
##  [1] 10  9  8  7  6  5  4  3  2  1
1.2:20.2
##  [1]  1.2  2.2  3.2  4.2  5.2  6.2  7.2  8.2  9.2 10.2 11.2 12.2 13.2 14.2 15.2
## [16] 16.2 17.2 18.2 19.2 20.2
1.2:20.3
##  [1]  1.2  2.2  3.2  4.2  5.2  6.2  7.2  8.2  9.2 10.2 11.2 12.2 13.2 14.2 15.2
## [16] 16.2 17.2 18.2 19.2 20.2
1.2:20.1
##  [1]  1.2  2.2  3.2  4.2  5.2  6.2  7.2  8.2  9.2 10.2 11.2 12.2 13.2 14.2 15.2
## [16] 16.2 17.2 18.2 19.2
# ?seq
seq(16,30,3)
## [1] 16 19 22 25 28
seq(to=30,by=3,from=16)
## [1] 16 19 22 25 28
w4=seq(to=30,from=16,3)
w4
## [1] 16 19 22 25 28
w5=c(23,23,1,2,3,1)

ls()
##  [1] "l1" "l2" "l3" "n1" "t1" "t2" "t3" "w1" "w2" "w3" "w4" "w5"
# w1 + w3
w1;w3
## [1] 10  9  8  7  6  5
## [1] "Dawid"   "Wojtek"  "Robert"  "Kuba"    "Klaudia" "Luiza"
w1+w5
## [1] 33 32  9  9  9  6
w1*w5
## [1] 230 207   8  14  18   5
w6=seq(7,10,length=10)
w6
##  [1]  7.000000  7.333333  7.666667  8.000000  8.333333  8.666667  9.000000
##  [8]  9.333333  9.666667 10.000000
length(w6)
## [1] 10
any(w6<0)
## [1] FALSE
any(w6>0)
## [1] TRUE
w6>0
##  [1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
all(w1==w3)
## [1] FALSE

📗 02. Struktury danych

📘 Wektory

Funkcja rep()

?rep

rep(1,100)  #Powielenie 1-ki sto razy.
##   [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
##  [38] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
##  [75] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
rep(c(1,2,3),3)
## [1] 1 2 3 1 2 3 1 2 3
rep("pies",2)
## [1] "pies" "pies"
rep(c(1,2,3),each=3)
## [1] 1 1 1 2 2 2 3 3 3
# Jak uzyskać wektor liczb 9 8 7 9 8 7 2 2 2 1 1 1?

# 1 sposób
x1=rep(c(9,8,7),2)
x1
## [1] 9 8 7 9 8 7
x2=rep(c(2,1),each=3)
x2
## [1] 2 2 2 1 1 1
c(x1,x2)
##  [1] 9 8 7 9 8 7 2 2 2 1 1 1
# 2 sposób - kod w jednej linijce
c(rep(c(9,8,7),2),rep(c(2,1),each=3))
##  [1] 9 8 7 9 8 7 2 2 2 1 1 1

Sampling - pobieranie próbek

?sample
s1=sample(1:7,10,replace=T)
s1
##  [1] 7 2 1 7 6 6 1 2 6 6
# sample(1:7,10)    
# Wykonując kod pojawi się błąd, ponieważ zbiór, z którego pobieramy liczby jest za mały.

# Wektor s2 będzie pobierał 5 liczb z wektora liczb pierwszych z przedziału od 1 do 20.
s2<-sample(c(2,3,5,7,11,13,17,19),5)
s2
## [1]  7  5  3 19 13
s3<-sample(1:4,15,prob=c(0.4,0.1,0.3,0.2),replace=T)
s3  
##  [1] 4 4 3 3 1 3 4 1 3 1 2 4 3 4 4

Maskowanie dla wektorów

x=c(19,23,27,15,43)
x
## [1] 19 23 27 15 43
M=c(T,F,F,T,T)
M
## [1]  TRUE FALSE FALSE  TRUE  TRUE
x[M]
## [1] 19 15 43

Indeksy dla wektorów

x[2]
## [1] 23
x[2:5]
## [1] 23 27 15 43
x[c(1,5)]
## [1] 19 43
x[length(x)]
## [1] 43
x[c(1,length(x))]
## [1] 19 43
x[-2]
## [1] 19 27 15 43
x[-c(1,3)]
## [1] 23 15 43
x[-(1:3)]
## [1] 15 43
x[4]=-1

x[-4]=0
x
## [1]  0  0  0 -1  0
x=c(19,23,27,15,43)
x
## [1] 19 23 27 15 43
x>20
## [1] FALSE  TRUE  TRUE FALSE  TRUE
x[x>20]
## [1] 23 27 43

📘 Typ czynnikowy (factor)

x=c("pop","rock","rap","rap")
class(x)
## [1] "character"
f<-factor(x)
f
## [1] pop  rock rap  rap 
## Levels: pop rap rock
factor(x,exclude="pop")
## [1] <NA> rock rap  rap 
## Levels: rap rock
f=factor(x,label=c("1 gatunek","2 gatunek","3 gatunek"))
f
## [1] 1 gatunek 3 gatunek 2 gatunek 2 gatunek
## Levels: 1 gatunek 2 gatunek 3 gatunek
f1=factor(c(1,2,1,3,1,2),levels=1:4)
f1
## [1] 1 2 1 3 1 2
## Levels: 1 2 3 4
levels(f1)=c("nie podoba mi się","średnie","okej","super")
f1
## [1] nie podoba mi się średnie           nie podoba mi się okej             
## [5] nie podoba mi się średnie          
## Levels: nie podoba mi się średnie okej super
summary(f1)
## nie podoba mi się           średnie              okej             super 
##                 3                 2                 1                 0
f1[length(f1)]="super"
f1
## [1] nie podoba mi się średnie           nie podoba mi się okej             
## [5] nie podoba mi się super            
## Levels: nie podoba mi się średnie okej super
summary(f1)
## nie podoba mi się           średnie              okej             super 
##                 3                 1                 1                 1
as.numeric(f1)
## [1] 1 2 1 3 1 4

📘 Macierze (matrix)

a=1:5
b=5:1
c=c(1,2,34,5,0)
a;b;c
## [1] 1 2 3 4 5
## [1] 5 4 3 2 1
## [1]  1  2 34  5  0
m1=cbind(a,c,b)
m2=rbind(c,b,a)
m3=cbind(m1,c)

# cbind(m1,m2) 
# Niewykonalne ze względu na różne wymiary obiektów.

?matrix

m4=matrix(0,ncol=4,nrow=3)
m4
##      [,1] [,2] [,3] [,4]
## [1,]    0    0    0    0
## [2,]    0    0    0    0
## [3,]    0    0    0    0
m5=matrix(1:12,nrow=3,ncol=4)
m5
##      [,1] [,2] [,3] [,4]
## [1,]    1    4    7   10
## [2,]    2    5    8   11
## [3,]    3    6    9   12
matrix(1:12,nrow=3,ncol=4,byrow=T)
##      [,1] [,2] [,3] [,4]
## [1,]    1    2    3    4
## [2,]    5    6    7    8
## [3,]    9   10   11   12
diag(4)
##      [,1] [,2] [,3] [,4]
## [1,]    1    0    0    0
## [2,]    0    1    0    0
## [3,]    0    0    1    0
## [4,]    0    0    0    1
diag(c(4,3,2,3))
##      [,1] [,2] [,3] [,4]
## [1,]    4    0    0    0
## [2,]    0    3    0    0
## [3,]    0    0    2    0
## [4,]    0    0    0    3

Maskowanie dla macierzy i ramek danych

k=c(F,F,F,T)
w=c(F,F,T)

m5[w,k]
## [1] 12

Indeksy dla macierzy i ramek danych

m5[3,2] #Wybór elementu z 3 wiersza i 2 kolumny.
## [1] 6
m5[,2]
## [1] 4 5 6
m5[1,]
## [1]  1  4  7 10
m5[1:2,c(1,4)]
##      [,1] [,2]
## [1,]    1   10
## [2,]    2   11
m5[,-3]
##      [,1] [,2] [,3]
## [1,]    1    4   10
## [2,]    2    5   11
## [3,]    3    6   12
m5
##      [,1] [,2] [,3] [,4]
## [1,]    1    4    7   10
## [2,]    2    5    8   11
## [3,]    3    6    9   12
m5[2,4]=0
m5
##      [,1] [,2] [,3] [,4]
## [1,]    1    4    7   10
## [2,]    2    5    8    0
## [3,]    3    6    9   12
m5>6
##       [,1]  [,2] [,3]  [,4]
## [1,] FALSE FALSE TRUE  TRUE
## [2,] FALSE FALSE TRUE FALSE
## [3,] FALSE FALSE TRUE  TRUE
m5[m5>6]
## [1]  7  8  9 10 12
m5[m5>6]=-1
m5
##      [,1] [,2] [,3] [,4]
## [1,]    1    4   -1   -1
## [2,]    2    5   -1    0
## [3,]    3    6   -1   -1

Obliczenia na macierzach

length(m5)
## [1] 12
nrow(m5)
## [1] 3
ncol(m5)
## [1] 4
# Mnożenie macierzy
m=matrix(1:4,2,2)
mm=matrix(4:1,2,2)

m;mm
##      [,1] [,2]
## [1,]    1    3
## [2,]    2    4
##      [,1] [,2]
## [1,]    4    2
## [2,]    3    1
m*mm
##      [,1] [,2]
## [1,]    4    6
## [2,]    6    4
m%*%mm
##      [,1] [,2]
## [1,]   13    5
## [2,]   20    8
det(m)
## [1] -2
t(m)
##      [,1] [,2]
## [1,]    1    2
## [2,]    3    4
solve(m)
##      [,1] [,2]
## [1,]   -2  1.5
## [2,]    1 -0.5
sum(m)
## [1] 10
mean(m)
## [1] 2.5
apply(m,1,sum)
## [1] 4 6
apply(m,2,sum)
## [1] 3 7
apply(m,1,mean)
## [1] 2 3

Przykłady

plec=c("M","K","M","M","K")
zakupy=c(2,0.5,3.2,1.25,3) #Waga kupionych jabłek (w kg)

# Ile jabłek w gramach kupili mężczyźni?
# 1kg=1000g

# 1 sposób
sum(zakupy[plec=="M"]*1000)
## [1] 6450
# 2 sposób
plec=c(1,0,1,1,0)
plec*(zakupy*1000)
## [1] 2000    0 3200 1250    0
sum(plec*(zakupy*1000))
## [1] 6450
# 3 sposób
sum(zakupy[c(1,3,4)])*1000
## [1] 6450
# 4 sposób
sum(zakupy[-c(2,5)])*1000
## [1] 6450

📘 Tablice (array)

t=array(sample(1:100,replace=T),c(3,2,3))
t
## , , 1
## 
##      [,1] [,2]
## [1,]   61   19
## [2,]   38   96
## [3,]   10   34
## 
## , , 2
## 
##      [,1] [,2]
## [1,]   82   33
## [2,]   99   23
## [3,]   48   33
## 
## , , 3
## 
##      [,1] [,2]
## [1,]   56   83
## [2,]   62   89
## [3,]    6   30
array(sample(1:100,replace=T),c(3,2))
##      [,1] [,2]
## [1,]   68   68
## [2,]   38   42
## [3,]   86   25
t[1,2,3]
## [1] 83
t[,,3]  #Wyświetlenie 3 warstwy z tablicy t.
##      [,1] [,2]
## [1,]   56   83
## [2,]   62   89
## [3,]    6   30
t[c(1,2),,2]
##      [,1] [,2]
## [1,]   82   33
## [2,]   99   23
dim(t)
## [1] 3 2 3
dim(t)[2]
## [1] 2
ncol(t)
## [1] 2
dim(t)=c(3,6)
t
##      [,1] [,2] [,3] [,4] [,5] [,6]
## [1,]   61   19   82   33   56   83
## [2,]   38   96   99   23   62   89
## [3,]   10   34   48   33    6   30
t=array(sample(1:100,replace=T),c(3,2,3))
t
## , , 1
## 
##      [,1] [,2]
## [1,]   61   53
## [2,]   81   82
## [3,]   59   42
## 
## , , 2
## 
##      [,1] [,2]
## [1,]   30   83
## [2,]   21   34
## [3,]   15   90
## 
## , , 3
## 
##      [,1] [,2]
## [1,]   92   98
## [2,]   64   53
## [3,]   57   37
apply(t,2,sd) #2 - oznacza kolumny
## [1] 26.31064 24.67342
apply(t,3,sd)[2]  #3 - oznacza warstwy, co oznacza, że obliczane są odchylenia standardowe dla warstw. [2] pozwala na wybranie 2 elementu z uzyskanego wektora, czyli odchylenia standardowego dla elementów z 2-giej warstwy.
## [1] 32.52537

📘 Ramki danych (data.frame)

# Ramka posiada dane o pracownikach: imię, wiek, fakt czy ktoś złożył wypowiedzenie, staż pracy (w latach).

ramka=data.frame(c("Ola","Kamil","Maciek","Asia"),c(21,32,38,40),c(T,F,F,F),seq(2,12,3))
ramka
##   c..Ola....Kamil....Maciek....Asia.. c.21..32..38..40. c.T..F..F..F.
## 1                                 Ola                21          TRUE
## 2                               Kamil                32         FALSE
## 3                              Maciek                38         FALSE
## 4                                Asia                40         FALSE
##   seq.2..12..3.
## 1             2
## 2             5
## 3             8
## 4            11
names(ramka)
## [1] "c..Ola....Kamil....Maciek....Asia.." "c.21..32..38..40."                  
## [3] "c.T..F..F..F."                       "seq.2..12..3."
colnames(ramka)
## [1] "c..Ola....Kamil....Maciek....Asia.." "c.21..32..38..40."                  
## [3] "c.T..F..F..F."                       "seq.2..12..3."
colnames(ramka)=c("imię","wiek","wypowiedzenie","staż pracy")
ramka
##     imię wiek wypowiedzenie staż pracy
## 1    Ola   21          TRUE          2
## 2  Kamil   32         FALSE          5
## 3 Maciek   38         FALSE          8
## 4   Asia   40         FALSE         11
rownames(ramka)
## [1] "1" "2" "3" "4"
# Zmiana nazw wierszy na obserwacja 1, obserwacja 2, ... .

# 1 sposób
t1="Obserwacja"
t1
## [1] "Obserwacja"
rownames(ramka)=paste(t1,rownames(ramka))
ramka
##                imię wiek wypowiedzenie staż pracy
## Obserwacja 1    Ola   21          TRUE          2
## Obserwacja 2  Kamil   32         FALSE          5
## Obserwacja 3 Maciek   38         FALSE          8
## Obserwacja 4   Asia   40         FALSE         11
# 2 sposób
rownames(ramka)= paste('obserwacja',1:length(ramka))
ramka
##                imię wiek wypowiedzenie staż pracy
## obserwacja 1    Ola   21          TRUE          2
## obserwacja 2  Kamil   32         FALSE          5
## obserwacja 3 Maciek   38         FALSE          8
## obserwacja 4   Asia   40         FALSE         11
rownames(ramka)=paste("obs",1:length(ramka),sep="")
ramka
##        imię wiek wypowiedzenie staż pracy
## obs1    Ola   21          TRUE          2
## obs2  Kamil   32         FALSE          5
## obs3 Maciek   38         FALSE          8
## obs4   Asia   40         FALSE         11
dimnames(ramka)
## [[1]]
## [1] "obs1" "obs2" "obs3" "obs4"
## 
## [[2]]
## [1] "imię"          "wiek"          "wypowiedzenie" "staż pracy"
ramka[3]
##      wypowiedzenie
## obs1          TRUE
## obs2         FALSE
## obs3         FALSE
## obs4         FALSE
ramka[[3]]
## [1]  TRUE FALSE FALSE FALSE
mean(ramka[[4]])
## [1] 6.5
mean(ramka[4])  #Błąd, ponieważ z takiego typu nie można policzyć średniej - natomiast z wektorów można .
## Warning in mean.default(ramka[4]): argument nie jest wartością liczbową ani
## logiczną: zwracanie wartości NA
## [1] NA
class(ramka[[4]])==class(ramka[4])
## [1] FALSE
ramka["wiek"]
##      wiek
## obs1   21
## obs2   32
## obs3   38
## obs4   40
ramka[["wiek"]]
## [1] 21 32 38 40
ramka$wiek
## [1] 21 32 38 40
mean(ramka$wiek)
## [1] 32.75
ramka[2,4]
## [1] 5
ramka
##        imię wiek wypowiedzenie staż pracy
## obs1    Ola   21          TRUE          2
## obs2  Kamil   32         FALSE          5
## obs3 Maciek   38         FALSE          8
## obs4   Asia   40         FALSE         11
names(ramka)[4]
## [1] "staż pracy"
names(ramka)[4]="staż"
ramka
##        imię wiek wypowiedzenie staż
## obs1    Ola   21          TRUE    2
## obs2  Kamil   32         FALSE    5
## obs3 Maciek   38         FALSE    8
## obs4   Asia   40         FALSE   11
ramka['obs2',]
##       imię wiek wypowiedzenie staż
## obs2 Kamil   32         FALSE    5
# Jak wyświetlić dane o osobie, która złożyła wypowiedzenie?
ramka[,3]==T
## [1]  TRUE FALSE FALSE FALSE
ramka[,"wypowiedzenie"]==T
## [1]  TRUE FALSE FALSE FALSE
ramka[ramka[,3]==T,]
##      imię wiek wypowiedzenie staż
## obs1  Ola   21          TRUE    2
ramka[ramka[,"wypowiedzenie"]==T,]
##      imię wiek wypowiedzenie staż
## obs1  Ola   21          TRUE    2
sapply(ramka,class)
##          imię          wiek wypowiedzenie          staż 
##   "character"     "numeric"     "logical"     "numeric"
lapply(ramka,class)
## $imię
## [1] "character"
## 
## $wiek
## [1] "numeric"
## 
## $wypowiedzenie
## [1] "logical"
## 
## $staż
## [1] "numeric"
#Zbiór danych: iris
data(iris)
iris
##     Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
## 1            5.1         3.5          1.4         0.2     setosa
## 2            4.9         3.0          1.4         0.2     setosa
## 3            4.7         3.2          1.3         0.2     setosa
## 4            4.6         3.1          1.5         0.2     setosa
## 5            5.0         3.6          1.4         0.2     setosa
## 6            5.4         3.9          1.7         0.4     setosa
## 7            4.6         3.4          1.4         0.3     setosa
## 8            5.0         3.4          1.5         0.2     setosa
## 9            4.4         2.9          1.4         0.2     setosa
## 10           4.9         3.1          1.5         0.1     setosa
## 11           5.4         3.7          1.5         0.2     setosa
## 12           4.8         3.4          1.6         0.2     setosa
## 13           4.8         3.0          1.4         0.1     setosa
## 14           4.3         3.0          1.1         0.1     setosa
## 15           5.8         4.0          1.2         0.2     setosa
## 16           5.7         4.4          1.5         0.4     setosa
## 17           5.4         3.9          1.3         0.4     setosa
## 18           5.1         3.5          1.4         0.3     setosa
## 19           5.7         3.8          1.7         0.3     setosa
## 20           5.1         3.8          1.5         0.3     setosa
## 21           5.4         3.4          1.7         0.2     setosa
## 22           5.1         3.7          1.5         0.4     setosa
## 23           4.6         3.6          1.0         0.2     setosa
## 24           5.1         3.3          1.7         0.5     setosa
## 25           4.8         3.4          1.9         0.2     setosa
## 26           5.0         3.0          1.6         0.2     setosa
## 27           5.0         3.4          1.6         0.4     setosa
## 28           5.2         3.5          1.5         0.2     setosa
## 29           5.2         3.4          1.4         0.2     setosa
## 30           4.7         3.2          1.6         0.2     setosa
## 31           4.8         3.1          1.6         0.2     setosa
## 32           5.4         3.4          1.5         0.4     setosa
## 33           5.2         4.1          1.5         0.1     setosa
## 34           5.5         4.2          1.4         0.2     setosa
## 35           4.9         3.1          1.5         0.2     setosa
## 36           5.0         3.2          1.2         0.2     setosa
## 37           5.5         3.5          1.3         0.2     setosa
## 38           4.9         3.6          1.4         0.1     setosa
## 39           4.4         3.0          1.3         0.2     setosa
## 40           5.1         3.4          1.5         0.2     setosa
## 41           5.0         3.5          1.3         0.3     setosa
## 42           4.5         2.3          1.3         0.3     setosa
## 43           4.4         3.2          1.3         0.2     setosa
## 44           5.0         3.5          1.6         0.6     setosa
## 45           5.1         3.8          1.9         0.4     setosa
## 46           4.8         3.0          1.4         0.3     setosa
## 47           5.1         3.8          1.6         0.2     setosa
## 48           4.6         3.2          1.4         0.2     setosa
## 49           5.3         3.7          1.5         0.2     setosa
## 50           5.0         3.3          1.4         0.2     setosa
## 51           7.0         3.2          4.7         1.4 versicolor
## 52           6.4         3.2          4.5         1.5 versicolor
## 53           6.9         3.1          4.9         1.5 versicolor
## 54           5.5         2.3          4.0         1.3 versicolor
## 55           6.5         2.8          4.6         1.5 versicolor
## 56           5.7         2.8          4.5         1.3 versicolor
## 57           6.3         3.3          4.7         1.6 versicolor
## 58           4.9         2.4          3.3         1.0 versicolor
## 59           6.6         2.9          4.6         1.3 versicolor
## 60           5.2         2.7          3.9         1.4 versicolor
## 61           5.0         2.0          3.5         1.0 versicolor
## 62           5.9         3.0          4.2         1.5 versicolor
## 63           6.0         2.2          4.0         1.0 versicolor
## 64           6.1         2.9          4.7         1.4 versicolor
## 65           5.6         2.9          3.6         1.3 versicolor
## 66           6.7         3.1          4.4         1.4 versicolor
## 67           5.6         3.0          4.5         1.5 versicolor
## 68           5.8         2.7          4.1         1.0 versicolor
## 69           6.2         2.2          4.5         1.5 versicolor
## 70           5.6         2.5          3.9         1.1 versicolor
## 71           5.9         3.2          4.8         1.8 versicolor
## 72           6.1         2.8          4.0         1.3 versicolor
## 73           6.3         2.5          4.9         1.5 versicolor
## 74           6.1         2.8          4.7         1.2 versicolor
## 75           6.4         2.9          4.3         1.3 versicolor
## 76           6.6         3.0          4.4         1.4 versicolor
## 77           6.8         2.8          4.8         1.4 versicolor
## 78           6.7         3.0          5.0         1.7 versicolor
## 79           6.0         2.9          4.5         1.5 versicolor
## 80           5.7         2.6          3.5         1.0 versicolor
## 81           5.5         2.4          3.8         1.1 versicolor
## 82           5.5         2.4          3.7         1.0 versicolor
## 83           5.8         2.7          3.9         1.2 versicolor
## 84           6.0         2.7          5.1         1.6 versicolor
## 85           5.4         3.0          4.5         1.5 versicolor
## 86           6.0         3.4          4.5         1.6 versicolor
## 87           6.7         3.1          4.7         1.5 versicolor
## 88           6.3         2.3          4.4         1.3 versicolor
## 89           5.6         3.0          4.1         1.3 versicolor
## 90           5.5         2.5          4.0         1.3 versicolor
## 91           5.5         2.6          4.4         1.2 versicolor
## 92           6.1         3.0          4.6         1.4 versicolor
## 93           5.8         2.6          4.0         1.2 versicolor
## 94           5.0         2.3          3.3         1.0 versicolor
## 95           5.6         2.7          4.2         1.3 versicolor
## 96           5.7         3.0          4.2         1.2 versicolor
## 97           5.7         2.9          4.2         1.3 versicolor
## 98           6.2         2.9          4.3         1.3 versicolor
## 99           5.1         2.5          3.0         1.1 versicolor
## 100          5.7         2.8          4.1         1.3 versicolor
## 101          6.3         3.3          6.0         2.5  virginica
## 102          5.8         2.7          5.1         1.9  virginica
## 103          7.1         3.0          5.9         2.1  virginica
## 104          6.3         2.9          5.6         1.8  virginica
## 105          6.5         3.0          5.8         2.2  virginica
## 106          7.6         3.0          6.6         2.1  virginica
## 107          4.9         2.5          4.5         1.7  virginica
## 108          7.3         2.9          6.3         1.8  virginica
## 109          6.7         2.5          5.8         1.8  virginica
## 110          7.2         3.6          6.1         2.5  virginica
## 111          6.5         3.2          5.1         2.0  virginica
## 112          6.4         2.7          5.3         1.9  virginica
## 113          6.8         3.0          5.5         2.1  virginica
## 114          5.7         2.5          5.0         2.0  virginica
## 115          5.8         2.8          5.1         2.4  virginica
## 116          6.4         3.2          5.3         2.3  virginica
## 117          6.5         3.0          5.5         1.8  virginica
## 118          7.7         3.8          6.7         2.2  virginica
## 119          7.7         2.6          6.9         2.3  virginica
## 120          6.0         2.2          5.0         1.5  virginica
## 121          6.9         3.2          5.7         2.3  virginica
## 122          5.6         2.8          4.9         2.0  virginica
## 123          7.7         2.8          6.7         2.0  virginica
## 124          6.3         2.7          4.9         1.8  virginica
## 125          6.7         3.3          5.7         2.1  virginica
## 126          7.2         3.2          6.0         1.8  virginica
## 127          6.2         2.8          4.8         1.8  virginica
## 128          6.1         3.0          4.9         1.8  virginica
## 129          6.4         2.8          5.6         2.1  virginica
## 130          7.2         3.0          5.8         1.6  virginica
## 131          7.4         2.8          6.1         1.9  virginica
## 132          7.9         3.8          6.4         2.0  virginica
## 133          6.4         2.8          5.6         2.2  virginica
## 134          6.3         2.8          5.1         1.5  virginica
## 135          6.1         2.6          5.6         1.4  virginica
## 136          7.7         3.0          6.1         2.3  virginica
## 137          6.3         3.4          5.6         2.4  virginica
## 138          6.4         3.1          5.5         1.8  virginica
## 139          6.0         3.0          4.8         1.8  virginica
## 140          6.9         3.1          5.4         2.1  virginica
## 141          6.7         3.1          5.6         2.4  virginica
## 142          6.9         3.1          5.1         2.3  virginica
## 143          5.8         2.7          5.1         1.9  virginica
## 144          6.8         3.2          5.9         2.3  virginica
## 145          6.7         3.3          5.7         2.5  virginica
## 146          6.7         3.0          5.2         2.3  virginica
## 147          6.3         2.5          5.0         1.9  virginica
## 148          6.5         3.0          5.2         2.0  virginica
## 149          6.2         3.4          5.4         2.3  virginica
## 150          5.9         3.0          5.1         1.8  virginica
View(iris)

head(iris)
##   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1          5.1         3.5          1.4         0.2  setosa
## 2          4.9         3.0          1.4         0.2  setosa
## 3          4.7         3.2          1.3         0.2  setosa
## 4          4.6         3.1          1.5         0.2  setosa
## 5          5.0         3.6          1.4         0.2  setosa
## 6          5.4         3.9          1.7         0.4  setosa
head(iris,2)
##   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1          5.1         3.5          1.4         0.2  setosa
## 2          4.9         3.0          1.4         0.2  setosa
tail(iris)
##     Sepal.Length Sepal.Width Petal.Length Petal.Width   Species
## 145          6.7         3.3          5.7         2.5 virginica
## 146          6.7         3.0          5.2         2.3 virginica
## 147          6.3         2.5          5.0         1.9 virginica
## 148          6.5         3.0          5.2         2.0 virginica
## 149          6.2         3.4          5.4         2.3 virginica
## 150          5.9         3.0          5.1         1.8 virginica
dim(ramka)
## [1] 4 4
attach(iris)
Species
##   [1] setosa     setosa     setosa     setosa     setosa     setosa    
##   [7] setosa     setosa     setosa     setosa     setosa     setosa    
##  [13] setosa     setosa     setosa     setosa     setosa     setosa    
##  [19] setosa     setosa     setosa     setosa     setosa     setosa    
##  [25] setosa     setosa     setosa     setosa     setosa     setosa    
##  [31] setosa     setosa     setosa     setosa     setosa     setosa    
##  [37] setosa     setosa     setosa     setosa     setosa     setosa    
##  [43] setosa     setosa     setosa     setosa     setosa     setosa    
##  [49] setosa     setosa     versicolor versicolor versicolor versicolor
##  [55] versicolor versicolor versicolor versicolor versicolor versicolor
##  [61] versicolor versicolor versicolor versicolor versicolor versicolor
##  [67] versicolor versicolor versicolor versicolor versicolor versicolor
##  [73] versicolor versicolor versicolor versicolor versicolor versicolor
##  [79] versicolor versicolor versicolor versicolor versicolor versicolor
##  [85] versicolor versicolor versicolor versicolor versicolor versicolor
##  [91] versicolor versicolor versicolor versicolor versicolor versicolor
##  [97] versicolor versicolor versicolor versicolor virginica  virginica 
## [103] virginica  virginica  virginica  virginica  virginica  virginica 
## [109] virginica  virginica  virginica  virginica  virginica  virginica 
## [115] virginica  virginica  virginica  virginica  virginica  virginica 
## [121] virginica  virginica  virginica  virginica  virginica  virginica 
## [127] virginica  virginica  virginica  virginica  virginica  virginica 
## [133] virginica  virginica  virginica  virginica  virginica  virginica 
## [139] virginica  virginica  virginica  virginica  virginica  virginica 
## [145] virginica  virginica  virginica  virginica  virginica  virginica 
## Levels: setosa versicolor virginica
detach(iris)
# Species - Jeśli ponownie wpisze się kod: Species, wówczas wystąpi błąd.

Funkcja subset

#Funkcja subset pozwala wyborać wiersze z pewnego zbioru danych.
subset(iris,Species=="virginica")
##     Sepal.Length Sepal.Width Petal.Length Petal.Width   Species
## 101          6.3         3.3          6.0         2.5 virginica
## 102          5.8         2.7          5.1         1.9 virginica
## 103          7.1         3.0          5.9         2.1 virginica
## 104          6.3         2.9          5.6         1.8 virginica
## 105          6.5         3.0          5.8         2.2 virginica
## 106          7.6         3.0          6.6         2.1 virginica
## 107          4.9         2.5          4.5         1.7 virginica
## 108          7.3         2.9          6.3         1.8 virginica
## 109          6.7         2.5          5.8         1.8 virginica
## 110          7.2         3.6          6.1         2.5 virginica
## 111          6.5         3.2          5.1         2.0 virginica
## 112          6.4         2.7          5.3         1.9 virginica
## 113          6.8         3.0          5.5         2.1 virginica
## 114          5.7         2.5          5.0         2.0 virginica
## 115          5.8         2.8          5.1         2.4 virginica
## 116          6.4         3.2          5.3         2.3 virginica
## 117          6.5         3.0          5.5         1.8 virginica
## 118          7.7         3.8          6.7         2.2 virginica
## 119          7.7         2.6          6.9         2.3 virginica
## 120          6.0         2.2          5.0         1.5 virginica
## 121          6.9         3.2          5.7         2.3 virginica
## 122          5.6         2.8          4.9         2.0 virginica
## 123          7.7         2.8          6.7         2.0 virginica
## 124          6.3         2.7          4.9         1.8 virginica
## 125          6.7         3.3          5.7         2.1 virginica
## 126          7.2         3.2          6.0         1.8 virginica
## 127          6.2         2.8          4.8         1.8 virginica
## 128          6.1         3.0          4.9         1.8 virginica
## 129          6.4         2.8          5.6         2.1 virginica
## 130          7.2         3.0          5.8         1.6 virginica
## 131          7.4         2.8          6.1         1.9 virginica
## 132          7.9         3.8          6.4         2.0 virginica
## 133          6.4         2.8          5.6         2.2 virginica
## 134          6.3         2.8          5.1         1.5 virginica
## 135          6.1         2.6          5.6         1.4 virginica
## 136          7.7         3.0          6.1         2.3 virginica
## 137          6.3         3.4          5.6         2.4 virginica
## 138          6.4         3.1          5.5         1.8 virginica
## 139          6.0         3.0          4.8         1.8 virginica
## 140          6.9         3.1          5.4         2.1 virginica
## 141          6.7         3.1          5.6         2.4 virginica
## 142          6.9         3.1          5.1         2.3 virginica
## 143          5.8         2.7          5.1         1.9 virginica
## 144          6.8         3.2          5.9         2.3 virginica
## 145          6.7         3.3          5.7         2.5 virginica
## 146          6.7         3.0          5.2         2.3 virginica
## 147          6.3         2.5          5.0         1.9 virginica
## 148          6.5         3.0          5.2         2.0 virginica
## 149          6.2         3.4          5.4         2.3 virginica
## 150          5.9         3.0          5.1         1.8 virginica

Edytowanie danych

edit(ramka)
##        imię wiek wypowiedzenie staż
## obs1    Ola   21          TRUE    2
## obs2  Kamil   32         FALSE    5
## obs3 Maciek   38         FALSE    8
## obs4   Asia   40         FALSE   11
ramka=edit(ramka)

fix(ramka)

##📘 Listy (list)

x=list(c("Halina","Jan"),c("siatkówka","śpiew"),
c("k","m"),c(34,40))
x
## [[1]]
## [1] "Halina" "Jan"   
## 
## [[2]]
## [1] "siatkówka" "śpiew"    
## 
## [[3]]
## [1] "k" "m"
## 
## [[4]]
## [1] 34 40
x=list(imię=c("Halina","Jan"),hobby=c("siatkówka","śpiew"),
płeć=c("k","m"),wiek=c(45,30))
x
## $imię
## [1] "Halina" "Jan"   
## 
## $hobby
## [1] "siatkówka" "śpiew"    
## 
## $płeć
## [1] "k" "m"
## 
## $wiek
## [1] 45 30
names(x)
## [1] "imię"  "hobby" "płeć"  "wiek"
str(x)
## List of 4
##  $ imię : chr [1:2] "Halina" "Jan"
##  $ hobby: chr [1:2] "siatkówka" "śpiew"
##  $ płeć : chr [1:2] "k" "m"
##  $ wiek : num [1:2] 45 30
x$wiek
## [1] 45 30
x[4]
## $wiek
## [1] 45 30
x[[4]]
## [1] 45 30
x[["wiek"]]
## [1] 45 30
x[[3]][2] #Wyświetlona zostanie płeć 2 osoby.
## [1] "m"
x$hobby[1]='czytanie' #Zamiana hobby z siatkówka na czytanie.
x
## $imię
## [1] "Halina" "Jan"   
## 
## $hobby
## [1] "czytanie" "śpiew"   
## 
## $płeć
## [1] "k" "m"
## 
## $wiek
## [1] 45 30
x[[1]][3]="Ania"
x
## $imię
## [1] "Halina" "Jan"    "Ania"  
## 
## $hobby
## [1] "czytanie" "śpiew"   
## 
## $płeć
## [1] "k" "m"
## 
## $wiek
## [1] 45 30
x=c(x,list(konta.w.b=c(1,2)))
x
## $imię
## [1] "Halina" "Jan"    "Ania"  
## 
## $hobby
## [1] "czytanie" "śpiew"   
## 
## $płeć
## [1] "k" "m"
## 
## $wiek
## [1] 45 30
## 
## $konta.w.b
## [1] 1 2
x=x[-5]
x
## $imię
## [1] "Halina" "Jan"    "Ania"  
## 
## $hobby
## [1] "czytanie" "śpiew"   
## 
## $płeć
## [1] "k" "m"
## 
## $wiek
## [1] 45 30
x[[1]][c(1,2)]
## [1] "Halina" "Jan"
edit(x) #Można edytować - dodawać, usuwać elementy zamieszczone na liście.
## $imię
## [1] "Halina" "Jan"    "Ania"  
## 
## $hobby
## [1] "czytanie" "śpiew"   
## 
## $płeć
## [1] "k" "m"
## 
## $wiek
## [1] 45 30
lapply(x[1],sort)
## $imię
## [1] "Ania"   "Halina" "Jan"
lapply(x,sort)
## $imię
## [1] "Ania"   "Halina" "Jan"   
## 
## $hobby
## [1] "czytanie" "śpiew"   
## 
## $płeć
## [1] "k" "m"
## 
## $wiek
## [1] 30 45
x=lapply(x,sort)
x
## $imię
## [1] "Ania"   "Halina" "Jan"   
## 
## $hobby
## [1] "czytanie" "śpiew"   
## 
## $płeć
## [1] "k" "m"
## 
## $wiek
## [1] 30 45

📗 03. Instrukcje warunkowe oraz pętle

📘 Instrukcje warunkowe

Funkcja if

x=12
if(x>10)
{print("nierówność jest prawdziwa",quote=F)}
## [1] nierówność jest prawdziwa
if(x>10) print("nierówność jest prawdziwa")
## [1] "nierówność jest prawdziwa"

Funkcja if… else…

x=7
if(x>10){
print("nierówność jest prawdziwa")
}else {
print("nierówność jest fałszywa")
}
## [1] "nierówność jest fałszywa"
liczba=sample(1:100,1)
liczba
## [1] 90
x=34

if(x==liczba) {
print(paste("wybrana liczba x jest równa",liczba))
}else{
    if(x>liczba){
    print(paste("wybrana liczba x jest większa od",liczba))
    }else{
    print(paste("wybrana liczba x jest mniejsza od", liczba))
}}
## [1] "wybrana liczba x jest mniejsza od 90"

Funkcja ifelse

x=1:16

nierówność=ifelse(x>10,"nierówność jest prawdziwa","nierówność jest fałszywa")
nierówność
##  [1] "nierówność jest fałszywa"  "nierówność jest fałszywa" 
##  [3] "nierówność jest fałszywa"  "nierówność jest fałszywa" 
##  [5] "nierówność jest fałszywa"  "nierówność jest fałszywa" 
##  [7] "nierówność jest fałszywa"  "nierówność jest fałszywa" 
##  [9] "nierówność jest fałszywa"  "nierówność jest fałszywa" 
## [11] "nierówność jest prawdziwa" "nierówność jest prawdziwa"
## [13] "nierówność jest prawdziwa" "nierówność jest prawdziwa"
## [15] "nierówność jest prawdziwa" "nierówność jest prawdziwa"
data.frame(nierówność)
##                   nierówność
## 1   nierówność jest fałszywa
## 2   nierówność jest fałszywa
## 3   nierówność jest fałszywa
## 4   nierówność jest fałszywa
## 5   nierówność jest fałszywa
## 6   nierówność jest fałszywa
## 7   nierówność jest fałszywa
## 8   nierówność jest fałszywa
## 9   nierówność jest fałszywa
## 10  nierówność jest fałszywa
## 11 nierówność jest prawdziwa
## 12 nierówność jest prawdziwa
## 13 nierówność jest prawdziwa
## 14 nierówność jest prawdziwa
## 15 nierówność jest prawdziwa
## 16 nierówność jest prawdziwa

📘 Pętle

Pętla for

for(i in 1:5) print(i)
## [1] 1
## [1] 2
## [1] 3
## [1] 4
## [1] 5
for(i in 1:5) 
{
print(i)
}
## [1] 1
## [1] 2
## [1] 3
## [1] 4
## [1] 5
z=1:8
for(i in z) 
{
print(i*10)
}
## [1] 10
## [1] 20
## [1] 30
## [1] 40
## [1] 50
## [1] 60
## [1] 70
## [1] 80
# Wyznaczenie sumy pierwszych 20 liczb naturalnych (bez zera).
suma=0
liczby=1:20
for(i in liczby)
{
suma=suma+i
}
suma
## [1] 210
# Wyznaczenie sumy elementów wektora x.
x=c(23,45,13,22,11,-54)
suma=0
for(i in 1:length(x))
{
suma=suma+x[i]
}
suma
## [1] 60
# Wyznaczenie sumy różnic elementów wektora x.
x=c(12,34,4,-15,4,0)
suma=0
for(i in 2:length(x))
{
suma=suma+(x[i]-x[i-1]) #Nawias tutaj jest niepotrzebny, ale podkreśla czynność odejmowania.
}
suma
## [1] -12
# Wyświetlenie kolejnych różnic elementów wektora x.
x=c(12,34,4,-15,4,0)
for(i in 2:length(x))
{
print(x[i]-x[i-1])
}
## [1] 22
## [1] -30
## [1] -19
## [1] 19
## [1] -4

Pętla while

# Wyświetlenie pierwszych 9 licz naturalnych (bez 0).
i=1
while(i<10)
{
print(i)
i=i+1
}
## [1] 1
## [1] 2
## [1] 3
## [1] 4
## [1] 5
## [1] 6
## [1] 7
## [1] 8
## [1] 9
# Wyznaczenie sumy elementów wektora x.
x=c(12,-30,4,2,67,-18)
i=1
suma=0
while(i<=length(x))
{
suma=suma+x[i]
i=i+1
}
suma
## [1] 37
sum(x)  #Sprawdzenie poprawności uzyskanych wyników.
## [1] 37

Pętla repeat

i=1
repeat
{
print(paste("powtórzenie nr.",i))
i=i+1
if(i>5) break     
}
## [1] "powtórzenie nr. 1"
## [1] "powtórzenie nr. 2"
## [1] "powtórzenie nr. 3"
## [1] "powtórzenie nr. 4"
## [1] "powtórzenie nr. 5"

Przykład 1

# Wyświetlić kolejne 10 potęg liczby 2 za pomocą:

#Pętli for

#1 sposób
for(i in 1:10)
{
print(2^i)
}
## [1] 2
## [1] 4
## [1] 8
## [1] 16
## [1] 32
## [1] 64
## [1] 128
## [1] 256
## [1] 512
## [1] 1024
#2 sposób
x=1:10
x
##  [1]  1  2  3  4  5  6  7  8  9 10
y=c()

for(i in 1:length(x))
{
y[i]=2^x[i]
}
y
##  [1]    2    4    8   16   32   64  128  256  512 1024
#Pętli while

#1 sposób
i=1
while(i<=10)
{
print(2^i)
i=i+1
}
## [1] 2
## [1] 4
## [1] 8
## [1] 16
## [1] 32
## [1] 64
## [1] 128
## [1] 256
## [1] 512
## [1] 1024
#2 sposób
i=1
y=c()
while(i<=length(x))
{
y[i]=2^x[i]
i=i+1
}
y
##  [1]    2    4    8   16   32   64  128  256  512 1024
#Pętli repeat

#1 sposób
i=1
repeat
{
print(2^i)
i=i+1
if(i>10) break
}
## [1] 2
## [1] 4
## [1] 8
## [1] 16
## [1] 32
## [1] 64
## [1] 128
## [1] 256
## [1] 512
## [1] 1024
#2 sposób
i=1
y=c()
repeat
{
y[i]=2^x[i]
i=i+1
if(i>length(x))break
}
y
##  [1]    2    4    8   16   32   64  128  256  512 1024

Przykład 2

# Napisać pętlę, która będzie wyświetlała kolejne 10 potęg liczby 3 
# i będzie pokazywała komunikat: 3 do potęgi… wynosi….

x=1:10
x
##  [1]  1  2  3  4  5  6  7  8  9 10
y=c()
for(i in 1:length(x))
{
y[i]=2^x[i]
print(paste("2 do potęgi",i,"wynosi",y[i]))
}
## [1] "2 do potęgi 1 wynosi 2"
## [1] "2 do potęgi 2 wynosi 4"
## [1] "2 do potęgi 3 wynosi 8"
## [1] "2 do potęgi 4 wynosi 16"
## [1] "2 do potęgi 5 wynosi 32"
## [1] "2 do potęgi 6 wynosi 64"
## [1] "2 do potęgi 7 wynosi 128"
## [1] "2 do potęgi 8 wynosi 256"
## [1] "2 do potęgi 9 wynosi 512"
## [1] "2 do potęgi 10 wynosi 1024"

Inne przykłady

Pętla for i instrukcja if

# Pętla wyświetlająca komentarz: "liczba ... jest parzysta" 
# lub "liczba ... jest nieparzysta", w zależności od elementów wektora x.
x=c(21,52,35,12,25)

for(i in 1:length(x))
{
if(x[i]%%2==0){
print(paste("Liczba",x[i],"jest parzysta"))
}else{
print(paste("Liczba",x[i],"jest nieparzysta"))
}
}
## [1] "Liczba 21 jest nieparzysta"
## [1] "Liczba 52 jest parzysta"
## [1] "Liczba 35 jest nieparzysta"
## [1] "Liczba 12 jest parzysta"
## [1] "Liczba 25 jest nieparzysta"

Zagnieżdżona pętla for

# Napisać kod wyświetlający najpierw sumę pierwszego elementu z wektora x 
# z kolejnymi elementami wektora y, 
# a później sumę drugiego elementu wektora x z kolejnymi elementami wektora y itd. 

x=c(12,2,3,4)
y=c(5,4,8,7)

for(i in 1:length(x))
{
for(j in 1:length(y))
{
print(x[i]+y[j])
}
}
## [1] 17
## [1] 16
## [1] 20
## [1] 19
## [1] 7
## [1] 6
## [1] 10
## [1] 9
## [1] 8
## [1] 7
## [1] 11
## [1] 10
## [1] 9
## [1] 8
## [1] 12
## [1] 11

📗 04. Funkcje i operacje matematyczne oraz statystyczne

📘 Funkcje i operacje matematyczne i statystyczne

x=c(-2,4,6,10,-3)
y=c(7,5,-12,4,-1)

pmin(x,y)
## [1]  -2   4 -12   4  -3
pmax(x,y)
## [1]  7  5  6 10 -1
sum(x)
## [1] 15
mean(x)
## [1] 3
abs(x)
## [1]  2  4  6 10  3
min(x)
## [1] -3
max(x)
## [1] 10
median(x)
## [1] 4
quantile(x)
##   0%  25%  50%  75% 100% 
##   -3   -2    4    6   10
quantile(x,c(0.75))
## 75% 
##   6
quantile(x,seq(0.1,0.9,0.1))
##  10%  20%  30%  40%  50%  60%  70%  80%  90% 
## -2.6 -2.2 -0.8  1.6  4.0  4.8  5.6  6.8  8.4
wariancja=sum((x-mean(x))^2)/length(x)
wariancja
## [1] 24
wariancja_s=sum((x-mean(x))^2)/(length(x)-1)
wariancja_s
## [1] 30
var(x)
## [1] 30
odch_st=sqrt(wariancja)
odch_st
## [1] 4.898979
odch_st_s=sqrt(wariancja_s)
odch_st_s
## [1] 5.477226
o_st=sd(x)
o_st
## [1] 5.477226
x=c(23,NA,2,-12,32)
mean(x)
## [1] NA
mean(x,na.rm=TRUE)
## [1] 11.25
#Dzielenie modulo.
10%%2
## [1] 0
10%%4
## [1] 2

📘 Funkcje użytkownika

# Konstrukcja funkcji obliczającej i zwracającej sumę liczb.

suma=function(a,b){
a+b
}

suma(3,5)   #Suma liczb 3 i 5, gdzie a=3 i b=5.
## [1] 8
# Poniższy kod nie zwróci wyniku.

suma=function(a,b){
s=a+b
}
suma(3,5)
# s 
# Obiekt s nie jest zwracany, bo istnieje w funkcji, 
# ale nie w przestrzeni nazw, obiektów R.

# Funkcja return pozwala na zwracanie wyniku.

suma=function(a,b){
s=a+b
return(s)
}
suma(3,5)
## [1] 8

Wyniki zaleca się zapisać na liście

suma=function(a,b){
s=a+b
list(suma=s)
}
suma(3,5)
## $suma
## [1] 8
# Funkcja użytkowanika zwracająca sumę, różnicę, iloczyn, iloraz i potęgę liczb.

matma=function(a,b){
s=a+b
r=a-b
il=a/b
ilocz=a*b
p=a^b

list(suma=s,różnica=r,iloraz=il,iloczyn=ilocz,potęga=p)
}

matma(4,3)
## $suma
## [1] 7
## 
## $różnica
## [1] 1
## 
## $iloraz
## [1] 1.333333
## 
## $iloczyn
## [1] 12
## 
## $potęga
## [1] 64
# Wyświetlenie iloczynu liczb.
matma(4,3)$iloczyn
## [1] 12
matma(4,3)[4]
## $iloczyn
## [1] 12
matma(4,3)[[4]]
## [1] 12
# Obliczenia w funkcji "matma" można wykonać  
# nie tylko dla pojedynczych wartości, ale i dla wektorów.

x=1:5
y=c(2,5,1,3,2)
matma(x,y)
## $suma
## [1] 3 7 4 7 7
## 
## $różnica
## [1] -1 -3  2  1  3
## 
## $iloraz
## [1] 0.500000 0.400000 3.000000 1.333333 2.500000
## 
## $iloczyn
## [1]  2 10  3 12 10
## 
## $potęga
## [1]  1 32  3 64 25
# Funkcja zwracająca 4 największe wartości z wektora liczb.

x=1:20

największe=function(a){
s=sort(a,decreasing=T)  #Dane sortowane są malejąco.
s[1:4]  #Z danych posortowanych malejąco wybierane są 4 pierwsze wartości.
}

największe(x)
## [1] 20 19 18 17
# Funkcja użytkownika, która zwraca 
# wartość minimalną, maksymalną, średnią, 
# odchylenie ćwiartkowe i współczynnik asymetrii Yule'a Kendall'a.

f=function(a){
m=min(a)
mx=max(a)
s=mean(a)
o=sd(a)
q1=quantile(a,0.25)[[1]]
q2=quantile(a,0.5)[[1]]
q3=quantile(a,0.75)[[1]]
w=((q3-q2)-(q2-q1))/(q3-q1)

list(minimum=m,maksimum=mx,średnia=s,odchylenie_ćwiartkowe=o,wsp_asymetrii=w)
}
wektor=c(12,3,4,65,32)
f(wektor)
## $minimum
## [1] 3
## 
## $maksimum
## [1] 65
## 
## $średnia
## [1] 23.2
## 
## $odchylenie_ćwiartkowe
## [1] 26.10939
## 
## $wsp_asymetrii
## [1] 0.4285714

Wartości domyślne funkcji użytkownika

obliczenia=function(a=99,b=12){ #W tej linijce są definiowane wartości domyślne argumentów a i b.

s=a+b
r=a-b
il=a/b
ilocz=a*b
p=a^b
list(suma=s,różnica=r,iloraz=il,iloczyn=ilocz,potęga=p)
}

obliczenia(b=3) #Funkcja użytkownika zostanie wykonana dla a=99 (wartość domyślna) i b=3.
## $suma
## [1] 102
## 
## $różnica
## [1] 96
## 
## $iloraz
## [1] 33
## 
## $iloczyn
## [1] 297
## 
## $potęga
## [1] 970299
obliczenia(23)  #Funkcja użytkownika zostanie wykonana dla a=23 i b=12 (wartość domyślna). 23 stoi na pierwszym miejscu i zostało potraktowane jako a, ponieważ a znajduje się na 1 miejscu w zapisie function().
## $suma
## [1] 35
## 
## $różnica
## [1] 11
## 
## $iloraz
## [1] 1.916667
## 
## $iloczyn
## [1] 276
## 
## $potęga
## [1] 2.191462e+16
obliczenia(3,4)
## $suma
## [1] 7
## 
## $różnica
## [1] -1
## 
## $iloraz
## [1] 0.75
## 
## $iloczyn
## [1] 12
## 
## $potęga
## [1] 81

📗 05. Import i eksport danych. Wykresy. Zmienne losowe

📘 Eksport danych

# Uwaga. Przy eksporcie i później imporcie danych należy dostosować ścieżki dostępu 
# do plików do własnego komputera.

dane=head(swiss)    #Dane do eksportu.
dane
##              Fertility Agriculture Examination Education Catholic
## Courtelary        80.2        17.0          15        12     9.96
## Delemont          83.1        45.1           6         9    84.84
## Franches-Mnt      92.5        39.7           5         5    93.40
## Moutier           85.8        36.5          12         7    33.77
## Neuveville        76.9        43.5          17        15     5.16
## Porrentruy        76.1        35.3           9         7    90.57
##              Infant.Mortality
## Courtelary               22.2
## Delemont                 22.2
## Franches-Mnt             20.2
## Moutier                  20.3
## Neuveville               20.6
## Porrentruy               26.6

Eksport do pliku txt

write.table(dane,file="swiss_dane.txt",quote=F, row.names=T,col.names=T,sep="\t")

# Dla zapisania pliku w ustonym katalogu przykładowa komenda może być następująca:
# write.table(dane,file="C:/Users/Ania/Desktop/swiss_dane.txt",quote=F,row.names=T,col.names=T,sep="\t")

Eksport do pliku w formacie csv

write.csv(dane,"swiss_dane2.csv")
write.csv2(dane,"swiss_dane3.csv")

📘 Import danych

Import danych z pliku txt

im1=read.table("swiss_dane.txt",header=T,sep="\t")
# Dla odczytu pliku a ustalonego katalogu przykładowa komenda może być następująca:
# im1=read.table("C:/Users/Ania/Desktop/swiss_dane.txt",header=T,sep="\t")
im1
##              Fertility Agriculture Examination Education Catholic
## Courtelary        80.2        17.0          15        12     9.96
## Delemont          83.1        45.1           6         9    84.84
## Franches-Mnt      92.5        39.7           5         5    93.40
## Moutier           85.8        36.5          12         7    33.77
## Neuveville        76.9        43.5          17        15     5.16
## Porrentruy        76.1        35.3           9         7    90.57
##              Infant.Mortality
## Courtelary               22.2
## Delemont                 22.2
## Franches-Mnt             20.2
## Moutier                  20.3
## Neuveville               20.6
## Porrentruy               26.6

Import danych z pliku csv (separatorem dziesiętnym jest ,)

im2=read.csv2("swiss_dane3.csv")
head(im2)
##              X Fertility Agriculture Examination Education Catholic
## 1   Courtelary      80.2        17.0          15        12     9.96
## 2     Delemont      83.1        45.1           6         9    84.84
## 3 Franches-Mnt      92.5        39.7           5         5    93.40
## 4      Moutier      85.8        36.5          12         7    33.77
## 5   Neuveville      76.9        43.5          17        15     5.16
## 6   Porrentruy      76.1        35.3           9         7    90.57
##   Infant.Mortality
## 1             22.2
## 2             22.2
## 3             20.2
## 4             20.3
## 5             20.6
## 6             26.6

Import danych z pliku csv (separatorem dziesiętnym jest .)

im3=read.csv("swiss_dane2.csv")
head(im3)
##              X Fertility Agriculture Examination Education Catholic
## 1   Courtelary      80.2        17.0          15        12     9.96
## 2     Delemont      83.1        45.1           6         9    84.84
## 3 Franches-Mnt      92.5        39.7           5         5    93.40
## 4      Moutier      85.8        36.5          12         7    33.77
## 5   Neuveville      76.9        43.5          17        15     5.16
## 6   Porrentruy      76.1        35.3           9         7    90.57
##   Infant.Mortality
## 1             22.2
## 2             22.2
## 3             20.2
## 4             20.3
## 5             20.6
## 6             26.6

Wklejanie ze schowka

# Import danych za pomocą wklejenia danych ze schowka. 
# Na początku pisze się kod, a następnie kopiuje dane, a potem wykonuje kod. 
# Dane można skopiować również na początku.
im4=read.delim2("clipboard",header=T)
im4
##   cena wartość ilość
## 1 5.64  231.30  41.0
## 2 5.94  246.93  41.6
## 3 5.79  237.34  41.0
## 4 5.49  225.09  41.0
## 5 5.58  223.26  40.0
## 6 5.68  227.20  40.0
## 7 5.09  193.42  38.0

📘 Katalog roboczy

#Sprawdzenie jaki jest katalog roboczy - gdzie się znajduje.

getwd()
## [1] "E:/Doc_UE/RStudio/Samouczek"
# Zmiana katalogu roboczego.
# Zamieniamy obecny katalog roboczy, żeby pracować w innym katalogu i nie musieć podawać ścieżki dostępu do plików przy imporcie czy eksporcie danych.

setwd("C:/Users/Ania/Desktop")
## Error in setwd("C:/Users/Ania/Desktop"): nie można zmienić katalogu roboczego
getwd() #Faktycznie katalog roboczy został zmieniony.
## [1] "E:/Doc_UE/RStudio/Samouczek"
# Eksport pliku do folderu o domyślnej lokalizacji. 
write.csv2(dane,"iris1.csv")  #Nie podaje się już ścieżki dostępu, tylko jak ma się nazywać plik zz danymi i jego rozszerzenie (w cudzysłowie). 

# Import pliku z folderu o domyślnej lokalizacji.
read.csv2("iris1.csv")  #Nie podaje się już ścieżki dostępu do pliku, tylko w cudzysłowie zamieszcza się nazwę i rozszerzenie pliku, który chcesię  zaimportować do R.
##              X Fertility Agriculture Examination Education Catholic
## 1   Courtelary      80.2        17.0          15        12     9.96
## 2     Delemont      83.1        45.1           6         9    84.84
## 3 Franches-Mnt      92.5        39.7           5         5    93.40
## 4      Moutier      85.8        36.5          12         7    33.77
## 5   Neuveville      76.9        43.5          17        15     5.16
## 6   Porrentruy      76.1        35.3           9         7    90.57
##   Infant.Mortality
## 1             22.2
## 2             22.2
## 3             20.2
## 4             20.3
## 5             20.6
## 6             26.6

📘 Podstawowe wykresy

x=c(65,43,21,43,57)
y=c(0,0.5,3,2.2,5)

plot(x)

plot(x,type="l")

plot(x,type="p")

plot(x,type="b")

plot(x,type="h")

plot(x,type="s")

plot(x,type="l",col=6)

plot(x,type="l",col=6,lwd=3)

plot(x,type="l",col=6,lwd=3,lty=5)

plot(x,type="l",col=6,lwd=3,lty=2)

plot(x,y)

plot(x,y,lwd=2)

plot(x,y,lwd=2,main="Czas sprzątania względem wieku")

plot(x,y,lwd=2,main="Czas sprzątania względem wieku",xlab="wiek")

plot(x,y,lwd=2,main="Czas sprzątania względem wieku",xlab="wiek",ylab="czas sprzątania")

?AirPassengers
plot(AirPassengers)

class(AirPassengers)
## [1] "ts"

Histogram

trees
##    Girth Height Volume
## 1    8.3     70   10.3
## 2    8.6     65   10.3
## 3    8.8     63   10.2
## 4   10.5     72   16.4
## 5   10.7     81   18.8
## 6   10.8     83   19.7
## 7   11.0     66   15.6
## 8   11.0     75   18.2
## 9   11.1     80   22.6
## 10  11.2     75   19.9
## 11  11.3     79   24.2
## 12  11.4     76   21.0
## 13  11.4     76   21.4
## 14  11.7     69   21.3
## 15  12.0     75   19.1
## 16  12.9     74   22.2
## 17  12.9     85   33.8
## 18  13.3     86   27.4
## 19  13.7     71   25.7
## 20  13.8     64   24.9
## 21  14.0     78   34.5
## 22  14.2     80   31.7
## 23  14.5     74   36.3
## 24  16.0     72   38.3
## 25  16.3     77   42.6
## 26  17.3     81   55.4
## 27  17.5     82   55.7
## 28  17.9     80   58.3
## 29  18.0     80   51.5
## 30  18.0     80   51.0
## 31  20.6     87   77.0
hist(trees$Height)

hist(trees$Height,prob=T)
hist(trees$Height,freq=F)

par(mfrow=c(2,1))
hist(trees$Height)
hist(trees$Height,prob=T)

par(mfrow=c(1,1))
hist(trees$Height)

hist(trees$Height,breaks=10)

hist(trees$Height,breaks=c(60,70,80,90,100))

hist(trees$Height,col="pink")

colors()
##   [1] "white"                "aliceblue"            "antiquewhite"        
##   [4] "antiquewhite1"        "antiquewhite2"        "antiquewhite3"       
##   [7] "antiquewhite4"        "aquamarine"           "aquamarine1"         
##  [10] "aquamarine2"          "aquamarine3"          "aquamarine4"         
##  [13] "azure"                "azure1"               "azure2"              
##  [16] "azure3"               "azure4"               "beige"               
##  [19] "bisque"               "bisque1"              "bisque2"             
##  [22] "bisque3"              "bisque4"              "black"               
##  [25] "blanchedalmond"       "blue"                 "blue1"               
##  [28] "blue2"                "blue3"                "blue4"               
##  [31] "blueviolet"           "brown"                "brown1"              
##  [34] "brown2"               "brown3"               "brown4"              
##  [37] "burlywood"            "burlywood1"           "burlywood2"          
##  [40] "burlywood3"           "burlywood4"           "cadetblue"           
##  [43] "cadetblue1"           "cadetblue2"           "cadetblue3"          
##  [46] "cadetblue4"           "chartreuse"           "chartreuse1"         
##  [49] "chartreuse2"          "chartreuse3"          "chartreuse4"         
##  [52] "chocolate"            "chocolate1"           "chocolate2"          
##  [55] "chocolate3"           "chocolate4"           "coral"               
##  [58] "coral1"               "coral2"               "coral3"              
##  [61] "coral4"               "cornflowerblue"       "cornsilk"            
##  [64] "cornsilk1"            "cornsilk2"            "cornsilk3"           
##  [67] "cornsilk4"            "cyan"                 "cyan1"               
##  [70] "cyan2"                "cyan3"                "cyan4"               
##  [73] "darkblue"             "darkcyan"             "darkgoldenrod"       
##  [76] "darkgoldenrod1"       "darkgoldenrod2"       "darkgoldenrod3"      
##  [79] "darkgoldenrod4"       "darkgray"             "darkgreen"           
##  [82] "darkgrey"             "darkkhaki"            "darkmagenta"         
##  [85] "darkolivegreen"       "darkolivegreen1"      "darkolivegreen2"     
##  [88] "darkolivegreen3"      "darkolivegreen4"      "darkorange"          
##  [91] "darkorange1"          "darkorange2"          "darkorange3"         
##  [94] "darkorange4"          "darkorchid"           "darkorchid1"         
##  [97] "darkorchid2"          "darkorchid3"          "darkorchid4"         
## [100] "darkred"              "darksalmon"           "darkseagreen"        
## [103] "darkseagreen1"        "darkseagreen2"        "darkseagreen3"       
## [106] "darkseagreen4"        "darkslateblue"        "darkslategray"       
## [109] "darkslategray1"       "darkslategray2"       "darkslategray3"      
## [112] "darkslategray4"       "darkslategrey"        "darkturquoise"       
## [115] "darkviolet"           "deeppink"             "deeppink1"           
## [118] "deeppink2"            "deeppink3"            "deeppink4"           
## [121] "deepskyblue"          "deepskyblue1"         "deepskyblue2"        
## [124] "deepskyblue3"         "deepskyblue4"         "dimgray"             
## [127] "dimgrey"              "dodgerblue"           "dodgerblue1"         
## [130] "dodgerblue2"          "dodgerblue3"          "dodgerblue4"         
## [133] "firebrick"            "firebrick1"           "firebrick2"          
## [136] "firebrick3"           "firebrick4"           "floralwhite"         
## [139] "forestgreen"          "gainsboro"            "ghostwhite"          
## [142] "gold"                 "gold1"                "gold2"               
## [145] "gold3"                "gold4"                "goldenrod"           
## [148] "goldenrod1"           "goldenrod2"           "goldenrod3"          
## [151] "goldenrod4"           "gray"                 "gray0"               
## [154] "gray1"                "gray2"                "gray3"               
## [157] "gray4"                "gray5"                "gray6"               
## [160] "gray7"                "gray8"                "gray9"               
## [163] "gray10"               "gray11"               "gray12"              
## [166] "gray13"               "gray14"               "gray15"              
## [169] "gray16"               "gray17"               "gray18"              
## [172] "gray19"               "gray20"               "gray21"              
## [175] "gray22"               "gray23"               "gray24"              
## [178] "gray25"               "gray26"               "gray27"              
## [181] "gray28"               "gray29"               "gray30"              
## [184] "gray31"               "gray32"               "gray33"              
## [187] "gray34"               "gray35"               "gray36"              
## [190] "gray37"               "gray38"               "gray39"              
## [193] "gray40"               "gray41"               "gray42"              
## [196] "gray43"               "gray44"               "gray45"              
## [199] "gray46"               "gray47"               "gray48"              
## [202] "gray49"               "gray50"               "gray51"              
## [205] "gray52"               "gray53"               "gray54"              
## [208] "gray55"               "gray56"               "gray57"              
## [211] "gray58"               "gray59"               "gray60"              
## [214] "gray61"               "gray62"               "gray63"              
## [217] "gray64"               "gray65"               "gray66"              
## [220] "gray67"               "gray68"               "gray69"              
## [223] "gray70"               "gray71"               "gray72"              
## [226] "gray73"               "gray74"               "gray75"              
## [229] "gray76"               "gray77"               "gray78"              
## [232] "gray79"               "gray80"               "gray81"              
## [235] "gray82"               "gray83"               "gray84"              
## [238] "gray85"               "gray86"               "gray87"              
## [241] "gray88"               "gray89"               "gray90"              
## [244] "gray91"               "gray92"               "gray93"              
## [247] "gray94"               "gray95"               "gray96"              
## [250] "gray97"               "gray98"               "gray99"              
## [253] "gray100"              "green"                "green1"              
## [256] "green2"               "green3"               "green4"              
## [259] "greenyellow"          "grey"                 "grey0"               
## [262] "grey1"                "grey2"                "grey3"               
## [265] "grey4"                "grey5"                "grey6"               
## [268] "grey7"                "grey8"                "grey9"               
## [271] "grey10"               "grey11"               "grey12"              
## [274] "grey13"               "grey14"               "grey15"              
## [277] "grey16"               "grey17"               "grey18"              
## [280] "grey19"               "grey20"               "grey21"              
## [283] "grey22"               "grey23"               "grey24"              
## [286] "grey25"               "grey26"               "grey27"              
## [289] "grey28"               "grey29"               "grey30"              
## [292] "grey31"               "grey32"               "grey33"              
## [295] "grey34"               "grey35"               "grey36"              
## [298] "grey37"               "grey38"               "grey39"              
## [301] "grey40"               "grey41"               "grey42"              
## [304] "grey43"               "grey44"               "grey45"              
## [307] "grey46"               "grey47"               "grey48"              
## [310] "grey49"               "grey50"               "grey51"              
## [313] "grey52"               "grey53"               "grey54"              
## [316] "grey55"               "grey56"               "grey57"              
## [319] "grey58"               "grey59"               "grey60"              
## [322] "grey61"               "grey62"               "grey63"              
## [325] "grey64"               "grey65"               "grey66"              
## [328] "grey67"               "grey68"               "grey69"              
## [331] "grey70"               "grey71"               "grey72"              
## [334] "grey73"               "grey74"               "grey75"              
## [337] "grey76"               "grey77"               "grey78"              
## [340] "grey79"               "grey80"               "grey81"              
## [343] "grey82"               "grey83"               "grey84"              
## [346] "grey85"               "grey86"               "grey87"              
## [349] "grey88"               "grey89"               "grey90"              
## [352] "grey91"               "grey92"               "grey93"              
## [355] "grey94"               "grey95"               "grey96"              
## [358] "grey97"               "grey98"               "grey99"              
## [361] "grey100"              "honeydew"             "honeydew1"           
## [364] "honeydew2"            "honeydew3"            "honeydew4"           
## [367] "hotpink"              "hotpink1"             "hotpink2"            
## [370] "hotpink3"             "hotpink4"             "indianred"           
## [373] "indianred1"           "indianred2"           "indianred3"          
## [376] "indianred4"           "ivory"                "ivory1"              
## [379] "ivory2"               "ivory3"               "ivory4"              
## [382] "khaki"                "khaki1"               "khaki2"              
## [385] "khaki3"               "khaki4"               "lavender"            
## [388] "lavenderblush"        "lavenderblush1"       "lavenderblush2"      
## [391] "lavenderblush3"       "lavenderblush4"       "lawngreen"           
## [394] "lemonchiffon"         "lemonchiffon1"        "lemonchiffon2"       
## [397] "lemonchiffon3"        "lemonchiffon4"        "lightblue"           
## [400] "lightblue1"           "lightblue2"           "lightblue3"          
## [403] "lightblue4"           "lightcoral"           "lightcyan"           
## [406] "lightcyan1"           "lightcyan2"           "lightcyan3"          
## [409] "lightcyan4"           "lightgoldenrod"       "lightgoldenrod1"     
## [412] "lightgoldenrod2"      "lightgoldenrod3"      "lightgoldenrod4"     
## [415] "lightgoldenrodyellow" "lightgray"            "lightgreen"          
## [418] "lightgrey"            "lightpink"            "lightpink1"          
## [421] "lightpink2"           "lightpink3"           "lightpink4"          
## [424] "lightsalmon"          "lightsalmon1"         "lightsalmon2"        
## [427] "lightsalmon3"         "lightsalmon4"         "lightseagreen"       
## [430] "lightskyblue"         "lightskyblue1"        "lightskyblue2"       
## [433] "lightskyblue3"        "lightskyblue4"        "lightslateblue"      
## [436] "lightslategray"       "lightslategrey"       "lightsteelblue"      
## [439] "lightsteelblue1"      "lightsteelblue2"      "lightsteelblue3"     
## [442] "lightsteelblue4"      "lightyellow"          "lightyellow1"        
## [445] "lightyellow2"         "lightyellow3"         "lightyellow4"        
## [448] "limegreen"            "linen"                "magenta"             
## [451] "magenta1"             "magenta2"             "magenta3"            
## [454] "magenta4"             "maroon"               "maroon1"             
## [457] "maroon2"              "maroon3"              "maroon4"             
## [460] "mediumaquamarine"     "mediumblue"           "mediumorchid"        
## [463] "mediumorchid1"        "mediumorchid2"        "mediumorchid3"       
## [466] "mediumorchid4"        "mediumpurple"         "mediumpurple1"       
## [469] "mediumpurple2"        "mediumpurple3"        "mediumpurple4"       
## [472] "mediumseagreen"       "mediumslateblue"      "mediumspringgreen"   
## [475] "mediumturquoise"      "mediumvioletred"      "midnightblue"        
## [478] "mintcream"            "mistyrose"            "mistyrose1"          
## [481] "mistyrose2"           "mistyrose3"           "mistyrose4"          
## [484] "moccasin"             "navajowhite"          "navajowhite1"        
## [487] "navajowhite2"         "navajowhite3"         "navajowhite4"        
## [490] "navy"                 "navyblue"             "oldlace"             
## [493] "olivedrab"            "olivedrab1"           "olivedrab2"          
## [496] "olivedrab3"           "olivedrab4"           "orange"              
## [499] "orange1"              "orange2"              "orange3"             
## [502] "orange4"              "orangered"            "orangered1"          
## [505] "orangered2"           "orangered3"           "orangered4"          
## [508] "orchid"               "orchid1"              "orchid2"             
## [511] "orchid3"              "orchid4"              "palegoldenrod"       
## [514] "palegreen"            "palegreen1"           "palegreen2"          
## [517] "palegreen3"           "palegreen4"           "paleturquoise"       
## [520] "paleturquoise1"       "paleturquoise2"       "paleturquoise3"      
## [523] "paleturquoise4"       "palevioletred"        "palevioletred1"      
## [526] "palevioletred2"       "palevioletred3"       "palevioletred4"      
## [529] "papayawhip"           "peachpuff"            "peachpuff1"          
## [532] "peachpuff2"           "peachpuff3"           "peachpuff4"          
## [535] "peru"                 "pink"                 "pink1"               
## [538] "pink2"                "pink3"                "pink4"               
## [541] "plum"                 "plum1"                "plum2"               
## [544] "plum3"                "plum4"                "powderblue"          
## [547] "purple"               "purple1"              "purple2"             
## [550] "purple3"              "purple4"              "red"                 
## [553] "red1"                 "red2"                 "red3"                
## [556] "red4"                 "rosybrown"            "rosybrown1"          
## [559] "rosybrown2"           "rosybrown3"           "rosybrown4"          
## [562] "royalblue"            "royalblue1"           "royalblue2"          
## [565] "royalblue3"           "royalblue4"           "saddlebrown"         
## [568] "salmon"               "salmon1"              "salmon2"             
## [571] "salmon3"              "salmon4"              "sandybrown"          
## [574] "seagreen"             "seagreen1"            "seagreen2"           
## [577] "seagreen3"            "seagreen4"            "seashell"            
## [580] "seashell1"            "seashell2"            "seashell3"           
## [583] "seashell4"            "sienna"               "sienna1"             
## [586] "sienna2"              "sienna3"              "sienna4"             
## [589] "skyblue"              "skyblue1"             "skyblue2"            
## [592] "skyblue3"             "skyblue4"             "slateblue"           
## [595] "slateblue1"           "slateblue2"           "slateblue3"          
## [598] "slateblue4"           "slategray"            "slategray1"          
## [601] "slategray2"           "slategray3"           "slategray4"          
## [604] "slategrey"            "snow"                 "snow1"               
## [607] "snow2"                "snow3"                "snow4"               
## [610] "springgreen"          "springgreen1"         "springgreen2"        
## [613] "springgreen3"         "springgreen4"         "steelblue"           
## [616] "steelblue1"           "steelblue2"           "steelblue3"          
## [619] "steelblue4"           "tan"                  "tan1"                
## [622] "tan2"                 "tan3"                 "tan4"                
## [625] "thistle"              "thistle1"             "thistle2"            
## [628] "thistle3"             "thistle4"             "tomato"              
## [631] "tomato1"              "tomato2"              "tomato3"             
## [634] "tomato4"              "turquoise"            "turquoise1"          
## [637] "turquoise2"           "turquoise3"           "turquoise4"          
## [640] "violet"               "violetred"            "violetred1"          
## [643] "violetred2"           "violetred3"           "violetred4"          
## [646] "wheat"                "wheat1"               "wheat2"              
## [649] "wheat3"               "wheat4"               "whitesmoke"          
## [652] "yellow"               "yellow1"              "yellow2"             
## [655] "yellow3"              "yellow4"              "yellowgreen"
sample(colors(),10)
##  [1] "magenta1"      "grey48"        "lightcyan2"    "grey92"       
##  [5] "seagreen3"     "slategray2"    "hotpink"       "blue4"        
##  [9] "orchid2"       "antiquewhite1"
hist(trees$Height,col=sample(colors(),6))

hist(trees$Height,border="blue",col="pink")

hist(trees$Height,col=rainbow(3))

hist(trees$Height,col=c("blue","pink","yellow"))

hist(trees$Height,border="tomato1",breaks=c(60,70,80,90,100),col="pink")

hist(trees$Height,col=c("blue","pink","yellow","grey"))

Wykres pudełkowy

boxplot(trees$Height,col="red")

head(trees)
##   Girth Height Volume
## 1   8.3     70   10.3
## 2   8.6     65   10.3
## 3   8.8     63   10.2
## 4  10.5     72   16.4
## 5  10.7     81   18.8
## 6  10.8     83   19.7

Wykresy rozrzutu

plot(trees$Height,trees$Volume)

pairs(trees)

Wykres słupkowy

head(chickwts)
##   weight      feed
## 1    179 horsebean
## 2    160 horsebean
## 3    136 horsebean
## 4    227 horsebean
## 5    217 horsebean
## 6    168 horsebean
chickwts$feed
##  [1] horsebean horsebean horsebean horsebean horsebean horsebean horsebean
##  [8] horsebean horsebean horsebean linseed   linseed   linseed   linseed  
## [15] linseed   linseed   linseed   linseed   linseed   linseed   linseed  
## [22] linseed   soybean   soybean   soybean   soybean   soybean   soybean  
## [29] soybean   soybean   soybean   soybean   soybean   soybean   soybean  
## [36] soybean   sunflower sunflower sunflower sunflower sunflower sunflower
## [43] sunflower sunflower sunflower sunflower sunflower sunflower meatmeal 
## [50] meatmeal  meatmeal  meatmeal  meatmeal  meatmeal  meatmeal  meatmeal 
## [57] meatmeal  meatmeal  meatmeal  casein    casein    casein    casein   
## [64] casein    casein    casein    casein    casein    casein    casein   
## [71] casein   
## Levels: casein horsebean linseed meatmeal soybean sunflower
# barplot(chickwts$feed)
# Powyższy kod nie zadziała, ponieważ dane powinny być wektorem lub macierzą.

t=table(chickwts$feed)
t
## 
##    casein horsebean   linseed  meatmeal   soybean sunflower 
##        12        10        12        11        14        12
barplot(t)

Wykres kołowy

pie(t)

procenty=round(prop.table(t)*100,1)
procenty
## 
##    casein horsebean   linseed  meatmeal   soybean sunflower 
##      16.9      14.1      16.9      15.5      19.7      16.9
pie(t,labels=paste(names(procenty),procenty,"%"))

pie(t,labels=paste(names(t),procenty,"%"))

📘 Elementy rachunku prawdopodobieństwa

# Elementy rachunku prawdopodobieństwa: generowanie wartości z rozkładów, gęstość, dystrybuanta i kwantyle.

Generowanie wartości z rozkładów

?rnorm

rnorm(20)
##  [1]  1.42259782  0.15645853  0.94052989  0.80946081  0.39205098 -0.26404580
##  [7] -0.07583791 -1.12479120 -0.18046809  0.03940571 -2.20504604 -0.24474266
## [13] -0.75208437 -0.18792326 -0.97913211 -0.07295414  1.68844351 -1.34118754
## [19] -0.65947108  0.65928451
rnorm(100,20,13)
##   [1]   5.59987683   0.07432436  20.99328385  34.45403746  23.01285729
##   [6]  17.58289915 -17.07485784  18.62996258  43.45863449  31.07642263
##  [11]   1.55531180  33.30514347  28.41221306  21.10418311  14.05597067
##  [16]  31.96853516  23.59456233  20.93164432  13.91634095  38.96935963
##  [21]  23.05423067  37.45732620  31.00306496  42.86393709   3.82134555
##  [26]  18.50214501  35.12302777   9.04302600  31.94653868  29.15428849
##  [31]  26.41909985  -4.49204698  25.25291681  36.68723513  22.57714854
##  [36]  33.96282502  30.61850613  43.95016343  19.90543793   3.52365507
##  [41]  20.30306451   4.82819716  11.47709279  19.74518630  16.03683953
##  [46]  15.58530154  20.15376458  -3.44680584  19.70186068  -3.79057178
##  [51]  27.64487938   3.86833946  31.71024677   4.76093922  24.32350577
##  [56]  11.16977951  12.14646581   5.47711135  23.71486499  11.98027028
##  [61]  26.64302859  32.20415409  23.14211190  27.39858708  30.93979073
##  [66]  41.67615444  16.37824321   8.12091431  37.28172164  -2.53678901
##  [71]  19.50725889  19.20168399  13.10659444  11.80659378   4.60330805
##  [76]  15.09137862  22.91064004  30.19687241   6.59814563  18.62888028
##  [81]  44.99969942  30.95819526 -18.61079919  22.31708658  21.02680821
##  [86]  27.04822387  14.80040247  19.93225363  43.28658636  31.93845967
##  [91]  18.71822779  18.92041885  38.05712318  23.45524083  30.61213723
##  [96]  31.36767455  21.63666169  35.49469095  16.97320444  -2.18985333
rnorm(100,sd=13,mean=20)
##   [1] 13.2767224  0.5230290 19.8586624 17.0637876  9.2437631 11.8105451
##   [7] 32.0510662 -4.3389698 35.1169118 27.1317195 12.2278926 -1.1559030
##  [13] 33.0547331 29.1389248 29.8475877 38.7897144 56.7148155 31.0264210
##  [19] 21.6831829 20.1507707 25.3150689 20.1402011 32.1968025  0.6274263
##  [25] 33.0179267 36.6992192 28.9072288 21.5871563 23.3826964 31.0877411
##  [31] 20.1412921 15.1277781 22.8142253 11.5440427 12.3165976 22.2366117
##  [37] 17.0794799 14.3949423 11.2150593 42.9177931 21.1871559 22.6997703
##  [43] 14.3110174 20.0412733 16.5949192 -4.9085074  5.3403582 35.5634639
##  [49] 14.2134502 41.1028285 17.0123031  8.8815381 20.4261018 -4.1720279
##  [55] 22.4467534 39.6339418 22.0286148 23.1242377  5.2250418 41.6564318
##  [61] 22.1716486 24.6884412 11.8281261 30.5816345 22.0050151 24.7808802
##  [67] 22.4088696 27.1270145  5.7496416 18.1898869 36.0614702 22.2177788
##  [73] 15.6697294 12.5493568 22.7473334 23.1379608 20.6126143  8.6592480
##  [79] 39.2836035 41.0855717 15.7589361 15.0860294 17.4766734 13.0216354
##  [85]  4.3286587 13.3746329 25.5705937  3.3916735  4.8685245 51.4091380
##  [91] 22.1601325 20.2616078  5.6981535 22.2053423 11.7951397 47.5844885
##  [97] 13.6898463 10.3904062 22.1536463 20.5738689
set.seed(123)
n=rnorm(100, 2,0.5)
n
##   [1] 1.7197622 1.8849113 2.7793542 2.0352542 2.0646439 2.8575325 2.2304581
##   [8] 1.3674694 1.6565736 1.7771690 2.6120409 2.1799069 2.2003857 2.0553414
##  [15] 1.7220794 2.8934566 2.2489252 1.0166914 2.3506780 1.7636043 1.4660881
##  [22] 1.8910125 1.4869978 1.6355544 1.6874804 1.1566533 2.4188935 2.0766866
##  [29] 1.4309315 2.6269075 2.2132321 1.8524643 2.4475628 2.4390667 2.4107905
##  [36] 2.3443201 2.2769588 1.9690441 1.8470187 1.8097645 1.6526465 1.8960414
##  [43] 1.3673018 3.0844780 2.6039810 1.4384457 1.7985576 1.7666723 2.3899826
##  [50] 1.9583155 2.1266593 1.9857266 1.9785648 2.6843011 1.8871145 2.7582353
##  [57] 1.2256236 2.2923069 2.0619271 2.1079708 2.1898197 1.7488383 1.8333963
##  [64] 1.4907123 1.4641044 2.1517643 2.2241049 2.0265021 2.4611337 3.0250423
##  [71] 1.7544844 0.8454156 2.5028693 1.6453996 1.6559957 2.5127857 1.8576135
##  [78] 1.3896411 2.0906517 1.9305543 2.0028821 2.1926402 1.8146700 2.3221883
##  [85] 1.8897567 2.1658910 2.5484195 2.2175907 1.8370342 2.5744038 2.4967519
##  [92] 2.2741985 2.1193659 1.6860470 2.6803262 1.6998702 3.0936665 2.7663053
##  [99] 1.8821498 1.4867895
j=runif(100)
j
##   [1] 0.238726027 0.962358936 0.601365726 0.515029727 0.402573342 0.880246541
##   [7] 0.364091865 0.288239281 0.170645235 0.172171746 0.482042606 0.252964929
##  [13] 0.216254790 0.674376388 0.047663627 0.700853087 0.351888638 0.408943998
##  [19] 0.820951324 0.918857348 0.282528330 0.961104794 0.728394428 0.686375082
##  [25] 0.052843943 0.395220135 0.477845380 0.560253264 0.698261595 0.915683538
##  [31] 0.618351227 0.428421509 0.542080367 0.058478489 0.260856857 0.397151953
##  [37] 0.197744737 0.831927563 0.152887223 0.803418542 0.546826157 0.662317642
##  [43] 0.171698494 0.633055360 0.311869747 0.724554346 0.398939825 0.969356411
##  [49] 0.967398371 0.726702539 0.257216746 0.221787935 0.593045652 0.267521432
##  [55] 0.531070399 0.785291671 0.168060811 0.404399181 0.471576278 0.868106807
##  [61] 0.925707956 0.881977559 0.674186843 0.950166979 0.516444894 0.576519021
##  [67] 0.336331206 0.347324631 0.020024301 0.502813046 0.871043414 0.006300784
##  [73] 0.072057124 0.164211225 0.770334074 0.735184306 0.971875636 0.466472377
##  [79] 0.074384513 0.648818124 0.758593170 0.137106081 0.396584595 0.224985329
##  [85] 0.057958561 0.395892688 0.064928300 0.225886433 0.054629109 0.670282040
##  [91] 0.297741783 0.100721582 0.071904097 0.880440569 0.754247402 0.816605888
##  [97] 0.982140374 0.103599645 0.099041829 0.798831611
s=rt(100,df=3)
s
##   [1]  0.69683236  0.82060066 -0.02475866 -0.30644712 -0.30056295 -3.47363186
##   [7] -1.31714799 -0.46532917 -0.01932117  5.99328177 -0.02021276 -2.00872529
##  [13] -0.57321111 -0.16850664 -1.41785209 -1.20204135 -0.52541258  1.23078376
##  [19]  0.63466850  2.34977229  1.88108475 -2.20687007  6.41947266 -0.25537575
##  [25] -0.66606686 -0.01114930 -0.06244739  0.18466027 -1.25469184  0.08335478
##  [31]  0.35642587 -0.53703200  1.00405279 -0.43246746 -1.34543674  1.92487880
##  [37] -0.09990203 -1.26894058  0.83961497 -0.15032212 -0.83106377  0.01523773
##  [43]  1.00633019 -0.12547272 -1.77088587 -3.22061623 -0.07322264 -0.50701695
##  [49] -0.50295934  0.07520585  0.18176418 -0.85664567  0.67830426  1.78504381
##  [55] -0.24748408  0.93705785  1.97205423  0.21457114  0.36545186  1.70894197
##  [61] -0.34914733  0.93052910  4.51244483 -1.46438907  1.56468817  0.49041375
##  [67]  1.11727468  0.43312514  0.29718297 -2.04567260 -1.36525725 -0.66750687
##  [73] -0.49447123 -0.93744377  0.51235989 -8.61233265  0.70151938  0.89078422
##  [79] -0.21608493 -0.81058160 -0.25568636 -2.63293864 -1.00076993 -3.08952378
##  [85] -0.01260136 -0.20001064  0.93324733 -0.06879633  2.80205973 -0.95441015
##  [91] -0.78877949  0.42289498  0.75830163  0.53165633  0.85237062  0.55751630
##  [97]  0.65719967  1.41166493  0.32995741  2.43177705
c=rchisq(100,3)
c
##   [1] 3.3850922 3.2984545 1.6909650 0.1576374 6.6977146 0.4255763 2.1398074
##   [8] 3.0006399 3.1373579 2.7302180 5.8218036 0.4584186 1.6201983 0.7657052
##  [15] 2.9739183 4.1567176 5.0755977 1.1720594 1.3637716 3.0758988 2.2844511
##  [22] 3.8891418 0.6878708 6.9350646 2.1324304 4.8828211 7.9019783 1.4766519
##  [29] 0.5130345 1.5948243 1.9896741 2.0411105 2.6774314 5.5385065 2.2499958
##  [36] 3.6797567 3.8610315 4.2479516 1.0161754 5.9954669 2.3432680 2.7945191
##  [43] 3.2567545 0.9773518 4.6550916 1.8906219 9.3182640 2.7903987 1.0009019
##  [50] 2.4556660 4.1543027 2.4323302 0.9571249 2.2230586 0.3827861 0.4611069
##  [57] 1.7458361 1.7893021 3.1419871 0.1678722 0.4058235 3.9225606 5.0094145
##  [64] 2.7821002 0.9680566 1.3273275 1.1724402 0.9700765 4.1080274 4.1016847
##  [71] 0.3211031 3.6369040 2.6853121 0.6705557 0.7415162 2.1502738 6.2488106
##  [78] 2.9134959 4.3211165 1.4858849 1.6249270 2.3603811 0.6411606 0.4162545
##  [85] 2.3591057 2.3395796 4.2461522 2.3558489 3.5971023 1.0379425 4.3845427
##  [92] 5.5239566 0.4184004 3.5731431 2.1469375 0.1211514 0.7123071 1.8005444
##  [99] 1.9840761 2.8355945
f=rf(100,df1=4,df2=5)
f
##   [1]  0.52610805  1.74521305  1.02604707  3.25032204  1.52430340  0.28097148
##   [7]  0.38109784  0.55076467  0.69027447  0.48196860  4.41313923  0.73094071
##  [13]  0.37996535  2.06320618  0.84712631  0.61603119  0.71032146  0.62933857
##  [19]  2.82465565  0.41869146  2.67819390  1.77195322  0.53829047  1.08785238
##  [25]  1.95254581  1.14638625  0.27337680  0.58384781  0.33364606  0.77739386
##  [31]  0.48367768  1.58395506  0.85833052  0.08154664  0.28514547  0.84480764
##  [37]  2.62597743  1.21076087  2.08760690  1.89972530  1.17307090  0.21546587
##  [43]  1.24627808  1.35692310 17.71356434  0.20513635  1.58029619  2.90312814
##  [49]  0.07009730  1.31514070  0.00564881  3.51205181  2.68952096  1.18568879
##  [55]  1.58932593  2.01802763  1.59471709  0.75218091  0.59938150  1.70882973
##  [61]  1.77348471  0.28766346  0.17464260  1.10959418  0.83223825  4.74271587
##  [67]  3.58385752  0.09552937  1.26651119  0.28091568  0.48236156 12.00955112
##  [73]  0.69463279  0.71923276  1.15728964  1.90554090  5.86638409  0.44790960
##  [79]  0.09469444  2.63703334  0.09821284  0.21453281  0.17428717  3.00294331
##  [85]  0.38385209  3.40359044  0.66721172  0.69316870  1.09003637  0.85520126
##  [91]  3.29537360  0.66066119  0.27395316  0.10956574  0.26362624  0.53813684
##  [97]  0.24114574  0.05285393  0.37716631  0.73218773

Gęstość

dnorm(0)
## [1] 0.3989423
dnorm(0,mean=3,sd=1)
## [1] 0.004431848
dnorm(seq(-3,3,0.05))
##   [1] 0.004431848 0.005142641 0.005952532 0.006872767 0.007915452 0.009093563
##   [7] 0.010420935 0.011912244 0.013582969 0.015449347 0.017528300 0.019837354
##  [13] 0.022394530 0.025218220 0.028327038 0.031739652 0.035474593 0.039550042
##  [19] 0.043983596 0.048792019 0.053990967 0.059594706 0.065615815 0.072064874
##  [25] 0.078950158 0.086277319 0.094049077 0.102264925 0.110920835 0.120009001
##  [31] 0.129517596 0.139430566 0.149727466 0.160383327 0.171368592 0.182649085
##  [37] 0.194186055 0.205936269 0.217852177 0.229882141 0.241970725 0.254059056
##  [43] 0.266085250 0.277984886 0.289691553 0.301137432 0.312253933 0.322972360
##  [49] 0.333224603 0.342943855 0.352065327 0.360526962 0.368270140 0.375240347
##  [55] 0.381387815 0.386668117 0.391042694 0.394479331 0.396952547 0.398443914
##  [61] 0.398942280 0.398443914 0.396952547 0.394479331 0.391042694 0.386668117
##  [67] 0.381387815 0.375240347 0.368270140 0.360526962 0.352065327 0.342943855
##  [73] 0.333224603 0.322972360 0.312253933 0.301137432 0.289691553 0.277984886
##  [79] 0.266085250 0.254059056 0.241970725 0.229882141 0.217852177 0.205936269
##  [85] 0.194186055 0.182649085 0.171368592 0.160383327 0.149727466 0.139430566
##  [91] 0.129517596 0.120009001 0.110920835 0.102264925 0.094049077 0.086277319
##  [97] 0.078950158 0.072064874 0.065615815 0.059594706 0.053990967 0.048792019
## [103] 0.043983596 0.039550042 0.035474593 0.031739652 0.028327038 0.025218220
## [109] 0.022394530 0.019837354 0.017528300 0.015449347 0.013582969 0.011912244
## [115] 0.010420935 0.009093563 0.007915452 0.006872767 0.005952532 0.005142641
## [121] 0.004431848
x<-rnorm(100,3,1)
hist(x,prob=T)

lx=seq(-3,9,length=120)
lx
##   [1] -3.00000000 -2.89915966 -2.79831933 -2.69747899 -2.59663866 -2.49579832
##   [7] -2.39495798 -2.29411765 -2.19327731 -2.09243697 -1.99159664 -1.89075630
##  [13] -1.78991597 -1.68907563 -1.58823529 -1.48739496 -1.38655462 -1.28571429
##  [19] -1.18487395 -1.08403361 -0.98319328 -0.88235294 -0.78151261 -0.68067227
##  [25] -0.57983193 -0.47899160 -0.37815126 -0.27731092 -0.17647059 -0.07563025
##  [31]  0.02521008  0.12605042  0.22689076  0.32773109  0.42857143  0.52941176
##  [37]  0.63025210  0.73109244  0.83193277  0.93277311  1.03361345  1.13445378
##  [43]  1.23529412  1.33613445  1.43697479  1.53781513  1.63865546  1.73949580
##  [49]  1.84033613  1.94117647  2.04201681  2.14285714  2.24369748  2.34453782
##  [55]  2.44537815  2.54621849  2.64705882  2.74789916  2.84873950  2.94957983
##  [61]  3.05042017  3.15126050  3.25210084  3.35294118  3.45378151  3.55462185
##  [67]  3.65546218  3.75630252  3.85714286  3.95798319  4.05882353  4.15966387
##  [73]  4.26050420  4.36134454  4.46218487  4.56302521  4.66386555  4.76470588
##  [79]  4.86554622  4.96638655  5.06722689  5.16806723  5.26890756  5.36974790
##  [85]  5.47058824  5.57142857  5.67226891  5.77310924  5.87394958  5.97478992
##  [91]  6.07563025  6.17647059  6.27731092  6.37815126  6.47899160  6.57983193
##  [97]  6.68067227  6.78151261  6.88235294  6.98319328  7.08403361  7.18487395
## [103]  7.28571429  7.38655462  7.48739496  7.58823529  7.68907563  7.78991597
## [109]  7.89075630  7.99159664  8.09243697  8.19327731  8.29411765  8.39495798
## [115]  8.49579832  8.59663866  8.69747899  8.79831933  8.89915966  9.00000000
lines(lx,dnorm(lx,3,1),col='red')

Kwantyle

qnorm(0.5)
## [1] 0
qnorm(0.75,2,0.23)
## [1] 2.155133
qnorm(0.95,1,2)
## [1] 4.289707

Dystrybuanta

pnorm(0.5)
## [1] 0.6914625

Przedstawienie kilku wykresów gęstości na 1 wykresie

z=seq(-5,5,length=120)
z
##   [1] -5.00000000 -4.91596639 -4.83193277 -4.74789916 -4.66386555 -4.57983193
##   [7] -4.49579832 -4.41176471 -4.32773109 -4.24369748 -4.15966387 -4.07563025
##  [13] -3.99159664 -3.90756303 -3.82352941 -3.73949580 -3.65546218 -3.57142857
##  [19] -3.48739496 -3.40336134 -3.31932773 -3.23529412 -3.15126050 -3.06722689
##  [25] -2.98319328 -2.89915966 -2.81512605 -2.73109244 -2.64705882 -2.56302521
##  [31] -2.47899160 -2.39495798 -2.31092437 -2.22689076 -2.14285714 -2.05882353
##  [37] -1.97478992 -1.89075630 -1.80672269 -1.72268908 -1.63865546 -1.55462185
##  [43] -1.47058824 -1.38655462 -1.30252101 -1.21848739 -1.13445378 -1.05042017
##  [49] -0.96638655 -0.88235294 -0.79831933 -0.71428571 -0.63025210 -0.54621849
##  [55] -0.46218487 -0.37815126 -0.29411765 -0.21008403 -0.12605042 -0.04201681
##  [61]  0.04201681  0.12605042  0.21008403  0.29411765  0.37815126  0.46218487
##  [67]  0.54621849  0.63025210  0.71428571  0.79831933  0.88235294  0.96638655
##  [73]  1.05042017  1.13445378  1.21848739  1.30252101  1.38655462  1.47058824
##  [79]  1.55462185  1.63865546  1.72268908  1.80672269  1.89075630  1.97478992
##  [85]  2.05882353  2.14285714  2.22689076  2.31092437  2.39495798  2.47899160
##  [91]  2.56302521  2.64705882  2.73109244  2.81512605  2.89915966  2.98319328
##  [97]  3.06722689  3.15126050  3.23529412  3.31932773  3.40336134  3.48739496
## [103]  3.57142857  3.65546218  3.73949580  3.82352941  3.90756303  3.99159664
## [109]  4.07563025  4.15966387  4.24369748  4.32773109  4.41176471  4.49579832
## [115]  4.57983193  4.66386555  4.74789916  4.83193277  4.91596639  5.00000000
plot(z,dnorm(z),type="l")
lines(z,dnorm(z,0,3),type="l",lty="dotted")
lines(z,dnorm(z,0,0.5),type="l",lty="dashed")   

# Ostatnia linia wychodzi poza obszar wykresu, ponieważ te linie dorysowywane są do wykresu, 
# czyli nie zmieniają jego rozmiaru. 
# Wykres uzyskany za pomocą funkcji plot() determinuje rozmiar wykresu na stałe. 

z=seq(-10,10,length=120)
plot(z,dnorm(z,0,1),type="l")
lines(z,dnorm(z,2,1),type="l",lty="dotted")
lines(z,dnorm(z,0,2),type="l",lty="dashed")

Dodawanie legendy do wykresu

plot(z,dnorm(z),type="l")
lines(z,dnorm(z,0,3),type="l",lty="dotted")
legend("topright",inset =0.01,lty=c("solid","dotted"),
       c(expression(N(mu==0,sigma==1)),expression(N(mu==0,sigma==3))) )

# Możliwe umiejscowienia legendy:  
# "bottomright"
# "bottom"
# "bottomleft"
# "left"
# "topleft"
# "top"
# "topright"
# "right" 
# "center"

Przykład

# Wygeneruj 100 wartości z rozkładu normalnego o średniej równej -3 i odchyleniu standardowym równym 1.
# Wygeneruj 100 wartości z rozkładu t-Studenta o 8 stopniach swobody.
# Wygeneruj 100 wartości z rozkładu Chikwadrat o 2 stopniach swobody.
# Przedstaw histogramy dla wygenerowanych wartości na 1 wykresie jeden obok drugiego.


x=rnorm(100,-3,1)
y=rt(100,8)
z=rchisq(100,2)
par(mfrow=c(1,3))
hist(x)
hist(y)
hist(z)

📗 06. Wizualizacja z pakietem lattice

📘 Zainstalowanie i wczytanie pakietu lattice

#install.packages("lattice")
library(lattice) 

📘 Przekształcenie zbioru danych

# Wykorzystany zostanie zbiór danych, który dostępny jest w R pod nazwą: airquality.
aq_data=airquality

# Przekształcenie zbioru danych poprzez zamianę kolumny Month na typu factor.
aq_data$Month=factor(aq_data$Month,
                     levels=c(5,6,7,8,9),
                     labels=c("maj","czerwiec","lipiec","sierpień","wrzesień"))
head(aq_data)
##   Ozone Solar.R Wind Temp Month Day
## 1    41     190  7.4   67   maj   1
## 2    36     118  8.0   72   maj   2
## 3    12     149 12.6   74   maj   3
## 4    18     313 11.5   62   maj   4
## 5    NA      NA 14.3   56   maj   5
## 6    28      NA 14.9   66   maj   6

📘 Wykresy

Jądrowy estymator gęstości

# Jądrowy estymator gęstości zmiennej Temp (maksymalna temperatura).
densityplot(~Temp,data=aq_data)

# Jądrowy estymator gęstości zmiennej Temp osobno dla każdego z miesięcy.
densityplot(~Temp|Month, data=aq_data)

# Funkcja layout pozwala na zmianę ustawienia poszczególnych małych wykresów na wykresie ogólnym.
densityplot(~Temp|Month, 
            data=aq_data, 
            layout=c(5,1))

# Dodanie do wykresu: opisu osi OX i tytułu wykresu (w tym zapisania go w dwóch liniach zamiast jednej).
densityplot(~Temp|Month, 
            data=aq_data, 
            layout=c(5,1),
            xlab="maksymalna odnotowana temperatura",
            main="Estymacja gęstości rozkładu \nmaksymalnych temperatur w wybranych miesiącach")

Wykres rozrzutu

# Zestawienie średniego poziomu ozonu i przeciętnej prędkości wiatru w milach na godzinę.
xyplot(Ozone~Wind,data=aq_data)

# Osobne wykresy dla każdego z miesięcy.
xyplot(Ozone~Wind|Month,data=aq_data,layout=c(5,1))

# Wyselekcjonowanie danych dla miesięcy letnich (czerwiec-sierpień).
aq_data_new=aq_data[aq_data[,"Month"]=="czerwiec"|aq_data[,"Month"]=="lipiec"|aq_data[,"Month"]=="sierpień",]
aq_data_new$Month=factor(aq_data_new$Month,levels = c("czerwiec","lipiec","sierpień"),labels=c("czerwiec","lipiec","sierpień"))

# Wyróżnienie danych z poszczególnych miesięcy innym kolorem.
xyplot(Ozone~Wind,group=Month,data=aq_data_new,pch=19,col=c(2,3,4))

# Dodanie legendy.
xyplot(Ozone~Wind,group=Month,col=c(2,3,4),data=aq_data_new,
       pch=19,key=list(space="right",
       text = list(as.character(unique(aq_data_new$Month))),
                       points = list(pch = 19, col =2:4)))

Macierzowy wykres rozrzutu

splom(aq_data[,c("Ozone","Wind","Temp")])

Wykres pudełkowy

# Wykres pudełkowy przedstawiający poziom ozonu w wybranych miesiącach roku. 
# Dodanie opisów osi oraz zmniejszenie czcionki na osiach wykresu.
bwplot(Ozone~Month,data=aq_data,
       xlab="Miesiące",
       ylab="Poziom Ozonu",
       scales = list(cex=0.7))

# Dodanie koloru.
bwplot(Ozone~Month,data=aq_data,
       xlab="Miesiące",
       ylab="Poziom Ozonu",
       scales = list(cex=0.7),fill=rainbow(5))

Wykres słupkowy

# Wykorzystany zostanie wbudowany do R zbiór danycho nazwie: ChickWeight.
# Wykres zliczający ile pisklęć jest poddanych danej diecie.
barchart(ChickWeight$Diet,horizontal=F)

Histogram

# Wykorzystany zostanie wbudowany do R zbiór danych o nazwie: ChickWeight.
histogram(~weight,data=ChickWeight,
       type="count",
       xlab="Waga",
       main="Waga piskląt",
       col="pink")

📗 07. Model liniowy

#Wykorzystywany zbiór danych:
head(mtcars)
##                    mpg cyl disp  hp drat    wt  qsec vs am gear carb
## Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
## Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
## Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
## Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
## Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
## Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1
?lm

📘 Model liniowy z 1 zmienną objaśniającą

Zmienna objaśniana: spalanie paliwa, zmienna objaśniająca: waga samochodu.

model1<-lm(mpg~wt,data=mtcars)

#Podstawowe informacje.
model1
## 
## Call:
## lm(formula = mpg ~ wt, data = mtcars)
## 
## Coefficients:
## (Intercept)           wt  
##      37.285       -5.344
#Rozszerzony widok informacji o modelu.
summary(model1)
## 
## Call:
## lm(formula = mpg ~ wt, data = mtcars)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.5432 -2.3647 -0.1252  1.4096  6.8727 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  37.2851     1.8776  19.858  < 2e-16 ***
## wt           -5.3445     0.5591  -9.559 1.29e-10 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 3.046 on 30 degrees of freedom
## Multiple R-squared:  0.7528, Adjusted R-squared:  0.7446 
## F-statistic: 91.38 on 1 and 30 DF,  p-value: 1.294e-10

Wyświetlenie wyników

Współczynniki

model1$coefficients
## (Intercept)          wt 
##   37.285126   -5.344472

Współczynniki i inne informacje (dotyczące testowania istotności parametrów)

summary(model1)$coefficients
##              Estimate Std. Error   t value     Pr(>|t|)
## (Intercept) 37.285126   1.877627 19.857575 8.241799e-19
## wt          -5.344472   0.559101 -9.559044 1.293959e-10

Wartość współczynnika kierunkowego

summary(model1)$coefficients[2,1]
## [1] -5.344472
summary(model1)$coef[2,1]
## [1] -5.344472

Wartość wyrazu wolnego

summary(model1)$coefficients[1,1]
## [1] 37.28513

Współczynnik R-kwadrat

summary(model1)$r.squared
## [1] 0.7528328
Reszty
model1$residuals
##           Mazda RX4       Mazda RX4 Wag          Datsun 710      Hornet 4 Drive 
##          -2.2826106          -0.9197704          -2.0859521           1.2973499 
##   Hornet Sportabout             Valiant          Duster 360           Merc 240D 
##          -0.2001440          -0.6932545          -3.9053627           4.1637381 
##            Merc 230            Merc 280           Merc 280C          Merc 450SE 
##           2.3499593           0.2998560          -1.1001440           0.8668731 
##          Merc 450SL         Merc 450SLC  Cadillac Fleetwood Lincoln Continental 
##          -0.0502472          -1.8830236           1.1733496           2.1032876 
##   Chrysler Imperial            Fiat 128         Honda Civic      Toyota Corolla 
##           5.9810744           6.8727113           1.7461954           6.4219792 
##       Toyota Corona    Dodge Challenger         AMC Javelin          Camaro Z28 
##          -2.6110037          -2.9725862          -3.7268663          -3.4623553 
##    Pontiac Firebird           Fiat X1-9       Porsche 914-2        Lotus Europa 
##           2.4643670           0.3564263           0.1520430           1.2010593 
##      Ford Pantera L        Ferrari Dino       Maserati Bora          Volvo 142E 
##          -4.5431513          -2.7809399          -3.2053627          -1.0274952
summary(model1)$residuals
##           Mazda RX4       Mazda RX4 Wag          Datsun 710      Hornet 4 Drive 
##          -2.2826106          -0.9197704          -2.0859521           1.2973499 
##   Hornet Sportabout             Valiant          Duster 360           Merc 240D 
##          -0.2001440          -0.6932545          -3.9053627           4.1637381 
##            Merc 230            Merc 280           Merc 280C          Merc 450SE 
##           2.3499593           0.2998560          -1.1001440           0.8668731 
##          Merc 450SL         Merc 450SLC  Cadillac Fleetwood Lincoln Continental 
##          -0.0502472          -1.8830236           1.1733496           2.1032876 
##   Chrysler Imperial            Fiat 128         Honda Civic      Toyota Corolla 
##           5.9810744           6.8727113           1.7461954           6.4219792 
##       Toyota Corona    Dodge Challenger         AMC Javelin          Camaro Z28 
##          -2.6110037          -2.9725862          -3.7268663          -3.4623553 
##    Pontiac Firebird           Fiat X1-9       Porsche 914-2        Lotus Europa 
##           2.4643670           0.3564263           0.1520430           1.2010593 
##      Ford Pantera L        Ferrari Dino       Maserati Bora          Volvo 142E 
##          -4.5431513          -2.7809399          -3.2053627          -1.0274952
Wartości teoretyczne
model1$fitted.values
##           Mazda RX4       Mazda RX4 Wag          Datsun 710      Hornet 4 Drive 
##           23.282611           21.919770           24.885952           20.102650 
##   Hornet Sportabout             Valiant          Duster 360           Merc 240D 
##           18.900144           18.793255           18.205363           20.236262 
##            Merc 230            Merc 280           Merc 280C          Merc 450SE 
##           20.450041           18.900144           18.900144           15.533127 
##          Merc 450SL         Merc 450SLC  Cadillac Fleetwood Lincoln Continental 
##           17.350247           17.083024            9.226650            8.296712 
##   Chrysler Imperial            Fiat 128         Honda Civic      Toyota Corolla 
##            8.718926           25.527289           28.653805           27.478021 
##       Toyota Corona    Dodge Challenger         AMC Javelin          Camaro Z28 
##           24.111004           18.472586           18.926866           16.762355 
##    Pontiac Firebird           Fiat X1-9       Porsche 914-2        Lotus Europa 
##           16.735633           26.943574           25.847957           29.198941 
##      Ford Pantera L        Ferrari Dino       Maserati Bora          Volvo 142E 
##           20.343151           22.480940           18.205363           22.427495
# Uwaga! Funkcja poniżej nie zwróci wyników.
# summary(model1)$fitted.values

plot(mtcars$mpg,mtcars$wt)

📘 Model liniowy z 2 zmiennymi objaśniającymi

Zmienna zależna: spalanie, dwie zmienne niezależne: waga samochodu i przespieszenie

model2<-lm(mpg~wt+qsec,data=mtcars)
model2
## 
## Call:
## lm(formula = mpg ~ wt + qsec, data = mtcars)
## 
## Coefficients:
## (Intercept)           wt         qsec  
##     19.7462      -5.0480       0.9292
summary(model2)
## 
## Call:
## lm(formula = mpg ~ wt + qsec, data = mtcars)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.3962 -2.1431 -0.2129  1.4915  5.7486 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  19.7462     5.2521   3.760 0.000765 ***
## wt           -5.0480     0.4840 -10.430 2.52e-11 ***
## qsec          0.9292     0.2650   3.506 0.001500 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.596 on 29 degrees of freedom
## Multiple R-squared:  0.8264, Adjusted R-squared:  0.8144 
## F-statistic: 69.03 on 2 and 29 DF,  p-value: 9.395e-12

📗 08. Weryfikacja hipotez i pakiet dplyr

📘 Weryfikacja hipotez statystycznych

Test dla wartości średniej w populacji

# Zbadano jak dużo studenci UE wydali w listopadzie 2022 roku na pieczywo.
# Do badania wylosowano próbę składającą się z 16 osób.
# Na poziomie istotności alfa=0,05 zweryfikować hipotezę, 
# że rzeczywista średnia kwota wydatków studentów UE w listopadzie 2022 na pieczywo była:
# a) równa 40zł,
# b) mniejsza niż 40 zł,
# c) większa niż 40 zł.

#Wprowadzenie danych.
wydatki=c(70,32,100,65,34,47,23,80,47,65,34,63,72,33,63,38)

# Ad a)

# H0: mi=40
# H1: mi=/=40
# 2-stronny obszar krytyczny.

wsr=mean(wydatki)
mi0=40
n=length(wydatki)
s=sd(wydatki)

T=(wsr-mi0)/s*sqrt(n)
T
## [1] 2.650558
alpha=0.05

# Wyznaczenie obszaru krytycznego
t.alpha.l=qt(alpha/2,n-1,lower.tail = T)
t.alpha.p=qt(alpha/2,n-1,lower.tail = F)

# Obszar, w którym jeżeli znajdzie się wartość statystyki testowej, to nie ma podstaw do odrzucenia H0.
c(t.alpha.l,t.alpha.p)
## [1] -2.13145  2.13145
# Wartość statystyki testowej należy do obszaru krytycznego. 
# Odrzucamy H0 na rzecz H1. 
# Można twierdzić, że rzeczywista średnia kwota wydatków na pieczywo studentów UE 
# w listopadzie 2022 była różna od 40 zł.


# Testowanie za pomocą wbudowanej funkcji.
t.test(wydatki,mu=40)
## 
##  One Sample t-test
## 
## data:  wydatki
## t = 2.6506, df = 15, p-value = 0.01817
## alternative hypothesis: true mean is not equal to 40
## 95 percent confidence interval:
##  42.76636 65.48364
## sample estimates:
## mean of x 
##    54.125
# p-wartość jest mniejsza od poziomu istotności alfa. 
# Odrzucamy H0 na rzecz H1.
# Można twierdzić, że rzeczywista średnia kwota wydatków na pieczywo studentów UE 
# w listopadzie 2022 była różna od 40 zł.

#"Ręczne wyznaczenie p-wartości"
1-pt(T,n-1)+pt(-T,n-1)
## [1] 0.0181711
# Ad b)                     

# H0: mi=40
# H1: mi>40

t.test(wydatki,mu=40,alternative = "g")
## 
##  One Sample t-test
## 
## data:  wydatki
## t = 2.6506, df = 15, p-value = 0.009086
## alternative hypothesis: true mean is greater than 40
## 95 percent confidence interval:
##  44.78288      Inf
## sample estimates:
## mean of x 
##    54.125
# p-wartość jest mniejsza od alfa=0.05. 
# Odrzucamy H0 na rzecz H1. 
# Można twierdzić, że średnia kwota wydatków na pieczywo studentów na UE w listopadzie 2022 była większa od 40 zł.

# Ad c) 

# H0: mi=40
# H1: mi<40

t.test(wydatki,mu=40,alternative = "l")
## 
##  One Sample t-test
## 
## data:  wydatki
## t = 2.6506, df = 15, p-value = 0.9909
## alternative hypothesis: true mean is less than 40
## 95 percent confidence interval:
##      -Inf 63.46712
## sample estimates:
## mean of x 
##    54.125
# Nie ma podstaw do odrzucenia H0.

Test normalności rozkładu Shapiro-Wilka

# H0: zmienna wydatki ma rozkład normalny
# H1: zmienna wydatki nie ma rozkładu normalnego

shapiro.test(wydatki)
## 
##  Shapiro-Wilk normality test
## 
## data:  wydatki
## W = 0.93908, p-value = 0.3378
# Brak podstaw do odrzucenia H0 (hipotezy zerowej, głoszącej że zmienna wydatki ma rozkład normalny).

# Wyświetlenie p-wartości. 
shapiro.test(wydatki)$p.value
## [1] 0.3378433

Testy dla równości dwóch średnich

Test dla równości średnich dla prób niezależnych

# install.packages("foreign")
library(foreign)

# Import danych zapisanych w pliku programu SPSS ze strony stat.ue.katowice.pl
wzrost<-read.spss("http://stat.ue.katowice.pl/dane1/heights.sav")
wzrost
## $Husband
##  [1] 186 180 160 186 163 172 192 170 174 191 182 178 181 168 162 188 168 183 188
## [20] 166 180 176 185 169 182 162 169 176 180 157 170 186 180 188 153 179 175 165
## [39] 156 185 172 166 179 181 176 170 165 183 162 192 185 163 185 170 176 176 160
## [58] 167 157 180 172 184 185 165 181 170 161 188 181 156 161 152 179 170 170 165
## [77] 165 169 171 192 176 168 169 184 171 161 185 184 179 184 175 173 164 181 187
## [96] 181  NA
## 
## $Wife
##  [1] 175 168 154 166 162 152 179 163 172 170 170 147 165 162 154 166 167 174 173
## [20] 164 163 163 171 161 167 160 165 167 175 157 172 181 166 181 148 169 170 157
## [39] 162 174 168 162 159 155 171 159 164 175 156 180 167 157 167 157 168 167 145
## [58] 156 153 162 156 174 160 152 175 169 149 176 165 143 158 141 160 149 160 148
## [77] 154 171 165 175 161 162 162 176 160 158 175 174 168 177 158 161 146 168 178
## [96] 170  NA
## 
## attr(,"label.table")
## attr(,"label.table")$Husband
## NULL
## 
## attr(,"label.table")$Wife
## NULL
## 
## attr(,"codepage")
## [1] 65001
class(wzrost)
## [1] "list"
attach(wzrost)

# Badano wzrost kobiet(żon) i mężczyzn(mężów).
# Należy zweryfikować hipotezę, że przeciętny wzrost mężów jest wyższy 
# niż przeciętny wzrost w grupie żon. Przyjąć poziom istotności 0,05.

# H0: mi_M=mi_K
# H1: mi_M>mi_K

t.test(Husband,Wife,alternative = "g")
## 
##  Welch Two Sample t-test
## 
## data:  Husband and Wife
## t = 7.5616, df = 188.57, p-value = 8.467e-13
## alternative hypothesis: true difference in means is greater than 0
## 95 percent confidence interval:
##  8.147699      Inf
## sample estimates:
## mean of x mean of y 
##  174.3229  163.8958
# p-wartość jest mniejsza od założonego poziomu istotności alfa = 0.05. 
# Odrzucamy H0 na rzecz H1. 
# Można twierdzić, że średni wzrost mężów jest większy niż średni wzrost żon.

Testy dla równości dwóch średnich dla prób zależnych

# U kilku pacjentów badano rozkurczowe ciśnienie. Prawidłowe normy to: 80-84.
# Badane osoby mają wysokie ciśnienie i zgłosili się do badań nad nowym lekiem.
# Zmienna przed: ciśnienie rozkurczowe przed zażyciem leku.
# Zmienna po: ciśnienie rozkurczowe po tygodniowym zażywaniu leku.
# Na poziomie istotności alfa=0,05 zweryfikować hipotezę, że lek powoduje spadek ciśnienia.


przed <-c(85,90,86,92,88,86,91,89)
po <-c(86,86,88,82,88,82,84,85)

t.test(po,przed,paired = T,alternative="l")
## 
##  Paired t-test
## 
## data:  po and przed
## t = -2.2437, df = 7, p-value = 0.02988
## alternative hypothesis: true mean difference is less than 0
## 95 percent confidence interval:
##        -Inf -0.5056623
## sample estimates:
## mean difference 
##           -3.25
# Odrzucamy hipotezę zerową na rzecz hipotezy alternatywnej.
# Można twierdzić, że średnia wysokość ciśnienia rozkurczowego 
# po tygodniowym stosowaniu leku była mniejsza niż przed stosowaniem leku.

# Inny zapis danych wejściowych.
badanie<- data.frame( 
  grupa = rep(c("przed", "po"), each = 8),
  cisnienie = c(przed, po))
badanie
##    grupa cisnienie
## 1  przed        85
## 2  przed        90
## 3  przed        86
## 4  przed        92
## 5  przed        88
## 6  przed        86
## 7  przed        91
## 8  przed        89
## 9     po        86
## 10    po        86
## 11    po        88
## 12    po        82
## 13    po        88
## 14    po        82
## 15    po        84
## 16    po        85
attach(badanie)

# Mając tak wyglądający zbiór danych, testowanie można przeprowadzić za pomocą kodu:
t.test(cisnienie~grupa,paired=T,alternative="l")
## 
##  Paired t-test
## 
## data:  cisnienie by grupa
## t = -2.2437, df = 7, p-value = 0.02988
## alternative hypothesis: true mean difference is less than 0
## 95 percent confidence interval:
##        -Inf -0.5056623
## sample estimates:
## mean difference 
##           -3.25

Test dla równości dwóch wariancji

# H0: sigma_K^2=sigma_M^2
# H1: sigma_K^2>sigma_M^2

var.test(Wife,Husband,alternative="g")
## 
##  F test to compare two variances
## 
## data:  Wife and Husband
## F = 0.84, num df = 95, denom df = 95, p-value = 0.8015
## alternative hypothesis: true ratio of variances is greater than 1
## 95 percent confidence interval:
##  0.5983559       Inf
## sample estimates:
## ratio of variances 
##          0.8399965
# Nie ma podstaw do odrzucenia H0 (hipotezy zerowej mówiącej o równości wariancji).

Test niezależności chi-kwadrat

# Wprowadzenie danych.
muzyka <- matrix(c(67, 57, 68,34, 59, 77),ncol=3,byrow=T)
dimnames(muzyka) <- list(c("K", "M"),c("Pop","R$B", "Rock"))
muzyka
##   Pop R$B Rock
## K  67  57   68
## M  34  59   77
# H0: zmienne są niezależne (płeć i rodzaj preferowanej muzyki są niezależne)
# H1: zmienne są zależne

chisq.test(muzyka)
## 
##  Pearson's Chi-squared test
## 
## data:  muzyka
## X-squared = 10.075, df = 2, p-value = 0.006488
# p-wartość jest mniejsza od poziomu istotności alfa.
# Odrzucamy H0 na rzecz H1. 
# Można twierdzić, że istnieje zależność między płcią i preferowanym stylem muzycznym.

# UWAGA! Należy pamiętać, że przy stosowaniu tego testu ważne jest założenie dot. liczebności oczekiwanych.

📘 Pakiet dplyr

#install.packages("dplyr")
library(dplyr)
## 
## Dołączanie pakietu: 'dplyr'
## Następujące obiekty zostały zakryte z 'package:stats':
## 
##     filter, lag
## Następujące obiekty zostały zakryte z 'package:base':
## 
##     intersect, setdiff, setequal, union
head(iris)
##   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1          5.1         3.5          1.4         0.2  setosa
## 2          4.9         3.0          1.4         0.2  setosa
## 3          4.7         3.2          1.3         0.2  setosa
## 4          4.6         3.1          1.5         0.2  setosa
## 5          5.0         3.6          1.4         0.2  setosa
## 6          5.4         3.9          1.7         0.4  setosa

Wyświetlanie informacji o danych

str(iris)
## 'data.frame':    150 obs. of  5 variables:
##  $ Sepal.Length: num  5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
##  $ Sepal.Width : num  3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
##  $ Petal.Length: num  1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
##  $ Petal.Width : num  0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
##  $ Species     : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...
glimpse(iris)
## Rows: 150
## Columns: 5
## $ Sepal.Length <dbl> 5.1, 4.9, 4.7, 4.6, 5.0, 5.4, 4.6, 5.0, 4.4, 4.9, 5.4, 4.…
## $ Sepal.Width  <dbl> 3.5, 3.0, 3.2, 3.1, 3.6, 3.9, 3.4, 3.4, 2.9, 3.1, 3.7, 3.…
## $ Petal.Length <dbl> 1.4, 1.4, 1.3, 1.5, 1.4, 1.7, 1.4, 1.5, 1.4, 1.5, 1.5, 1.…
## $ Petal.Width  <dbl> 0.2, 0.2, 0.2, 0.2, 0.2, 0.4, 0.3, 0.2, 0.2, 0.1, 0.2, 0.…
## $ Species      <fct> setosa, setosa, setosa, setosa, setosa, setosa, setosa, s…

Sortowanie danych

arrange(iris,Sepal.Length)
##     Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
## 1            4.3         3.0          1.1         0.1     setosa
## 2            4.4         2.9          1.4         0.2     setosa
## 3            4.4         3.0          1.3         0.2     setosa
## 4            4.4         3.2          1.3         0.2     setosa
## 5            4.5         2.3          1.3         0.3     setosa
## 6            4.6         3.1          1.5         0.2     setosa
## 7            4.6         3.4          1.4         0.3     setosa
## 8            4.6         3.6          1.0         0.2     setosa
## 9            4.6         3.2          1.4         0.2     setosa
## 10           4.7         3.2          1.3         0.2     setosa
## 11           4.7         3.2          1.6         0.2     setosa
## 12           4.8         3.4          1.6         0.2     setosa
## 13           4.8         3.0          1.4         0.1     setosa
## 14           4.8         3.4          1.9         0.2     setosa
## 15           4.8         3.1          1.6         0.2     setosa
## 16           4.8         3.0          1.4         0.3     setosa
## 17           4.9         3.0          1.4         0.2     setosa
## 18           4.9         3.1          1.5         0.1     setosa
## 19           4.9         3.1          1.5         0.2     setosa
## 20           4.9         3.6          1.4         0.1     setosa
## 21           4.9         2.4          3.3         1.0 versicolor
## 22           4.9         2.5          4.5         1.7  virginica
## 23           5.0         3.6          1.4         0.2     setosa
## 24           5.0         3.4          1.5         0.2     setosa
## 25           5.0         3.0          1.6         0.2     setosa
## 26           5.0         3.4          1.6         0.4     setosa
## 27           5.0         3.2          1.2         0.2     setosa
## 28           5.0         3.5          1.3         0.3     setosa
## 29           5.0         3.5          1.6         0.6     setosa
## 30           5.0         3.3          1.4         0.2     setosa
## 31           5.0         2.0          3.5         1.0 versicolor
## 32           5.0         2.3          3.3         1.0 versicolor
## 33           5.1         3.5          1.4         0.2     setosa
## 34           5.1         3.5          1.4         0.3     setosa
## 35           5.1         3.8          1.5         0.3     setosa
## 36           5.1         3.7          1.5         0.4     setosa
## 37           5.1         3.3          1.7         0.5     setosa
## 38           5.1         3.4          1.5         0.2     setosa
## 39           5.1         3.8          1.9         0.4     setosa
## 40           5.1         3.8          1.6         0.2     setosa
## 41           5.1         2.5          3.0         1.1 versicolor
## 42           5.2         3.5          1.5         0.2     setosa
## 43           5.2         3.4          1.4         0.2     setosa
## 44           5.2         4.1          1.5         0.1     setosa
## 45           5.2         2.7          3.9         1.4 versicolor
## 46           5.3         3.7          1.5         0.2     setosa
## 47           5.4         3.9          1.7         0.4     setosa
## 48           5.4         3.7          1.5         0.2     setosa
## 49           5.4         3.9          1.3         0.4     setosa
## 50           5.4         3.4          1.7         0.2     setosa
## 51           5.4         3.4          1.5         0.4     setosa
## 52           5.4         3.0          4.5         1.5 versicolor
## 53           5.5         4.2          1.4         0.2     setosa
## 54           5.5         3.5          1.3         0.2     setosa
## 55           5.5         2.3          4.0         1.3 versicolor
## 56           5.5         2.4          3.8         1.1 versicolor
## 57           5.5         2.4          3.7         1.0 versicolor
## 58           5.5         2.5          4.0         1.3 versicolor
## 59           5.5         2.6          4.4         1.2 versicolor
## 60           5.6         2.9          3.6         1.3 versicolor
## 61           5.6         3.0          4.5         1.5 versicolor
## 62           5.6         2.5          3.9         1.1 versicolor
## 63           5.6         3.0          4.1         1.3 versicolor
## 64           5.6         2.7          4.2         1.3 versicolor
## 65           5.6         2.8          4.9         2.0  virginica
## 66           5.7         4.4          1.5         0.4     setosa
## 67           5.7         3.8          1.7         0.3     setosa
## 68           5.7         2.8          4.5         1.3 versicolor
## 69           5.7         2.6          3.5         1.0 versicolor
## 70           5.7         3.0          4.2         1.2 versicolor
## 71           5.7         2.9          4.2         1.3 versicolor
## 72           5.7         2.8          4.1         1.3 versicolor
## 73           5.7         2.5          5.0         2.0  virginica
## 74           5.8         4.0          1.2         0.2     setosa
## 75           5.8         2.7          4.1         1.0 versicolor
## 76           5.8         2.7          3.9         1.2 versicolor
## 77           5.8         2.6          4.0         1.2 versicolor
## 78           5.8         2.7          5.1         1.9  virginica
## 79           5.8         2.8          5.1         2.4  virginica
## 80           5.8         2.7          5.1         1.9  virginica
## 81           5.9         3.0          4.2         1.5 versicolor
## 82           5.9         3.2          4.8         1.8 versicolor
## 83           5.9         3.0          5.1         1.8  virginica
## 84           6.0         2.2          4.0         1.0 versicolor
## 85           6.0         2.9          4.5         1.5 versicolor
## 86           6.0         2.7          5.1         1.6 versicolor
## 87           6.0         3.4          4.5         1.6 versicolor
## 88           6.0         2.2          5.0         1.5  virginica
## 89           6.0         3.0          4.8         1.8  virginica
## 90           6.1         2.9          4.7         1.4 versicolor
## 91           6.1         2.8          4.0         1.3 versicolor
## 92           6.1         2.8          4.7         1.2 versicolor
## 93           6.1         3.0          4.6         1.4 versicolor
## 94           6.1         3.0          4.9         1.8  virginica
## 95           6.1         2.6          5.6         1.4  virginica
## 96           6.2         2.2          4.5         1.5 versicolor
## 97           6.2         2.9          4.3         1.3 versicolor
## 98           6.2         2.8          4.8         1.8  virginica
## 99           6.2         3.4          5.4         2.3  virginica
## 100          6.3         3.3          4.7         1.6 versicolor
## 101          6.3         2.5          4.9         1.5 versicolor
## 102          6.3         2.3          4.4         1.3 versicolor
## 103          6.3         3.3          6.0         2.5  virginica
## 104          6.3         2.9          5.6         1.8  virginica
## 105          6.3         2.7          4.9         1.8  virginica
## 106          6.3         2.8          5.1         1.5  virginica
## 107          6.3         3.4          5.6         2.4  virginica
## 108          6.3         2.5          5.0         1.9  virginica
## 109          6.4         3.2          4.5         1.5 versicolor
## 110          6.4         2.9          4.3         1.3 versicolor
## 111          6.4         2.7          5.3         1.9  virginica
## 112          6.4         3.2          5.3         2.3  virginica
## 113          6.4         2.8          5.6         2.1  virginica
## 114          6.4         2.8          5.6         2.2  virginica
## 115          6.4         3.1          5.5         1.8  virginica
## 116          6.5         2.8          4.6         1.5 versicolor
## 117          6.5         3.0          5.8         2.2  virginica
## 118          6.5         3.2          5.1         2.0  virginica
## 119          6.5         3.0          5.5         1.8  virginica
## 120          6.5         3.0          5.2         2.0  virginica
## 121          6.6         2.9          4.6         1.3 versicolor
## 122          6.6         3.0          4.4         1.4 versicolor
## 123          6.7         3.1          4.4         1.4 versicolor
## 124          6.7         3.0          5.0         1.7 versicolor
## 125          6.7         3.1          4.7         1.5 versicolor
## 126          6.7         2.5          5.8         1.8  virginica
## 127          6.7         3.3          5.7         2.1  virginica
## 128          6.7         3.1          5.6         2.4  virginica
## 129          6.7         3.3          5.7         2.5  virginica
## 130          6.7         3.0          5.2         2.3  virginica
## 131          6.8         2.8          4.8         1.4 versicolor
## 132          6.8         3.0          5.5         2.1  virginica
## 133          6.8         3.2          5.9         2.3  virginica
## 134          6.9         3.1          4.9         1.5 versicolor
## 135          6.9         3.2          5.7         2.3  virginica
## 136          6.9         3.1          5.4         2.1  virginica
## 137          6.9         3.1          5.1         2.3  virginica
## 138          7.0         3.2          4.7         1.4 versicolor
## 139          7.1         3.0          5.9         2.1  virginica
## 140          7.2         3.6          6.1         2.5  virginica
## 141          7.2         3.2          6.0         1.8  virginica
## 142          7.2         3.0          5.8         1.6  virginica
## 143          7.3         2.9          6.3         1.8  virginica
## 144          7.4         2.8          6.1         1.9  virginica
## 145          7.6         3.0          6.6         2.1  virginica
## 146          7.7         3.8          6.7         2.2  virginica
## 147          7.7         2.6          6.9         2.3  virginica
## 148          7.7         2.8          6.7         2.0  virginica
## 149          7.7         3.0          6.1         2.3  virginica
## 150          7.9         3.8          6.4         2.0  virginica
arrange(iris,desc(Species),Sepal.Length)
##     Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
## 1            4.9         2.5          4.5         1.7  virginica
## 2            5.6         2.8          4.9         2.0  virginica
## 3            5.7         2.5          5.0         2.0  virginica
## 4            5.8         2.7          5.1         1.9  virginica
## 5            5.8         2.8          5.1         2.4  virginica
## 6            5.8         2.7          5.1         1.9  virginica
## 7            5.9         3.0          5.1         1.8  virginica
## 8            6.0         2.2          5.0         1.5  virginica
## 9            6.0         3.0          4.8         1.8  virginica
## 10           6.1         3.0          4.9         1.8  virginica
## 11           6.1         2.6          5.6         1.4  virginica
## 12           6.2         2.8          4.8         1.8  virginica
## 13           6.2         3.4          5.4         2.3  virginica
## 14           6.3         3.3          6.0         2.5  virginica
## 15           6.3         2.9          5.6         1.8  virginica
## 16           6.3         2.7          4.9         1.8  virginica
## 17           6.3         2.8          5.1         1.5  virginica
## 18           6.3         3.4          5.6         2.4  virginica
## 19           6.3         2.5          5.0         1.9  virginica
## 20           6.4         2.7          5.3         1.9  virginica
## 21           6.4         3.2          5.3         2.3  virginica
## 22           6.4         2.8          5.6         2.1  virginica
## 23           6.4         2.8          5.6         2.2  virginica
## 24           6.4         3.1          5.5         1.8  virginica
## 25           6.5         3.0          5.8         2.2  virginica
## 26           6.5         3.2          5.1         2.0  virginica
## 27           6.5         3.0          5.5         1.8  virginica
## 28           6.5         3.0          5.2         2.0  virginica
## 29           6.7         2.5          5.8         1.8  virginica
## 30           6.7         3.3          5.7         2.1  virginica
## 31           6.7         3.1          5.6         2.4  virginica
## 32           6.7         3.3          5.7         2.5  virginica
## 33           6.7         3.0          5.2         2.3  virginica
## 34           6.8         3.0          5.5         2.1  virginica
## 35           6.8         3.2          5.9         2.3  virginica
## 36           6.9         3.2          5.7         2.3  virginica
## 37           6.9         3.1          5.4         2.1  virginica
## 38           6.9         3.1          5.1         2.3  virginica
## 39           7.1         3.0          5.9         2.1  virginica
## 40           7.2         3.6          6.1         2.5  virginica
## 41           7.2         3.2          6.0         1.8  virginica
## 42           7.2         3.0          5.8         1.6  virginica
## 43           7.3         2.9          6.3         1.8  virginica
## 44           7.4         2.8          6.1         1.9  virginica
## 45           7.6         3.0          6.6         2.1  virginica
## 46           7.7         3.8          6.7         2.2  virginica
## 47           7.7         2.6          6.9         2.3  virginica
## 48           7.7         2.8          6.7         2.0  virginica
## 49           7.7         3.0          6.1         2.3  virginica
## 50           7.9         3.8          6.4         2.0  virginica
## 51           4.9         2.4          3.3         1.0 versicolor
## 52           5.0         2.0          3.5         1.0 versicolor
## 53           5.0         2.3          3.3         1.0 versicolor
## 54           5.1         2.5          3.0         1.1 versicolor
## 55           5.2         2.7          3.9         1.4 versicolor
## 56           5.4         3.0          4.5         1.5 versicolor
## 57           5.5         2.3          4.0         1.3 versicolor
## 58           5.5         2.4          3.8         1.1 versicolor
## 59           5.5         2.4          3.7         1.0 versicolor
## 60           5.5         2.5          4.0         1.3 versicolor
## 61           5.5         2.6          4.4         1.2 versicolor
## 62           5.6         2.9          3.6         1.3 versicolor
## 63           5.6         3.0          4.5         1.5 versicolor
## 64           5.6         2.5          3.9         1.1 versicolor
## 65           5.6         3.0          4.1         1.3 versicolor
## 66           5.6         2.7          4.2         1.3 versicolor
## 67           5.7         2.8          4.5         1.3 versicolor
## 68           5.7         2.6          3.5         1.0 versicolor
## 69           5.7         3.0          4.2         1.2 versicolor
## 70           5.7         2.9          4.2         1.3 versicolor
## 71           5.7         2.8          4.1         1.3 versicolor
## 72           5.8         2.7          4.1         1.0 versicolor
## 73           5.8         2.7          3.9         1.2 versicolor
## 74           5.8         2.6          4.0         1.2 versicolor
## 75           5.9         3.0          4.2         1.5 versicolor
## 76           5.9         3.2          4.8         1.8 versicolor
## 77           6.0         2.2          4.0         1.0 versicolor
## 78           6.0         2.9          4.5         1.5 versicolor
## 79           6.0         2.7          5.1         1.6 versicolor
## 80           6.0         3.4          4.5         1.6 versicolor
## 81           6.1         2.9          4.7         1.4 versicolor
## 82           6.1         2.8          4.0         1.3 versicolor
## 83           6.1         2.8          4.7         1.2 versicolor
## 84           6.1         3.0          4.6         1.4 versicolor
## 85           6.2         2.2          4.5         1.5 versicolor
## 86           6.2         2.9          4.3         1.3 versicolor
## 87           6.3         3.3          4.7         1.6 versicolor
## 88           6.3         2.5          4.9         1.5 versicolor
## 89           6.3         2.3          4.4         1.3 versicolor
## 90           6.4         3.2          4.5         1.5 versicolor
## 91           6.4         2.9          4.3         1.3 versicolor
## 92           6.5         2.8          4.6         1.5 versicolor
## 93           6.6         2.9          4.6         1.3 versicolor
## 94           6.6         3.0          4.4         1.4 versicolor
## 95           6.7         3.1          4.4         1.4 versicolor
## 96           6.7         3.0          5.0         1.7 versicolor
## 97           6.7         3.1          4.7         1.5 versicolor
## 98           6.8         2.8          4.8         1.4 versicolor
## 99           6.9         3.1          4.9         1.5 versicolor
## 100          7.0         3.2          4.7         1.4 versicolor
## 101          4.3         3.0          1.1         0.1     setosa
## 102          4.4         2.9          1.4         0.2     setosa
## 103          4.4         3.0          1.3         0.2     setosa
## 104          4.4         3.2          1.3         0.2     setosa
## 105          4.5         2.3          1.3         0.3     setosa
## 106          4.6         3.1          1.5         0.2     setosa
## 107          4.6         3.4          1.4         0.3     setosa
## 108          4.6         3.6          1.0         0.2     setosa
## 109          4.6         3.2          1.4         0.2     setosa
## 110          4.7         3.2          1.3         0.2     setosa
## 111          4.7         3.2          1.6         0.2     setosa
## 112          4.8         3.4          1.6         0.2     setosa
## 113          4.8         3.0          1.4         0.1     setosa
## 114          4.8         3.4          1.9         0.2     setosa
## 115          4.8         3.1          1.6         0.2     setosa
## 116          4.8         3.0          1.4         0.3     setosa
## 117          4.9         3.0          1.4         0.2     setosa
## 118          4.9         3.1          1.5         0.1     setosa
## 119          4.9         3.1          1.5         0.2     setosa
## 120          4.9         3.6          1.4         0.1     setosa
## 121          5.0         3.6          1.4         0.2     setosa
## 122          5.0         3.4          1.5         0.2     setosa
## 123          5.0         3.0          1.6         0.2     setosa
## 124          5.0         3.4          1.6         0.4     setosa
## 125          5.0         3.2          1.2         0.2     setosa
## 126          5.0         3.5          1.3         0.3     setosa
## 127          5.0         3.5          1.6         0.6     setosa
## 128          5.0         3.3          1.4         0.2     setosa
## 129          5.1         3.5          1.4         0.2     setosa
## 130          5.1         3.5          1.4         0.3     setosa
## 131          5.1         3.8          1.5         0.3     setosa
## 132          5.1         3.7          1.5         0.4     setosa
## 133          5.1         3.3          1.7         0.5     setosa
## 134          5.1         3.4          1.5         0.2     setosa
## 135          5.1         3.8          1.9         0.4     setosa
## 136          5.1         3.8          1.6         0.2     setosa
## 137          5.2         3.5          1.5         0.2     setosa
## 138          5.2         3.4          1.4         0.2     setosa
## 139          5.2         4.1          1.5         0.1     setosa
## 140          5.3         3.7          1.5         0.2     setosa
## 141          5.4         3.9          1.7         0.4     setosa
## 142          5.4         3.7          1.5         0.2     setosa
## 143          5.4         3.9          1.3         0.4     setosa
## 144          5.4         3.4          1.7         0.2     setosa
## 145          5.4         3.4          1.5         0.4     setosa
## 146          5.5         4.2          1.4         0.2     setosa
## 147          5.5         3.5          1.3         0.2     setosa
## 148          5.7         4.4          1.5         0.4     setosa
## 149          5.7         3.8          1.7         0.3     setosa
## 150          5.8         4.0          1.2         0.2     setosa

Filtrowanie danych

iris1<-filter(iris,Sepal.Length>5)
iris1
##     Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
## 1            5.1         3.5          1.4         0.2     setosa
## 2            5.4         3.9          1.7         0.4     setosa
## 3            5.4         3.7          1.5         0.2     setosa
## 4            5.8         4.0          1.2         0.2     setosa
## 5            5.7         4.4          1.5         0.4     setosa
## 6            5.4         3.9          1.3         0.4     setosa
## 7            5.1         3.5          1.4         0.3     setosa
## 8            5.7         3.8          1.7         0.3     setosa
## 9            5.1         3.8          1.5         0.3     setosa
## 10           5.4         3.4          1.7         0.2     setosa
## 11           5.1         3.7          1.5         0.4     setosa
## 12           5.1         3.3          1.7         0.5     setosa
## 13           5.2         3.5          1.5         0.2     setosa
## 14           5.2         3.4          1.4         0.2     setosa
## 15           5.4         3.4          1.5         0.4     setosa
## 16           5.2         4.1          1.5         0.1     setosa
## 17           5.5         4.2          1.4         0.2     setosa
## 18           5.5         3.5          1.3         0.2     setosa
## 19           5.1         3.4          1.5         0.2     setosa
## 20           5.1         3.8          1.9         0.4     setosa
## 21           5.1         3.8          1.6         0.2     setosa
## 22           5.3         3.7          1.5         0.2     setosa
## 23           7.0         3.2          4.7         1.4 versicolor
## 24           6.4         3.2          4.5         1.5 versicolor
## 25           6.9         3.1          4.9         1.5 versicolor
## 26           5.5         2.3          4.0         1.3 versicolor
## 27           6.5         2.8          4.6         1.5 versicolor
## 28           5.7         2.8          4.5         1.3 versicolor
## 29           6.3         3.3          4.7         1.6 versicolor
## 30           6.6         2.9          4.6         1.3 versicolor
## 31           5.2         2.7          3.9         1.4 versicolor
## 32           5.9         3.0          4.2         1.5 versicolor
## 33           6.0         2.2          4.0         1.0 versicolor
## 34           6.1         2.9          4.7         1.4 versicolor
## 35           5.6         2.9          3.6         1.3 versicolor
## 36           6.7         3.1          4.4         1.4 versicolor
## 37           5.6         3.0          4.5         1.5 versicolor
## 38           5.8         2.7          4.1         1.0 versicolor
## 39           6.2         2.2          4.5         1.5 versicolor
## 40           5.6         2.5          3.9         1.1 versicolor
## 41           5.9         3.2          4.8         1.8 versicolor
## 42           6.1         2.8          4.0         1.3 versicolor
## 43           6.3         2.5          4.9         1.5 versicolor
## 44           6.1         2.8          4.7         1.2 versicolor
## 45           6.4         2.9          4.3         1.3 versicolor
## 46           6.6         3.0          4.4         1.4 versicolor
## 47           6.8         2.8          4.8         1.4 versicolor
## 48           6.7         3.0          5.0         1.7 versicolor
## 49           6.0         2.9          4.5         1.5 versicolor
## 50           5.7         2.6          3.5         1.0 versicolor
## 51           5.5         2.4          3.8         1.1 versicolor
## 52           5.5         2.4          3.7         1.0 versicolor
## 53           5.8         2.7          3.9         1.2 versicolor
## 54           6.0         2.7          5.1         1.6 versicolor
## 55           5.4         3.0          4.5         1.5 versicolor
## 56           6.0         3.4          4.5         1.6 versicolor
## 57           6.7         3.1          4.7         1.5 versicolor
## 58           6.3         2.3          4.4         1.3 versicolor
## 59           5.6         3.0          4.1         1.3 versicolor
## 60           5.5         2.5          4.0         1.3 versicolor
## 61           5.5         2.6          4.4         1.2 versicolor
## 62           6.1         3.0          4.6         1.4 versicolor
## 63           5.8         2.6          4.0         1.2 versicolor
## 64           5.6         2.7          4.2         1.3 versicolor
## 65           5.7         3.0          4.2         1.2 versicolor
## 66           5.7         2.9          4.2         1.3 versicolor
## 67           6.2         2.9          4.3         1.3 versicolor
## 68           5.1         2.5          3.0         1.1 versicolor
## 69           5.7         2.8          4.1         1.3 versicolor
## 70           6.3         3.3          6.0         2.5  virginica
## 71           5.8         2.7          5.1         1.9  virginica
## 72           7.1         3.0          5.9         2.1  virginica
## 73           6.3         2.9          5.6         1.8  virginica
## 74           6.5         3.0          5.8         2.2  virginica
## 75           7.6         3.0          6.6         2.1  virginica
## 76           7.3         2.9          6.3         1.8  virginica
## 77           6.7         2.5          5.8         1.8  virginica
## 78           7.2         3.6          6.1         2.5  virginica
## 79           6.5         3.2          5.1         2.0  virginica
## 80           6.4         2.7          5.3         1.9  virginica
## 81           6.8         3.0          5.5         2.1  virginica
## 82           5.7         2.5          5.0         2.0  virginica
## 83           5.8         2.8          5.1         2.4  virginica
## 84           6.4         3.2          5.3         2.3  virginica
## 85           6.5         3.0          5.5         1.8  virginica
## 86           7.7         3.8          6.7         2.2  virginica
## 87           7.7         2.6          6.9         2.3  virginica
## 88           6.0         2.2          5.0         1.5  virginica
## 89           6.9         3.2          5.7         2.3  virginica
## 90           5.6         2.8          4.9         2.0  virginica
## 91           7.7         2.8          6.7         2.0  virginica
## 92           6.3         2.7          4.9         1.8  virginica
## 93           6.7         3.3          5.7         2.1  virginica
## 94           7.2         3.2          6.0         1.8  virginica
## 95           6.2         2.8          4.8         1.8  virginica
## 96           6.1         3.0          4.9         1.8  virginica
## 97           6.4         2.8          5.6         2.1  virginica
## 98           7.2         3.0          5.8         1.6  virginica
## 99           7.4         2.8          6.1         1.9  virginica
## 100          7.9         3.8          6.4         2.0  virginica
## 101          6.4         2.8          5.6         2.2  virginica
## 102          6.3         2.8          5.1         1.5  virginica
## 103          6.1         2.6          5.6         1.4  virginica
## 104          7.7         3.0          6.1         2.3  virginica
## 105          6.3         3.4          5.6         2.4  virginica
## 106          6.4         3.1          5.5         1.8  virginica
## 107          6.0         3.0          4.8         1.8  virginica
## 108          6.9         3.1          5.4         2.1  virginica
## 109          6.7         3.1          5.6         2.4  virginica
## 110          6.9         3.1          5.1         2.3  virginica
## 111          5.8         2.7          5.1         1.9  virginica
## 112          6.8         3.2          5.9         2.3  virginica
## 113          6.7         3.3          5.7         2.5  virginica
## 114          6.7         3.0          5.2         2.3  virginica
## 115          6.3         2.5          5.0         1.9  virginica
## 116          6.5         3.0          5.2         2.0  virginica
## 117          6.2         3.4          5.4         2.3  virginica
## 118          5.9         3.0          5.1         1.8  virginica
filter(iris,Species=="setosa",Sepal.Length>5)
##    Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1           5.1         3.5          1.4         0.2  setosa
## 2           5.4         3.9          1.7         0.4  setosa
## 3           5.4         3.7          1.5         0.2  setosa
## 4           5.8         4.0          1.2         0.2  setosa
## 5           5.7         4.4          1.5         0.4  setosa
## 6           5.4         3.9          1.3         0.4  setosa
## 7           5.1         3.5          1.4         0.3  setosa
## 8           5.7         3.8          1.7         0.3  setosa
## 9           5.1         3.8          1.5         0.3  setosa
## 10          5.4         3.4          1.7         0.2  setosa
## 11          5.1         3.7          1.5         0.4  setosa
## 12          5.1         3.3          1.7         0.5  setosa
## 13          5.2         3.5          1.5         0.2  setosa
## 14          5.2         3.4          1.4         0.2  setosa
## 15          5.4         3.4          1.5         0.4  setosa
## 16          5.2         4.1          1.5         0.1  setosa
## 17          5.5         4.2          1.4         0.2  setosa
## 18          5.5         3.5          1.3         0.2  setosa
## 19          5.1         3.4          1.5         0.2  setosa
## 20          5.1         3.8          1.9         0.4  setosa
## 21          5.1         3.8          1.6         0.2  setosa
## 22          5.3         3.7          1.5         0.2  setosa

Losowanie obserwacji ze zbioru

# Wylosowanie 5% obserwacji ze zbioru danych.
sample_frac(iris,0.05)
##   Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
## 1          6.4         2.8          5.6         2.1  virginica
## 2          6.4         3.2          4.5         1.5 versicolor
## 3          6.0         2.9          4.5         1.5 versicolor
## 4          6.9         3.1          5.1         2.3  virginica
## 5          6.1         3.0          4.6         1.4 versicolor
## 6          4.3         3.0          1.1         0.1     setosa
## 7          5.0         2.0          3.5         1.0 versicolor
## 8          5.0         3.4          1.5         0.2     setosa
0.05*150
## [1] 7.5

Operator pipe (%>%)

16%>%sqrt()%>%log()
## [1] 1.386294
log(4)
## [1] 1.386294
# Wyselekcjonowanie ze zbioru danych iris: irysów, które są gatunku versicolor, 
# a uzyskany zbiór należy posortować malejąco względem Petal.Width.
iris%>%filter(Species=="versicolor")%>%arrange(desc(Petal.Width))
##    Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
## 1           5.9         3.2          4.8         1.8 versicolor
## 2           6.7         3.0          5.0         1.7 versicolor
## 3           6.3         3.3          4.7         1.6 versicolor
## 4           6.0         2.7          5.1         1.6 versicolor
## 5           6.0         3.4          4.5         1.6 versicolor
## 6           6.4         3.2          4.5         1.5 versicolor
## 7           6.9         3.1          4.9         1.5 versicolor
## 8           6.5         2.8          4.6         1.5 versicolor
## 9           5.9         3.0          4.2         1.5 versicolor
## 10          5.6         3.0          4.5         1.5 versicolor
## 11          6.2         2.2          4.5         1.5 versicolor
## 12          6.3         2.5          4.9         1.5 versicolor
## 13          6.0         2.9          4.5         1.5 versicolor
## 14          5.4         3.0          4.5         1.5 versicolor
## 15          6.7         3.1          4.7         1.5 versicolor
## 16          7.0         3.2          4.7         1.4 versicolor
## 17          5.2         2.7          3.9         1.4 versicolor
## 18          6.1         2.9          4.7         1.4 versicolor
## 19          6.7         3.1          4.4         1.4 versicolor
## 20          6.6         3.0          4.4         1.4 versicolor
## 21          6.8         2.8          4.8         1.4 versicolor
## 22          6.1         3.0          4.6         1.4 versicolor
## 23          5.5         2.3          4.0         1.3 versicolor
## 24          5.7         2.8          4.5         1.3 versicolor
## 25          6.6         2.9          4.6         1.3 versicolor
## 26          5.6         2.9          3.6         1.3 versicolor
## 27          6.1         2.8          4.0         1.3 versicolor
## 28          6.4         2.9          4.3         1.3 versicolor
## 29          6.3         2.3          4.4         1.3 versicolor
## 30          5.6         3.0          4.1         1.3 versicolor
## 31          5.5         2.5          4.0         1.3 versicolor
## 32          5.6         2.7          4.2         1.3 versicolor
## 33          5.7         2.9          4.2         1.3 versicolor
## 34          6.2         2.9          4.3         1.3 versicolor
## 35          5.7         2.8          4.1         1.3 versicolor
## 36          6.1         2.8          4.7         1.2 versicolor
## 37          5.8         2.7          3.9         1.2 versicolor
## 38          5.5         2.6          4.4         1.2 versicolor
## 39          5.8         2.6          4.0         1.2 versicolor
## 40          5.7         3.0          4.2         1.2 versicolor
## 41          5.6         2.5          3.9         1.1 versicolor
## 42          5.5         2.4          3.8         1.1 versicolor
## 43          5.1         2.5          3.0         1.1 versicolor
## 44          4.9         2.4          3.3         1.0 versicolor
## 45          5.0         2.0          3.5         1.0 versicolor
## 46          6.0         2.2          4.0         1.0 versicolor
## 47          5.8         2.7          4.1         1.0 versicolor
## 48          5.7         2.6          3.5         1.0 versicolor
## 49          5.5         2.4          3.7         1.0 versicolor
## 50          5.0         2.3          3.3         1.0 versicolor

📗 09. Pakiet ggplot2. Podstawy konstrukcji wykresów

📘 Załadowanie pakietu gplot2 i charakterystyka zbioru mtcars

❕ Załadowanie pakietu ggplot2

library(ggplot2)
library(knitr)

️✔️️ Dla konstrukcji wykresów w tej części wykorzystano dostępny w R zbiór mtcars.

🔗 Opis zbioru mtcars

🔗Opis zbioru mtcars

Wyświetlenie początkowych rekordów zbioru mtcars

##                    mpg cyl disp  hp drat    wt  qsec vs am gear carb
## Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
## Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
## Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
## Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
## Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
## Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1

Podstawowa charakterystyka zmiennych

summary(mtcars)
##       mpg             cyl             disp             hp       
##  Min.   :10.40   Min.   :4.000   Min.   : 71.1   Min.   : 52.0  
##  1st Qu.:15.43   1st Qu.:4.000   1st Qu.:120.8   1st Qu.: 96.5  
##  Median :19.20   Median :6.000   Median :196.3   Median :123.0  
##  Mean   :20.09   Mean   :6.188   Mean   :230.7   Mean   :146.7  
##  3rd Qu.:22.80   3rd Qu.:8.000   3rd Qu.:326.0   3rd Qu.:180.0  
##  Max.   :33.90   Max.   :8.000   Max.   :472.0   Max.   :335.0  
##       drat             wt             qsec             vs        
##  Min.   :2.760   Min.   :1.513   Min.   :14.50   Min.   :0.0000  
##  1st Qu.:3.080   1st Qu.:2.581   1st Qu.:16.89   1st Qu.:0.0000  
##  Median :3.695   Median :3.325   Median :17.71   Median :0.0000  
##  Mean   :3.597   Mean   :3.217   Mean   :17.85   Mean   :0.4375  
##  3rd Qu.:3.920   3rd Qu.:3.610   3rd Qu.:18.90   3rd Qu.:1.0000  
##  Max.   :4.930   Max.   :5.424   Max.   :22.90   Max.   :1.0000  
##        am              gear            carb      
##  Min.   :0.0000   Min.   :3.000   Min.   :1.000  
##  1st Qu.:0.0000   1st Qu.:3.000   1st Qu.:2.000  
##  Median :0.0000   Median :4.000   Median :2.000  
##  Mean   :0.4062   Mean   :3.688   Mean   :2.812  
##  3rd Qu.:1.0000   3rd Qu.:4.000   3rd Qu.:4.000  
##  Max.   :1.0000   Max.   :5.000   Max.   :8.000

Zmiana typu trzech zmiennych na czynniki (factors)

mtcars$gear <- factor(mtcars$gear)
mtcars$am <- factor(mtcars$am)
mtcars$cyl <- factor(mtcars$cyl)

Dane

head(mtcars)
##                    mpg cyl disp  hp drat    wt  qsec vs am gear carb
## Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
## Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
## Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
## Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
## Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
## Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1

Wykresy

par(mar = c(4, 4, .5, .1))
plot(mpg ~ hp, data = mtcars, pch = 19)

Podsumowanie

summary(mtcars)
##       mpg        cyl         disp             hp             drat      
##  Min.   :10.40   4:11   Min.   : 71.1   Min.   : 52.0   Min.   :2.760  
##  1st Qu.:15.43   6: 7   1st Qu.:120.8   1st Qu.: 96.5   1st Qu.:3.080  
##  Median :19.20   8:14   Median :196.3   Median :123.0   Median :3.695  
##  Mean   :20.09          Mean   :230.7   Mean   :146.7   Mean   :3.597  
##  3rd Qu.:22.80          3rd Qu.:326.0   3rd Qu.:180.0   3rd Qu.:3.920  
##  Max.   :33.90          Max.   :472.0   Max.   :335.0   Max.   :4.930  
##        wt             qsec             vs         am     gear        carb      
##  Min.   :1.513   Min.   :14.50   Min.   :0.0000   0:19   3:15   Min.   :1.000  
##  1st Qu.:2.581   1st Qu.:16.89   1st Qu.:0.0000   1:13   4:12   1st Qu.:2.000  
##  Median :3.325   Median :17.71   Median :0.0000          5: 5   Median :2.000  
##  Mean   :3.217   Mean   :17.85   Mean   :0.4375                 Mean   :2.812  
##  3rd Qu.:3.610   3rd Qu.:18.90   3rd Qu.:1.0000                 3rd Qu.:4.000  
##  Max.   :5.424   Max.   :22.90   Max.   :1.0000                 Max.   :8.000

Wyświetlenie początkowych rekordów zbioru danych po dokonanej zmianie

head(mtcars)
##                    mpg cyl disp  hp drat    wt  qsec vs am gear carb
## Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
## Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
## Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
## Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
## Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
## Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1

Podstawowa charakterystyka zmiennych po dokonanej zmianie

summary(mtcars)
##       mpg        cyl         disp             hp             drat      
##  Min.   :10.40   4:11   Min.   : 71.1   Min.   : 52.0   Min.   :2.760  
##  1st Qu.:15.43   6: 7   1st Qu.:120.8   1st Qu.: 96.5   1st Qu.:3.080  
##  Median :19.20   8:14   Median :196.3   Median :123.0   Median :3.695  
##  Mean   :20.09          Mean   :230.7   Mean   :146.7   Mean   :3.597  
##  3rd Qu.:22.80          3rd Qu.:326.0   3rd Qu.:180.0   3rd Qu.:3.920  
##  Max.   :33.90          Max.   :472.0   Max.   :335.0   Max.   :4.930  
##        wt             qsec             vs         am     gear        carb      
##  Min.   :1.513   Min.   :14.50   Min.   :0.0000   0:19   3:15   Min.   :1.000  
##  1st Qu.:2.581   1st Qu.:16.89   1st Qu.:0.0000   1:13   4:12   1st Qu.:2.000  
##  Median :3.325   Median :17.71   Median :0.0000          5: 5   Median :2.000  
##  Mean   :3.217   Mean   :17.85   Mean   :0.4375                 Mean   :2.812  
##  3rd Qu.:3.610   3rd Qu.:18.90   3rd Qu.:1.0000                 3rd Qu.:4.000  
##  Max.   :5.424   Max.   :22.90   Max.   :1.0000                 Max.   :8.000

📘 Wykres rozrzutu

Argumenty: nazwa zbioru danych i zmienne na osie (lub jedną oś)

ggplot(data=mtcars,aes(x=wt,y=mpg))+geom_point()

Taki sam rezultat bez ‘data=’, ‘x=’ i ‘y=’

ggplot(mtcars,aes(wt,mpg))+geom_point()

Wyróżnienie grup (liczba cylindrów)

ggplot(mtcars,aes(wt,mpg,color=cyl))+geom_point()

Dodanie etykiet opisu osi

ggplot(mtcars,aes(wt,mpg,color=cyl))+geom_point()+labs(x='Waga samochodu',y='Liczba przejechanych mil na galonie paliwa')

Zmiana etykiety legendy

ggplot(mtcars,aes(wt,mpg,color=cyl))+geom_point()+labs(x='Waga samochodu',y='Liczba przejechanych mil na galonie paliwa',color='Liczba cylindrów')

Wygodny zapis - to samo co powyżej

ggplot(mtcars,aes(wt,mpg,color=cyl))+
  geom_point()+
  labs(x='Waga samochodu',y='Liczba przejechanych mil na galonie paliwa',color='Liczba cylindrów')

Umieszczenie legendy pod wykresem

ggplot(mtcars,aes(wt,mpg,color=cyl))+
  geom_point()+
  labs(x='Waga samochodu',y='Liczba przejechanych mil na galonie paliwa',color='Liczba cylindrów')+
  theme(legend.position='bottom')

Kształt może oznaczać liczbę biegów

ggplot(mtcars,aes(wt,mpg,color=cyl,shape=gear))+
  geom_point()+
  labs(x='Waga samochodu',y='Liczba przejechanych mil na galonie paliwa',color='Liczba cylindrów',shape='Liczba biegów')+
  theme(legend.position='bottom')

Wielkość punktów to np. masa samochodu

ggplot(mtcars,aes(wt,mpg,color=cyl,shape=gear,size=wt))+
  geom_point()+
  labs(x='Waga samochodu',y='Liczba przejechanych mil na galonie paliwa',color='Liczba cylindrów',shape='Liczba biegów',size='Waga')+
  theme(legend.position='bottom')

Powrót do podstawowego wykresu rozrzutu

ggplot(mtcars,aes(wt,mpg))+
  geom_point()

📘 Histogram

Histogram jest wykreślany dla jednej zmiennej ilościowej, zmieniamy tylko ostatnią linię

ggplot(mtcars,aes(mpg))+
  geom_histogram()

Można dodać kolory (color- obramowanie, fill- wypełnienie)

ggplot(mtcars,aes(mpg))+
  geom_histogram(binwidth=2,fill='yellow',color='blue')

Jednak ciekawsze jest fill ze zmienną

ggplot(mtcars,aes(mpg,fill=cyl))+
  geom_histogram(binwidth=.8,)

📘 Wykresy słupkowe

Konstrukcja wykresu słupkowego

ggplot(mtcars,aes(cyl))+
  geom_bar()

Wykres słupkowy - poziomy

ggplot(mtcars,aes(cyl))+
  geom_bar()+
  coord_flip()

Wykres Słupkowy (!) - współrzędne biegunowe

ggplot(mtcars,aes(cyl))+
  geom_bar()+
  coord_polar()

📘 Wykres pudełkowy

Wyróżnienie kilku kategorii w boxplot

ggplot(mtcars,aes(cyl,mpg))+
  geom_boxplot()

Można dodać obserwacje

ggplot(mtcars,aes(cyl,mpg))+
  geom_boxplot()+
  geom_point()

Można dodać “rozrzucone” obserwacje

ggplot(mtcars,aes(cyl,mpg))+
  geom_boxplot()+
  geom_jitter()

📘 Wykres Wiolinowy

Wykres Wiolinowy - podstawowa konstrukcja

ggplot(mtcars,aes(factor(cyl),mpg))+
  geom_violin()

Wykres Wiolinowy + jitter

ggplot(mtcars,aes(factor(cyl),mpg))+
  geom_violin()+
  geom_jitter()

📘 Etykiety

Dodanie etykiet obserwacji

ggplot(mtcars,aes(wt,mpg,label=row.names(mtcars)))+
  geom_text()

Można dodać jednocześnie etykiety obserwacji i punkty

ggplot(mtcars,aes(wt,mpg,label=row.names(mtcars)))+
  geom_text()+
  geom_point()

📘 Regresja

Funkcja regresji

ggplot(mtcars,aes(wt,mpg))+
  geom_smooth()

Dodanie punktów na wykresie

ggplot(mtcars,aes(wt,mpg))+
  geom_smooth()+
  geom_point()

Określenie postaci funkcji regresji

ggplot(mtcars,aes(wt,mpg))+
  geom_smooth(method='lm')+
  geom_point()

Rozbicie na grupy ze względu na liczbę cylindrów

ggplot(mtcars,aes(wt,mpg,color=cyl))+
  geom_smooth(method='lm')+
  geom_point()

Regresja - funkcja kwadratowa

ggplot(mtcars,aes(wt,mpg))+
  geom_smooth(method='lm',formula=y~poly(x,2))+
  geom_point()

📗 10. Pakiet patchwork

📘 Załadowanie pakietów i charakterystyka zbioru ‘mtcars’

❕ Załadowanie pakietów

library(ggplot2)
library(patchwork)

️✔️️ Dla konstrukcji wykresów w tej części wykorzystano dostępny w R zbiór mtcars.

🔗 Opis zbioru mtcars

Wyświetlenie informacji o zbiorze mtcars

summary(mtcars)
##       mpg        cyl         disp             hp             drat      
##  Min.   :10.40   4:11   Min.   : 71.1   Min.   : 52.0   Min.   :2.760  
##  1st Qu.:15.43   6: 7   1st Qu.:120.8   1st Qu.: 96.5   1st Qu.:3.080  
##  Median :19.20   8:14   Median :196.3   Median :123.0   Median :3.695  
##  Mean   :20.09          Mean   :230.7   Mean   :146.7   Mean   :3.597  
##  3rd Qu.:22.80          3rd Qu.:326.0   3rd Qu.:180.0   3rd Qu.:3.920  
##  Max.   :33.90          Max.   :472.0   Max.   :335.0   Max.   :4.930  
##        wt             qsec             vs         am     gear        carb      
##  Min.   :1.513   Min.   :14.50   Min.   :0.0000   0:19   3:15   Min.   :1.000  
##  1st Qu.:2.581   1st Qu.:16.89   1st Qu.:0.0000   1:13   4:12   1st Qu.:2.000  
##  Median :3.325   Median :17.71   Median :0.0000          5: 5   Median :2.000  
##  Mean   :3.217   Mean   :17.85   Mean   :0.4375                 Mean   :2.812  
##  3rd Qu.:3.610   3rd Qu.:18.90   3rd Qu.:1.0000                 3rd Qu.:4.000  
##  Max.   :5.424   Max.   :22.90   Max.   :1.0000                 Max.   :8.000

📘 Przygotowanie wykresów

Konstrukcja wykresu rozrzutu

ggplot(mtcars,aes(wt, mpg)) + geom_point()

Konstrukcja wykresu rozrzutu - inna forma

ggplot(mtcars) + geom_point(aes(wt, mpg))

📘 Obiekty graficzne, ich wyświetlanie i rozmieszczanie

Konstrukcja obiektów p1 i p2

p1 <- ggplot(mtcars) + geom_point(aes(wt, mpg))
p2 <- ggplot(mtcars) + geom_boxplot(aes(factor(cyl), mpg, fill = factor(gear)))

Wyświetlenie obiektu p1

p1

Wyświetlenie obiektu p2

p2

📘 Pakiet patchwork - podstawowe zastosowania

Wyświetlenie obiektów p1 i p2 obok siebie

p1 + p2

Wyświetlenie obiektów p1 i p2 obok siebie (inny sposób)

p1|p2

Wyświetlenie obiektów p1 (u góry) i p2 (na dole)

p1/p2

Konstrukcja obiektów p3 i p4

p3 <- ggplot(mtcars) + geom_smooth(aes(wt, mpg))
p4 <- ggplot(mtcars) + geom_bar(aes(factor(cyl),fill=factor(gear)))

Wyświetlenie obiektu p3

p3 
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'

Wyświetlenie obiektu p4

p4 

Wyświetlenie obiektów p1 (u góry) oraz p2 i p3 (na dole)

p1 / (p2 | p3)
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'

Wyświetlenie obiektów p1, p2, p3 i p4

(p1 | p2 | p3) /
      p4
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'

Wyświetlenie obiektów p1, p2, p3 i p4

p1+p2+p3+p4
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'

Wyświetlenie obiektów p1, p2, p3 i p4 w jednym wierszu

p1| p2| p3| p4
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'

📘 Pakiet patchwork - układ użytkownika

Wyświetlenie obiektów p1, p2, p3 i p4

wrap_plots(p1, p2, p3, p4)
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'

Wyświetlenie obiektów p1 i p2

p1+p2

Wyświetlenie obiektów p1 i p2 wraz z dodanymi punktami na wykresach

p1 + p2 + geom_jitter(aes(factor(cyl), mpg))

Konstrukcja obiektu rys i wyświetlenie wykresów p3, p1 i p2

rys <- p3 + p2
p1 + rys
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'

Wyświetlenie wykresów p3, p1 i p2

wrap_plots(rys, p3)
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'

Wprowadzenie wolnego obszaru pomidzy wykresami (spacer)

p1 +  p2 + plot_spacer() +p3 
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'

Wprowadzenie wolnego obszaru pomidzy wykresami (spacer)

p1 +  p2 / plot_spacer() +p3 
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'

Wprowadzenie wolnych obszarów pomidzy wykresami (spacer)

p1 + plot_spacer() + p2 + plot_spacer() + p3 + plot_spacer()
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'

Zadanie liczby kolumn dla tablicy wykresów

p1 + p2 + p3 + p4 + 
  plot_layout(ncol = 3)
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'

Zadanie szerokości kolumn dla tablicy wykresów

p1 + p2 + p3 + p4 + 
  plot_layout(widths = c(2, 1))
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'

Zadanie szerokości kolumn i wysokości dla tablicy wykresów

p1 + p2 + p3 + p4 + 
  plot_layout(widths = c(2, 1), heights = c(5, 1))
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'

Umieszczanie wykresów zgodnie z zadanym wzorcem - określenie wzorca

layout <- '
A#B
#C#
D#E
'

Umieszczanie wykresów zgodnie z zadanym wzorcem - wstawienie wykresów

wrap_plots(D = p1, C = p2, B = p3, design = layout)
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'

Wstawianie wykresu w obszarze innego wykresu

p1 + inset_element(p2, left = 0.55, bottom = 0.55, right = 1, top = 1)

📘 Dodanie obszaru z tekstem

❕ Załadowanie biblioteki

library(grid)

Wprowadzenie tekstu

p1 + grid::textGrob('Tekst w oknie obok wykresu. ')

📘 Tabela z danymi obok wykresu

❕ Załadowanie dodatkowych bibliotek

library(gridGraphics)
library(gridExtra)
## 
## Dołączanie pakietu: 'gridExtra'
## Następujący obiekt został zakryty z 'package:dplyr':
## 
##     combine

Umieszczenie tabeli obok wykresu

p1 + gridExtra::tableGrob(mtcars[1:10, c('mpg', 'disp')])

Umieszczenie tabeli obok wykresu

p1 + tableGrob(mtcars[1:10, c('mpg', 'disp','hp','wt')])

Dodanie klasycznego wykresu

p1 + ~plot(mtcars$mpg, mtcars$disp, main = 'Wykres 2')

📗 11. Pakiety ggplot2 i gapminder. Podstawy animacji

📘 Załadowanie pakietów i podstawowe informacje o zbiorze gapminder

❕ Załadowanie wymaganych pakietów

library(ggplot2)
library(dplyr)
library(gapminder)

️✔️️Dla konstrukcji wykresów w tej części wykorzystan* zbiór gapminderz pakietu gapminder

🔗 Opis zbioru gapminder

Informacja o zbiorze gapminder

summary(gapminder)
##         country        continent        year         lifeExp     
##  Afghanistan:  12   Africa  :624   Min.   :1952   Min.   :23.60  
##  Albania    :  12   Americas:300   1st Qu.:1966   1st Qu.:48.20  
##  Algeria    :  12   Asia    :396   Median :1980   Median :60.71  
##  Angola     :  12   Europe  :360   Mean   :1980   Mean   :59.47  
##  Argentina  :  12   Oceania : 24   3rd Qu.:1993   3rd Qu.:70.85  
##  Australia  :  12                  Max.   :2007   Max.   :82.60  
##  (Other)    :1632                                                
##       pop              gdpPercap       
##  Min.   :6.001e+04   Min.   :   241.2  
##  1st Qu.:2.794e+06   1st Qu.:  1202.1  
##  Median :7.024e+06   Median :  3531.8  
##  Mean   :2.960e+07   Mean   :  7215.3  
##  3rd Qu.:1.959e+07   3rd Qu.:  9325.5  
##  Max.   :1.319e+09   Max.   :113523.1  
## 

Informacja o zbiorze w tabeli

table(gapminder$continent, gapminder$year)
##           
##            1952 1957 1962 1967 1972 1977 1982 1987 1992 1997 2002 2007
##   Africa     52   52   52   52   52   52   52   52   52   52   52   52
##   Americas   25   25   25   25   25   25   25   25   25   25   25   25
##   Asia       33   33   33   33   33   33   33   33   33   33   33   33
##   Europe     30   30   30   30   30   30   30   30   30   30   30   30
##   Oceania     2    2    2    2    2    2    2    2    2    2    2    2

📘 Wybrane wykresy dla danych ze zbioru ‘gapminder’

️️✔️ Wykresy przedstawiają jednocześnie dane z wielu różnych lat

️️✔️ Do konstrukcji wykresów w tej części wykorzystano dostępny w R zbiór gapminder

Wykres słupkowy - podstawowa konstrukcja

ggplot(gapminder, aes(x=continent)) + geom_bar()

Wykres słupkowy - dodanie kolorów

ggplot(gapminder, aes(x=continent, fill=continent)) + geom_bar()

Wykres słupkowy - dodanie etykiety legendy

ggplot(gapminder, aes(x=continent, fill=continent)) + geom_bar()+labs(fill='Kontynent')

Wykres słupkowy - usunięcie legendy

ggplot(gapminder, aes(x=continent, fill=continent)) + geom_bar()+guides(fill='none')

Wykres zapamiętany w obiekcie rys

rys=ggplot(gapminder, aes(x=continent, fill=continent)) + geom_bar()+guides(fill='none')

Wykres słupkowy - transformacja skali

rys + coord_trans(y="sqrt")

Wykres słupkowy - współrzędne biegunowe

rys + coord_polar()

Wykres słupkowy - poziomy

rys+coord_flip()

Wybrane państwa - wykres liniowy

kraje <- c("Poland", "Germany", "Czech Republic", "Austria","Romania")
ggplot(subset(gapminder, country %in% kraje),
       aes(x = year, y = lifeExp, color = country)) + geom_line() + geom_point()+
    theme(legend.position='bottom') ####

Wykres gęstości

ggplot(gapminder, aes(lifeExp)) + 
    geom_density()

Wykres gęstości z dodatkowymi parametrami

ggplot(gapminder, aes(lifeExp)) + 
    geom_density(linewidth=1.5, fill="blue", alpha=0.6)

Histogram

ggplot(gapminder, aes(lifeExp)) + 
geom_histogram( binwidth=4, color="black", fill="lightblue", alpha=0.5)

Histogram i gęstość

ggplot(gapminder, aes(lifeExp)) + 
geom_histogram(aes(y=after_stat(density)), binwidth=4, color="black", fill="lightblue", alpha=0.5)+
  geom_density()

Histogram i gęstość - dodatkowe parametry

ggplot(data=gapminder, aes(x=lifeExp)) + 
    geom_histogram(aes(y=after_stat(density)), binwidth=4, color="black", fill="lightblue", alpha=0.5)+
    geom_density(linewidth=1.5, fill="pink", alpha=0.2) 

Gęstości dla poszczególnych kontynentów

ggplot(data=gapminder, aes(x=lifeExp, fill=continent)) +
    geom_density(alpha=0.3)

Utworzenie obiektu rys1

rys1 <- ggplot(gapminder, aes(continent, lifeExp, fill=continent))

Wyświetlenie obiektu rys1 z reprezentacją graficzną boxplot

rys1 +
    geom_boxplot(outlier.size=2)

Wyświetlenie obiektu rys1 z reprezentacją graficzną violin

rys1 +
  geom_violin()

Konstrukcja i wyświetlenie obiektu rys2

rys2 <- ggplot(data=gapminder,
              aes(x=gdpPercap, y=lifeExp))
rys2

Wyświetlenie obiektu rys2 z reprezentacją graficzną point

UWAGA: na wykresie zamieszczono jednocześnie dane z różnych lat

rys2 + geom_point()

Wyświetlenie obiektu rys2 z reprezentacją graficzną point i kolorami dla kontynentów

rys2 + geom_point(aes(color=continent))

Wyświetlenie obiektu rys2 z reprezentacją graficzną violin, kolorami dla kontynentów w oddzielnych oknach

rys2+
  geom_point(aes(color=continent)) + 
  facet_grid(year~continent)

📘 Animacje w ggplot2 - pakiet gganimation

❕ Załadowanie bibliotek dla animacji

library(gganimate)
library(gifski)

Utworzenie obiektu p

p <- ggplot(gapminder, aes(gdpPercap, lifeExp, size = pop, colour = country)) +
  geom_point(alpha = 0.7) +
  theme(legend.position = 'none') +
  labs(title = 'Rok: {frame_time}', x = 'PKB na osobę', y = 'oczekiwana długość życia') +
  transition_time(year)

Wyświetlenie obiektu p

p

Utworzenie obiektu p

p <- ggplot(gapminder, aes(gdpPercap, lifeExp, size = pop, colour = country)) +
  geom_point(alpha = 0.7) +
  theme(legend.position = 'none') +
  facet_wrap(~continent) +
  labs(title = 'Rok: {frame_time}', x = 'PKB na osobę', y = 'oczekiwana długość życia') +
  transition_time(year)

Wyświetlenie obiektu p

p

Uruchomienie animacji

animate(p, 100, 10)

Uruchomienie animacji z parametrami

animate(p, nframes=100, fps=10,height = 20, width = 30, units = "cm",res=150)

Animacja - określenie różnych parametrów

p <- ggplot(gapminder, aes(gdpPercap, lifeExp, size = pop, colour = country)) +
  geom_point(alpha = 0.7) +
  theme(legend.position = 'none') +
  facet_wrap(~continent) +
  labs(title = 'Rok: {frame_time}', x = 'PKB na osobę', y = 'oczekiwana długość życia') +
  transition_time(year)+
  scale_colour_manual(values = country_colors) +
  scale_size(range = c(2, 12)) +
  scale_x_log10() +
  facet_wrap(~continent) +
  theme(legend.position = 'none') +
  labs(title = 'Year: {frame_time}', x = 'GDP per capita', y = 'life expectancy') +
  transition_time(year) +
  ease_aes('linear')
p

📘 Zapisanie animacji w pliku gif i wyświetlenie w zewnętrznym oknie

makeplot <- function(){
  datalist <- split(gapminder, gapminder$year)
  lapply(datalist, function(data){
    p <- ggplot(data, aes(gdpPercap, lifeExp, size = pop, color = continent)) +
      scale_size("population", limits = range(gapminder$pop)) + geom_point() + ylim(20, 90) +
      scale_x_log10(limits = range(gapminder$gdpPercap)) + ggtitle(data$year) + theme_classic()
    print(p)
  })
}
gif_file <- file.path(tempdir(), 'gapminder.gif')
save_gif(makeplot(), gif_file, 1280, 720, res = 144)
utils::browseURL(gif_file)

📗 12. Animacje dla rzeczywistych danych z BDL

Załadowanie pakietów i pobranie zmiennych z Banku Danych Lokalnych

❕ Załadowanie pakietów

library(ggplot2)
library(gganimate)
library(plotly)
library(gifski)
library(dplyr)
library(bdl)

️✔️ Dane są pobierane z Banku Danych Lolalnych

🔗 Sklepy i stacje paliw - dane w BDL

Wyświetlenie informacji o zmiennych z BDL

search_variables("sklepy")
## # A tibble: 3 × 7
##      id subjectId n1              n2     level measureUnitId measureUnitName
##   <int> <chr>     <chr>           <chr>  <int>         <int> <chr>          
## 1   510 P1626     ogółem          sklepy     6            35 ob.            
## 2   511 P1626     sektor prywatny sklepy     6            35 ob.            
## 3 58964 P2323     sklepy          <NA>       3            35 ob.
get_variables("P2323")
## # A tibble: 2 × 6
##      id subjectId n1           level measureUnitId measureUnitName
##   <int> <chr>     <chr>        <int>         <int> <chr>          
## 1 58964 P2323     sklepy           3            35 ob.            
## 2 58965 P2323     stacje paliw     3            35 ob.

Pobranie danych z Banku Danych lokalnych - stacje paliw

get_data_by_variable("58965",year="2021",unitLevel=2)
## # A tibble: 16 × 8
##    id    name  year    val measureUnitId measureName attrId attributeDescription
##    <chr> <chr> <chr> <int> <chr>         <chr>        <int> <chr>               
##  1 0112… MAŁO… 2021    549 35            ob.              1 ""                  
##  2 0124… ŚLĄS… 2021    810 35            ob.              1 ""                  
##  3 0208… LUBU… 2021    283 35            ob.              1 ""                  
##  4 0230… WIEL… 2021    878 35            ob.              1 ""                  
##  5 0232… ZACH… 2021    429 35            ob.              1 ""                  
##  6 0302… DOLN… 2021    490 35            ob.              1 ""                  
##  7 0316… OPOL… 2021    185 35            ob.              1 ""                  
##  8 0404… KUJA… 2021    514 35            ob.              1 ""                  
##  9 0422… POMO… 2021    435 35            ob.              1 ""                  
## 10 0428… WARM… 2021    254 35            ob.              1 ""                  
## 11 0510… ŁÓDZ… 2021    695 35            ob.              1 ""                  
## 12 0526… ŚWIĘ… 2021    265 35            ob.              1 ""                  
## 13 0606… LUBE… 2021    485 35            ob.              1 ""                  
## 14 0618… PODK… 2021    448 35            ob.              1 ""                  
## 15 0620… PODL… 2021    239 35            ob.              1 ""                  
## 16 0714… MAZO… 2021   1169 35            ob.              1 ""

📘 Konstrukcja wykresów dla pobranych zmiennych

Wykres kołowy - liczba stacji paliw

pie_plot(data_type ="variable" ,"58965", "2021", unitLevel = "1")

Wykres rozrzutu - liczba sklepów i stacji paliw

scatter_2var_plot(data_type = "variable" ,c("58964", "58965"), unitLevel = "2",year=2021)+labs(x='sklepy',y='stacje paliw')

Wykres liniowy - liczba sklepów

line_plot(data_type = "variable", unitParentId = "010000000000", varId = "58964",unitLevel=2)

Kartogram - liczba stacji paliw

generate_map(varId = "58965", year = "2021")

📘 Animacje dla danych z BDL

Przygotowanie animacji - sklepy i stacje paliw

dane=get_data_by_variable(c("72305","58964","58965"),unitLevel=2)
dane$year=as.numeric(dane$year)
dane=dane %>% filter(year >2003)
p <- ggplot(
  dane, 
  aes(x = val_58964, y=val_58965, size = val_72305/1000000, colour = name)
  ) +
  geom_point(show.legend = TRUE, alpha = 0.6) +
  scale_color_viridis_d() +
  scale_size(range = c(2, 10)) +
  labs(x = "liczba sklepów", y = "liczba stacji paliw")+
  labs(color="Województwo",size="Ludność w mln.")
p

Uruchomienie animacji

p + transition_time(year) + labs(title = "Rok: {format(frame_time,1,4)}")

Przygotowanie animacji - sklepy

anim_sklepy <- ggplot(dane, aes(factor(year),val_58964 )) +
  geom_boxplot(color=4,fill = "grey") +
  labs(x = "Rok", y = "Liczba sklepów")+
  transition_manual(year, cumulative = TRUE)

Uruchomienie animacji

animate(anim_sklepy, height = 5, width = 6,  units = "in", res = 150, end_pause=6,duration=15)

Przygotowanie animacji - stacje paliw

anim_sp <- ggplot(dane, aes(factor(year),val_58965 )) +
  geom_boxplot(color=4,fill = "grey") +
  labs(x = "Rok", y = "Liczba stacji paliw")+
  transition_manual(year, cumulative = TRUE)

Uruchomienie animacji

animate(anim_sp, height = 5, width = 6,  units = "in", res = 150, end_pause=6,duration=15)

Przygotowanie animacji - sklepy

anim_sklepy <- ggplot(dane, aes(factor(year),val_58964 )) +
  geom_boxplot() +
  labs(x = "Rok", y = "Liczba sklepów")+
  transition_manual(year, cumulative = TRUE)

Uruchomienie animacji

animate(anim_sklepy, height = 5, width = 6,  units = "in", res = 150, end_pause=6,duration=15)

Przygotowanie animacji - sklepy

p<-ggplot(dane, aes(val_58964/val_72305*1000, fill = name)) +
  geom_histogram()
p + transition_time(year) + labs(title = "Rok: {format(frame_time,1,4)}",x="Liczba sklepów na 1 tys. mieszkańców")

Przygotowanie animacji - sklepy i stacje paliw

dane=get_data_by_variable(c("72305","58964","58965"),unitLevel=2)
dane$year=as.numeric(dane$year)
dane=dane %>% filter(year >2003)

Przygotowanie animacji - stacje paliw

p <- ggplot(
  dane, 
  aes(x = val_58964, y=val_58965, size = val_72305, colour = name)
  ) +
  geom_point(show.legend = TRUE, alpha = 0.6) +
  scale_color_viridis_d() +
  scale_size(range = c(2, 10)) +
  labs(x = "Liczba sklepów", y = "Liczba stacji paliw")
p

Uruchomienie animacji

p + transition_time(year) + labs(title = "Rok: {format(frame_time,1,4)}")

Przygotowanie animacji - sklepy i stacje paliw

p + facet_wrap(~name) +
  transition_time(year) +
  labs(title = "Rok: {format(frame_time,1,4)}")

📘 Liczba urodzeń i zgonów na 1000 mieszkańców

Pobranie danych z Banku Danych Lokalnych

dane=get_data_by_variable(c("72305","63221","63215"),unitLevel=2)
dane$year=as.numeric(dane$year)
dane=dane %>% filter(year >2004)

Przygotowanie animacji - liczba urodzeń i zgonów na 1000 mieszkańców

p <- ggplot(
  dane, 
  aes(x = val_63221/val_72305*1000, y=val_63215/val_72305*1000, size = val_72305/1000000, colour = name)  ) +
  geom_point(show.legend = TRUE, alpha = 0.6) +
  scale_color_viridis_d() +
  scale_size(range = c(2, 10)) +
  labs(x = "Urodzenia żywe na 1000 mieszkańców", y = "Zgony  na 1000 mieszkańców")+
  labs(color="Województwo",size="Ludność w mln.")
p

Animacja

anim=p + transition_time(year) + labs(title = "Rok: {format(frame_time,1,4)}")
animate(anim, height = 8, width = 8,  units = "in", res = 150, end_pause=6,duration=15)

Animacja - inna forma uruchomienia

p + transition_time(year) + labs(title = "Rok: {format(frame_time,1,4)}")

Prezentacja w oknach (facet_wrap) - liczba urodzeń i zgonów na 1000 mieszkańców

p + facet_wrap(~name) +
  transition_time(year) +
  labs(title = "Rok: {format(frame_time,1,4)}")

Animacja - efekt shadow_wake)

p+ transition_time(year) +
  labs(title = "Rok: {format(frame_time,1,4)}") +
  shadow_wake(wake_length = 0.1, alpha = FALSE)

Animacja - efekt shadow_mark)

p+ transition_time(year) +
  labs(title = "Rok: {format(frame_time,1,4)}") +
  shadow_mark(alpha = 0.3, size = 0.5)

Przygotowanie animacji - boxplot

anim2 <- ggplot(dane, aes(factor(year), val_63221/val_72305*1000)) +
  geom_boxplot(color=3) +
  transition_manual(year, cumulative = TRUE)+
  labs(x = "Rok", y = "urodzenia żywe na 1000 ludności")

Animacja

anim2
animate(anim2, height = 6, width = 8,  units = "in", res = 150, end_pause=6,duration=15)

Przygotowanie animacji - wykres rozrzutu

anim <- ggplot(dane, aes(x=val_63221/val_72305*1000, y=val_63215/val_72305*1000,colour=name)) +
  geom_point() +
  labs(title = "{closest_state}") +
  transition_states(year, transition_length = 4, state_length = 1)+
  labs(x = "Urodzenia żywe na 1000 ludności", y = "Zgony na 1000 ludności")+
  labs(color="Województwo")

Animacja

animate(anim, height = 6, width = 8,  units = "in", res = 150, end_pause=6,duration=15)

Przygotowanie animacji - wykres rozrzutu + dodatkowe parametry

anim1 <- anim +
  shadow_wake(wake_length = 0.05)
animate(anim1, height = 6, width = 8,  units = "in", res = 150, end_pause=6,duration=15)

Animacja

anim2 <- anim +
  shadow_wake(0.05, size = 2, alpha = FALSE, colour = 'grey92')
animate(anim2, detail = 5,height = 6, width = 8,  units = "in", res = 150, end_pause=6,duration=15)

📘 Mieszkania

Pobranie danych z BDL

dane=get_data_by_variable(c("633688","633690","633691"),unitLevel=2)
dane$year=as.numeric(dane$year)
dane=dane %>% filter(year >2004)

Przygotowanie animacji

p <- ggplot(
  dane, 
  aes(x = val_633688, y=val_633691,  colour = name)  ) +
  geom_point(show.legend = TRUE, alpha = 0.6) +
  scale_color_viridis_d() +
  scale_size(range = c(2, 10)) +
  labs(x = "do 40m2", y = "pow 80m2")
p

Animacja

r<-p + transition_time(year) + labs(title = "Rok: {format(frame_time,1,4)}")

animate(r, detail = 5,height = 6, width = 8,  units = "in", res = 150, end_pause=6,duration=15)

## 📘 Ceny - woda zimna, węgiel kamienny i energia

Pobranie danych z BDL (cena 1 m3 wody zimnej)

dane=get_data_by_variable("5070",unitLevel=2)
theme_set(theme_bw())

Cena wody zimnej - przygotowanie animacji

dane=get_data_by_variable("5070",unitLevel=2)
p <- ggplot(
  dane,
  aes(year, val, group = name, color = factor(name))
  ) +
  geom_line() +
  scale_color_viridis_d() +
  labs(x = "Rok", y = "Cena 1m^3 wody zimnej w zł") +
  labs(color="Województwo")+
  theme(legend.position = "right")
p

Animacja

p + transition_reveal(as.numeric(year))

p + 
  geom_point() +
  transition_reveal(as.numeric(year))

Animacja - dodanie parametrów animacji

r=p + 
  geom_point(aes(group = seq_along(as.numeric(year)))) +
  transition_reveal(as.numeric(year))

animate(r, detail = 5,height = 6, width = 10,  units = "in", res = 150, end_pause=6,duration=15)

Pobranie danych z BDL (cena 1 t węgla kamiennego)

dane=get_data_by_variable("5029",unitLevel=2)

Przygotowanie animacji

p <- ggplot(
  dane,
  aes(year, val, group = name, color = factor(name))
  ) +
  geom_line() +
  scale_color_viridis_d() +
  labs(x = "Rok", y = "Cena 1 tony węgla kamiennego w zł") +
  labs(color="Województwo")+
  theme(legend.position = "right")
p

Animacja

p + transition_reveal(as.numeric(year))

Animacja

p + 
  geom_point() +
  transition_reveal(as.numeric(year))

Animacja - dodanie parametrów animacji

r=p + 
  geom_point(aes(group = seq_along(as.numeric(year)))) +
  transition_reveal(as.numeric(year))

animate(r, detail = 5,height = 6, width = 10,  units = "in", res = 150, end_pause=6,duration=15)

Pobranie danych z BDL (cena 1 kWh energii elektrycznej)

dane=get_data_by_variable("5071",unitLevel=2)

Przygotowanie animacji

p <- ggplot(
  dane,
  aes(year, val, group = name, color = factor(name))
  ) +
  geom_line() +
  scale_color_viridis_d() +
  labs(x = "Rok", y = "Cena 1kWh energii elektrycznej zł") +
  labs(color="Województwo")+
  theme(legend.position = "right")
p

Animacja

r=p + 
  geom_point(aes(group = seq_along(as.numeric(year)))) +
  transition_reveal(as.numeric(year))

animate(r, detail = 5,height = 6, width = 10,  units = "in", res = 150, end_pause=6,duration=15)

📘 Dochody na 1 mieszkańca w powiatach

Pobranie danych z BDL

get_variables("P2627")
## # A tibble: 18 × 7
##        id subjectId n1                 n2    level measureUnitId measureUnitName
##     <int> <chr>     <chr>              <chr> <int>         <int> <chr>          
##  1  76973 P2627     gminy łącznie z m… ogół…     6             4 zł             
##  2  76974 P2627     miasta na prawach… ogół…     6             4 zł             
##  3  76975 P2627     gminy bez miast n… ogół…     6             4 zł             
##  4  76976 P2627     gminy łącznie z m… doch…     6             4 zł             
##  5  76977 P2627     miasta na prawach… doch…     6             4 zł             
##  6  76978 P2627     gminy bez miast n… doch…     6             4 zł             
##  7  76979 P2627     gminy łącznie z m… udzi…     6             4 zł             
##  8  76980 P2627     miasta na prawach… udzi…     6             4 zł             
##  9  76981 P2627     gminy bez miast n… udzi…     6             4 zł             
## 10  76982 P2627     gminy łącznie z m… doch…     6             4 zł             
## 11  76983 P2627     miasta na prawach… doch…     6             4 zł             
## 12  76984 P2627     gminy bez miast n… doch…     6             4 zł             
## 13 149128 P2627     gminy łącznie z m… doch…     6             4 zł             
## 14 149129 P2627     miasta na prawach… doch…     6             4 zł             
## 15 149130 P2627     gminy bez miast n… doch…     6             4 zł             
## 16 149131 P2627     gminy łącznie z m… doch…     6             4 zł             
## 17 149132 P2627     miasta na prawach… doch…     6             4 zł             
## 18 149133 P2627     gminy bez miast n… doch…     6             4 zł
get_data_by_variable("76974",unitLevel=2)
## # A tibble: 336 × 8
##    id    name  year    val measureUnitId measureName attrId attributeDescription
##    <chr> <chr> <chr> <dbl> <chr>         <chr>        <int> <chr>               
##  1 0112… MAŁO… 2002  2022  4             zł               1 ""                  
##  2 0112… MAŁO… 2003  2098  4             zł               1 ""                  
##  3 0112… MAŁO… 2004  2379  4             zł               1 ""                  
##  4 0112… MAŁO… 2005  2674  4             zł               1 ""                  
##  5 0112… MAŁO… 2006  3055. 4             zł               1 ""                  
##  6 0112… MAŁO… 2007  3607. 4             zł               1 ""                  
##  7 0112… MAŁO… 2008  3876. 4             zł               1 ""                  
##  8 0112… MAŁO… 2009  4122. 4             zł               1 ""                  
##  9 0112… MAŁO… 2010  4430. 4             zł               1 ""                  
## 10 0112… MAŁO… 2011  4412. 4             zł               1 ""                  
## # ℹ 326 more rows

Przygotowanie animacji

# 76974 P2627     miasta na prawach powiatu
#         ogółem 

dane=get_data_by_variable("76974",unitLevel=2)
p <- ggplot(
  dane,
  aes(year, val, group = name, color = factor(name))
  ) +
  geom_line() +
  scale_color_viridis_d() +
  labs(x = "Rok", y = "Dochody na 1 mieszkańca miast na prawach powiatu w zł") +
  labs(color="Województwo")+
  theme(legend.position = "right")
p

Animacja

r=p + 
  geom_point(aes(group = seq_along(as.numeric(year)))) +
  transition_reveal(as.numeric(year))

animate(r, detail = 5,height = 6, width = 10,  units = "in", res = 150, end_pause=6,duration=15)

📗 13. Interaktywny dashboard z pakietem shiny

📘 Pakiety i zbiór danych

❕ Załadowanie pakietów

library(ggplot2)
library(dplyr)
library(tidyr)
library(shiny)
library(shinythemes)
## Warning: pakiet 'shinythemes' został zbudowany w wersji R 4.2.3

❕ ZZiór danych gapminder

library(gapminder)
head(gapminder)
## # A tibble: 6 × 6
##   country     continent  year lifeExp      pop gdpPercap
##   <fct>       <fct>     <int>   <dbl>    <int>     <dbl>
## 1 Afghanistan Asia       1952    28.8  8425333      779.
## 2 Afghanistan Asia       1957    30.3  9240934      821.
## 3 Afghanistan Asia       1962    32.0 10267083      853.
## 4 Afghanistan Asia       1967    34.0 11537966      836.
## 5 Afghanistan Asia       1972    36.1 13079460      740.
## 6 Afghanistan Asia       1977    38.4 14880372      786.

By możliwy był wybór przez użytkownika, która zmienna ma zostać przedstawiona na wykresie słupkowym dane należy przekształcić funkcja pivot_longer przeniesie wszystkie wartości trzech zmiennych do jednej kolumny a ich nazwy do drugiej. Liczba wierszy zwiększy się trzykrotnie. Niektóre kolumny zostaną przekształcone na factor ze względów estetycznych.

dane <- gapminder%>% pivot_longer(cols = c('lifeExp','pop','gdpPercap'),
                                  names_to = "zmienna",
                                  values_to = "wartość") %>% 
       mutate(zmienna=factor(zmienna,levels=c("lifeExp","pop","gdpPercap"),
                                 labels = c("średnia długość życia","populacja","PKB per capita")))

Wartości kilku kolorów które zostaną użyte w wykresach

k<- "#2b3e4f"
k2<-"#ededef"
k3<- "#df6916"
k4<-"#9d9da1"

Pakiet shiny pozwala na tworzenie internatywnych aplikacji.

Składają się one z dwóch głownych elementów - interfejsu użytkownika i serwera.

Aplikację taką można uruchomić za pomocą Rstudio lub opublikować jako stronę internetową.

📘 Interfejs użytkowmika

W ramach elementu ui zdefiniowany zostanie interfejs użytkownika.

Ta część aplikacji definiuje jakie elementy wyśwpietlane są po uruchomieniu alplikacji oraz ich układ i wygląd.

ui <- fluidPage(
  #wybór motywu
  theme = shinytheme("superhero"),
  #tytuł dashboardu
  titlePanel("Interaktywny dashboard z pakietem shiny"),
  #wewnątrz funkcji tabsetPanel zagnieżdżone są definiujące poszczególne karty funkcje tabPanel()
  tabsetPanel(
    ##pierwsza karta
    tabPanel("Gapminder - ogólne statystyki",
             ###panel boczny
             sidebarLayout(
               sidebarPanel(
                 ####wybór  daty - suwak
                 ####pierwszy argument to nazwa elementu input
                 ####można się do nich odnosić skryptach wykonywanych przez serwer
                 ####tutaj na przykład użytkownik wybiera dla jakiego roku sporządzony będzie wykres
                 sliderInput("data_slupkowy", 
                             #opis elemetu widoczny dla użytkownika
                              "Wybierz datę:", 
                              #wartości minimalne i maksymalne suwaka
                                min = 1952,
                                max = 2007,
                              #wartość domyślna
                                value=2007,
                              #co ile można się przesunąć suwakiem
                              #zbiór gapminder zawiera obserwacje co pięć lat dlatego step=5
                              #należy unikać możliwości wybrania suwakiem wartości niewystępujących w danych 
                              #jeżeli wartość ta ma być użyta do filtorwania
                                step=5,
                                sep=""),
                 ####wybór  zmiennej - lista rozwijana
                            selectInput("zmienna_slupkowy",
                                        "Wybierz zmienną:",
                                        #możliwe do wybrania wartości
                                        choices = c("średnia długość życia","populacja","PKB per capita"))),
               ###wyświetlany wykres słupkowy 
               ###sam wykres zostanie zdefiniowany w ramach elementu serwer
               mainPanel(
                 plotOutput("wykres_slupkowy")
               )
             )),
    ##druga karta
    tabPanel("Gapminder - wykres bąbelkowy",
             ###panel boczny
             sidebarLayout(
               sidebarPanel(
                 ####wybór  daty - suwak
                 sliderInput("data_babelkowy",
                                        "Wybierz datę:",
                                        min = 1952,
                                        max = 2007,
                                        value=2007,
                                        step=5,
                                        sep="",
                                        #animacja - klatka po klatce zobaczyć będzie można poszczególne lata
                                        animate = TRUE), 
                 ####wybór  kontynentów - lista z checkboxami
                 ####w przeciwieństwie do rozwijanej pozwala na wybór wielu elementów jednocześnie
                  checkboxGroupInput("kontynenty_babelkowy",
                                     "Wybierz wyświetlane kontynenty:",
                                     #możliwe do wybrania wartości
                                     choices = c("Azja","Europa","Afryka","Ameryki","Oceania"),
                                     #wartości domyślnie wybrane
                                      selected = c("Azja","Europa","Afryka","Ameryki","Oceania"))),
               ###wyświetlany wykres bąbelkowy  
               mainPanel(
                 plotOutput("wykres_babelkowy")
               )
             )),
    #trzecia karta
    tabPanel("Rozwój krajów Europy",
             ###w ramach tej karty zaprezentowany zostanie sposób na umieszczenie 
             ###kilku wykresów jednocześnie w jednej karcie
             sidebarLayout(
               sidebarPanel(
                 ####wybór  zmiennej - lista rozwijana
                 selectInput("kraj_liniowy",
                             "Wybierz kraj:",
                             #zamiast wypisywać możliwe wartości kod odwołuje się bezpośrednio do danych
                             choices = unique(gapminder%>%filter(continent=="Europe")%>%select(country)))),
               ###wyświetlane wykresy liniowe 
               mainPanel(
                 ####wszystkie wykresy umieszczone są w funkcji fluidRow
                 ####każdy umieszczony jest w osobnej funkcji column
                 ####pierwszy argument funkcji kolumn decyduje o szerokości argumentu z 12 jako maksimum
                 ####w celu umieszczenia dwóch wykresów obok siebie zamiast pod sobą 12 należałoby zamienić na 4 
                 ####(tak by suma szerokości 3 wykresów była równa 12)
                 fluidRow(
                   column(12,plotOutput("wykres_liniowy1")),
                   column(12,plotOutput("wykres_liniowy2")),
                   column(12,plotOutput("wykres_liniowy3"))
                 )
               )
             ))
             
    )
  )

📘 Serwer

W ramach serwera zostanie zapisany kod R, który wykonywany będzie przez dashboard.

W tym przypadku będą to głównie wykresy jednak można tu umieścić obliczenia, przekształcenia danych itp.

server <- function(input, output) {
  
  
  #wykres słupkowy
  
  ##wykres zostaje zapisany jako część elementu output
  ##do tych nazw odwoływać się można w ramach ui by wykres był widoczny w dashboardzie
  ##kod tworzący wykres obudowany jest funkcją renderPlot
  output$wykres_slupkowy <- renderPlot({
                            ###dane są filtorwane tak by ograniczyć je do zmiennej i roku 
                            ###wybranych przez użytkownika
                            ###przywołane zostają input$zmienna_slupkowy i input$data_slupkowy, 
                            ###których nazwy zostały zdefiniowane w funkcjach tworzących 
                            ###suwak i listę rozwijaną pierwszej karty
                            dane%>%filter(zmienna==input$zmienna_slupkowy,
                                                      year==input$data_slupkowy)%>%
                            ###dane zostają ograniczone do 20 obserwacji o najwyższych wartościach 
                            ###wybranej zmiennej w wybranym roku
                            slice_max(order_by = wartość,n=20)%>%
                            ###tworzenie wykresu ggpolt
                            ggplot(aes(y=reorder(country, wartość),x=wartość))+
                            geom_bar(stat='identity',fill=k3)+
                            geom_text(aes(label=wartość),color=k2,fontface='bold')+
                            theme(
                            panel.background = element_rect(fill = k, colour = k4,
                                        size = 0.5, linetype = "solid"),
                            panel.grid.major = element_line(size = 0.1, linetype = 'solid',
                                        colour = k4), 
                            panel.grid.minor = element_line(size = 0.1, linetype = 'solid',
                                        colour = k4),
                            plot.background = element_rect(fill = k),
                            axis.title= element_text(colour =k2,size=10,face='bold'),
                            axis.text= element_text(colour =k2,size=10,face='bold'))+
                            ###do zdefiniowanego przez użytkownika inputu można odwoływać się 
                            ###nie tylko w celu filtrowania danych
                            ### na przykład niżej opis osi bedzie zmieniał się w zależności od wybranej zmiennej
                            labs(x=input$zmienna_slupkowy,y="")
                            })
  
  #wykres bąbelkowy
  
  ##po raz kolejny wykres zapisany jest jako część outputu, sam kod generujący wykres umieszczony jest w funkcji renderPlot
  ##tym razem odtworzony zostanie znany sposób prezentacji danych gapminder - wykres bąbelkowy
  
  output$wykres_babelkowy <- renderPlot({gapminder%>%
                            ###zmienna continent przeształcona jest na factor tak by możliwe było użycie 
                            ###w elementach interfejsu polskich nazw kontynentów
                            mutate(continent=factor(continent,
                                                    levels = c("Asia","Europe","Africa","Americas","Oceania"),
                                                    labels = c("Azja","Europa","Afryka","Ameryki","Oceania")))%>%
                            ###dane ograniczone zostają do wybranego za pomocą suwaka roku
                            ###należy pamiętać że w tym przypadku suwak umożliwia animację wykresu 
                            ###tzn. dane będą filtrowane wielokrotnie,
                            ###w tym wypadku również wykres będzie wielokrotnie tworzony
                            filter(year==input$data_babelkowy,
                            ###użytkownik ma mozliwość wyboru wielu kontynentów na raz 
                            ###więc w filtrze wykorzystano operator %in%
                                    continent %in% input$kontynenty_babelkowy)%>%
                            ###tworzenie wykresu ggpolt
                            ggplot(aes(y=lifeExp,x=gdpPercap,color=continent,size=pop))+
                            geom_point()+
                            theme(
                            panel.background = element_rect(fill = k, colour = k4,
                                                            size = 0.5, linetype = "solid"),
                            panel.grid.major = element_line(size = 0.1, linetype = 'solid',
                                                            colour = k4), 
                            panel.grid.minor = element_line(size = 0.1, linetype = 'solid',
                                                            colour = k4),
                            plot.background = element_rect(fill = k),
                            legend.background = element_rect(fill = k),
                            axis.title= element_text(colour =k2,size=10,face='bold'),
                            legend.title= element_text(colour =k2,size=10,face='bold'),
                            axis.text= element_text(colour =k2,size=10,face='bold'),
                            legend.text= element_text(colour =k2,size=10,face='bold'))+
                            labs(x="PKB per capita",y="średnia długość życia")+
                            ###stałe zakresy wartości dla osi oraz rozmiaru punktów wprowadzono 
                            ###by legenda i osie nie zmieniały się podczas animacji
                            ###w przeciwnym wypadku każdy wykres miałby trochę inną skalę na osiach 
                            ###oraz w legendzie dopasowaną do danych dla danego roku
                            xlim(0,60000)+
                            ylim(0,84)+
                            scale_size(limits = c(60000,1319000000))+
                            labs(size="Populacja", color="Kontynent")
                            })
  
  #wykresy liniowe
  
  ##dla karty trzeciej przygotowane zostaną trzy osobne wykresy
  
  output$wykres_liniowy1 <- renderPlot({
                            gapminder_unfiltered%>%filter(country==input$kraj_liniowy)%>%
                            ggplot(aes(y=lifeExp,x=year))+
                            geom_line(color=k3,size=2)+
                            theme(
                              panel.background = element_rect(fill = k, colour = k4,
                                                              size = 0.5, linetype = "solid"),
                              panel.grid.major = element_line(size = 0.1, linetype = 'solid',
                                                              colour = k4), 
                              panel.grid.minor = element_line(size = 0.1, linetype = 'solid',
                                                              colour = k4),
                              plot.background = element_rect(fill = k),
                              axis.title= element_text(colour =k2,size=10,face='bold'),
                              axis.text= element_text(colour =k2,size=10,face='bold'))+
                            labs(x="",y="średnia długość życia")
                        })
  
  output$wykres_liniowy2 <- renderPlot({
                            gapminder_unfiltered%>%filter(country==input$kraj_liniowy)%>%
                            ggplot(aes(y=pop,x=year))+
                            geom_line(color=k3,size=2)+
                            theme(
                              panel.background = element_rect(fill = k, colour = k4,
                                                              size = 0.5, linetype = "solid"),
                              panel.grid.major = element_line(size = 0.1, linetype = 'solid',
                                                              colour = k4), 
                              panel.grid.minor = element_line(size = 0.1, linetype = 'solid',
                                                              colour = k4),
                              plot.background = element_rect(fill = k),
                              axis.title= element_text(colour =k2,size=10,face='bold'),
                              axis.text= element_text(colour =k2,size=10,face='bold'))+
                            labs(x="",y="populacja")
                        })
  
  output$wykres_liniowy3 <- renderPlot({
                            gapminder_unfiltered%>%filter(country==input$kraj_liniowy)%>%
                            ggplot(aes(y=gdpPercap,x=year))+
                            geom_line(color=k3,size=2)+
                            theme(
                              panel.background = element_rect(fill = k, colour = k4,
                                                              size = 0.5, linetype = "solid"),
                              panel.grid.major = element_line(size = 0.1, linetype = 'solid',
                                                              colour = k4), 
                              panel.grid.minor = element_line(size = 0.1, linetype = 'solid',
                                                              colour = k4),
                              plot.background = element_rect(fill = k),
                              axis.title= element_text(colour =k2,size=10,face='bold'),
                              axis.text= element_text(colour =k2,size=10,face='bold'))+
                            labs(x="",y="PKB per capita")
                        })
}

📘 Uruchomienie aplikacji

Po przygotowaniu serwera i ui w taki sposób możliwe jest wywołanie samego dashboardu za pomocą funkcji shinyApp.

shinyApp(ui = ui, server = server)
## PhantomJS not found. You can install it with webshot::install_phantomjs(). If it is installed, please make sure the phantomjs executable can be found via the PATH variable.
Shiny applications not supported in static R Markdown documents

📗 14. Uczenie maszynowe z pakietem mlr3

📘 Pakiet mlr3

Pakiet mlr3 pozwala na wykorzystanie różnorodnych algorytmów uczenia maszynowego w ujednolicony sposób.

library(mlr3)

📘 Klasyfikacja

Algorytmy te pozwalają przewidzieć klasę do jakiej należy dana obserwacja.

Na przykład w przypadku zbioru danych iris kolumna Species określa przynależność danego kwiatu do jednego z trzech gatunków.

#Wykorzystywany zbiór danych:
head(iris)
##   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1          5.1         3.5          1.4         0.2  setosa
## 2          4.9         3.0          1.4         0.2  setosa
## 3          4.7         3.2          1.3         0.2  setosa
## 4          4.6         3.1          1.5         0.2  setosa
## 5          5.0         3.6          1.4         0.2  setosa
## 6          5.4         3.9          1.7         0.4  setosa

❕ Zadanie

W celu wytrenowania algorytmu dla danego zbioru danych należy stworzyć zadanie.

Umożliwia to funkcja as_task_classif której pierwszy argument to nasz zbiór danych a drugi to nazwa kolumny w której znajduje się przewidywana klasa.

zadanie <- as_task_classif(iris, target="Species")

zadanie
## <TaskClassif:iris> (150 x 5)
## * Target: Species
## * Properties: multiclass
## * Features (4):
##   - dbl (4): Petal.Length, Petal.Width, Sepal.Length, Sepal.Width

Należy pamiętać, że kolumna podana jako target musi zawierać zmienną typu factor.

W przypadku zbioru danych iris kolumna Species jest typu factor, jednak jeżeli to zmienimy próba utworzenia zadania zwróci error.

❕ Algorytm

Niezależnie od utworzonego powyżej zadania należy stworzyć obiekt, który zdefiniuje typ algorytmu jaki zostanie wykorzystany.

drzewo_decyzyjne <- lrn("classif.rpart")

Dostępne algorytmy można zobaczyć przywołując następujący obiekt:

mlr_learners
## <DictionaryLearner> with 6 stored values
## Keys: classif.debug, classif.featureless, classif.rpart, regr.debug,
##   regr.featureless, regr.rpart

Niewiele algorytmów jest dostępne w ramach podstawowego mlr3.

By uzyskać dostęp do dodatkowych algorytmów należy wczytać następującą bibliotekę.

library(mlr3learners)

Teraz lista dostępnych algorytmów zawiera znacznie więcej elementów.

mlr_learners
## <DictionaryLearner> with 27 stored values
## Keys: classif.cv_glmnet, classif.debug, classif.featureless,
##   classif.glmnet, classif.kknn, classif.lda, classif.log_reg,
##   classif.multinom, classif.naive_bayes, classif.nnet, classif.qda,
##   classif.ranger, classif.rpart, classif.svm, classif.xgboost,
##   regr.cv_glmnet, regr.debug, regr.featureless, regr.glmnet, regr.kknn,
##   regr.km, regr.lm, regr.nnet, regr.ranger, regr.rpart, regr.svm,
##   regr.xgboost

Dzięki temu wykorzystać będzie można takie algorytmy jak na przykład k najbliższych sąsiadów.

knn <- lrn("classif.kknn")

Możliwe że wybrany algorytm wymagać będzie instalacji dodatkowego pakietu.

Powyższy algorytm wymaga na przykład pakietu kknn.

Nie trzeba jednak wczytywać pakietu za pomocą funkcji library() - wystarczy że jest on zainstalowany.

Podstawowe zastosowanie algorytmu.

Tak przygotowany algorytm można teraz zastosować dla określonego zadania.

Najpierw konieczne jest wytrenowanie modelu - etap ten można porównać do oszacowania parametrów modelu ekonometrycznego.

Należy zwrócić uwagę na to, że przywołanie $train() zmodyfikuje już istniejący obiekt drzewo_decyzyjne.

ynik nie jest zapisany jako osobny model a automatycznie nadpisuje utworzony wcześniej obiekt dla którego zdefiniowano tylko algorytm.

####przed zastosowaniem $train() model jest pusty
drzewo_decyzyjne$model
## NULL

Zastosowanie algorytmu drzewa decyzyjnego dla zadania klasyfikacji kwiatów powoduje że model nie jest już pusty.

drzewo_decyzyjne$train(zadanie)

drzewo_decyzyjne$model
## n= 150 
## 
## node), split, n, loss, yval, (yprob)
##       * denotes terminal node
## 
## 1) root 150 100 setosa (0.33333333 0.33333333 0.33333333)  
##   2) Petal.Length< 2.45 50   0 setosa (1.00000000 0.00000000 0.00000000) *
##   3) Petal.Length>=2.45 100  50 versicolor (0.00000000 0.50000000 0.50000000)  
##     6) Petal.Width< 1.75 54   5 versicolor (0.00000000 0.90740741 0.09259259) *
##     7) Petal.Width>=1.75 46   1 virginica (0.00000000 0.02173913 0.97826087) *

W celu uzyskania wartości przewidywanych przez model należy zastosować $predict().

W przeciwieństwie do $train() wyniki $predict() należy zapisać jako osobny obiekt.

gatunki_przewidywane <- drzewo_decyzyjne$predict(zadanie)

Warto zauważyć, że wynik tej operacji zwraca tabelę w której znajdują się zarówno wartości rzeczywiste (truth) jak i przewidywane (response).

gatunki_przewidywane
## <PredictionClassif> for 150 observations:
##     row_ids     truth  response
##           1    setosa    setosa
##           2    setosa    setosa
##           3    setosa    setosa
## ---                            
##         148 virginica virginica
##         149 virginica virginica
##         150 virginica virginica

❕ Podział na zbiór uczący i testowy

W celu poprawnej oceny jakości dopasowania modelu należy losowo wydzielić zbiór uczący i testowy.

Zbiór testowy symulować ma trafność przewidywania modelu dla nowych obserwacji.

Posłużyć do tego może funkcja partition.

uczący_testowy <- partition(zadanie)

Funkcja ta zwraca dwie listy id elementów przypisanych do zbioru uczącego (train) i testowego (test).

head(uczący_testowy)
## $train
##   [1]   3   4   5   7   8   9  10  11  12  13  14  15  17  19  21  24  25  26
##  [19]  27  28  29  30  31  32  36  37  40  41  42  43  45  48  49  50  55  56
##  [37]  57  58  59  60  61  62  63  65  66  67  68  70  71  73  75  76  77  79
##  [55]  81  82  83  84  85  88  90  91  92  93  94  95  96  97 102 103 104 105
##  [73] 107 108 110 112 113 114 115 118 119 121 122 123 125 126 129 130 131 132
##  [91] 134 135 138 139 140 141 142 143 144 145 146 147
## 
## $test
##  [1]   1   2   6  16  18  20  22  23  33  34  35  38  39  44  46  47  51  52  53
## [20]  54  64  69  72  74  78  80  86  87  89  98  99 100 101 106 109 111 116 117
## [39] 120 124 127 128 133 136 137 148 149 150

Domyślnie zbiór uczący stanowić będzie 67% obserwacji z oryginalnego zbioru danych, a zbiór testowy 33%.

By to zmienić można użyć argumentu ratio określającego procent obserwacji który zostanie wylosowany do zbioru uczącego.

Poniższa komenda podzieli obserwacje tak by 50% znalazło się w zbiorze uczącym.

partition(zadanie,ratio = 0.5)
## $train
##  [1]   5   6   7  10  12  15  16  17  20  22  23  24  26  27  29  30  32  35  38
## [20]  39  40  41  43  46  50  51  54  57  59  61  63  66  69  70  71  72  74  75
## [39]  76  80  82  83  84  86  89  93  94  95  96  98 101 102 103 106 108 111 113
## [58] 114 116 120 121 122 123 127 129 132 135 136 139 140 142 144 147 149 150
## 
## $test
##  [1]   1   2   3   4   8   9  11  13  14  18  19  21  25  28  31  33  34  36  37
## [20]  42  44  45  47  48  49  52  53  55  56  58  60  62  64  65  67  68  73  77
## [39]  78  79  81  85  87  88  90  91  92  97  99 100 104 105 107 109 110 112 115
## [58] 117 118 119 124 125 126 128 130 131 133 134 137 138 141 143 145 146 148

By skorzystać z podziału wykonanego za pomocą funkcji partition należy wykorzystać argument row_ids.

Na etapie tworzenia modelu wykorzystany zostanie tylko zbiór uczący.

knn$train(zadanie,row_ids = uczący_testowy$train)

Przewidywanie gatunków dla zbioru testowego.

gatunki_przewidywane_test <- knn$predict(zadanie,row_ids = uczący_testowy$test)

gatunki_przewidywane_test
## <PredictionClassif> for 48 observations:
##     row_ids     truth   response
##           1    setosa     setosa
##           2    setosa     setosa
##           6    setosa     setosa
## ---                             
##         148 virginica  virginica
##         149 virginica  virginica
##         150 virginica versicolor

❕ Parametry modelu

By sprawdzić jakie wartości parametrów zostały ustawione przez $train() wykorzystać można param_set.

knn$param_set
## <ParamSet>
##             id    class lower upper nlevels default value
## 1:           k ParamInt     1   Inf     Inf       7     7
## 2:    distance ParamDbl     0   Inf     Inf       2      
## 3:      kernel ParamFct    NA    NA      10 optimal      
## 4:       scale ParamLgl    NA    NA       2    TRUE      
## 5:     ykernel ParamUty    NA    NA     Inf              
## 6: store_model ParamLgl    NA    NA       2   FALSE

Możliwa jest samodzielna modyfikacja parametrów.

Odwołać się do nich można za pomocą nazwy z kolumny id.

Na przykład dla algorytmu najbliższych sąsiadów liczba sąsiadów branych pod uwagę może być zmodyfikowana przy użyciu argumentu k.

knn_k5 <- lrn("classif.kknn",k=5)

knn_k5$train(zadanie,row_ids = uczący_testowy$train)

Wywołując param_set można zaobserwować, że dla nowego modelu k jest równe nie 7 a 5.

knn_k5$param_set
## <ParamSet>
##             id    class lower upper nlevels default value
## 1:           k ParamInt     1   Inf     Inf       7     5
## 2:    distance ParamDbl     0   Inf     Inf       2      
## 3:      kernel ParamFct    NA    NA      10 optimal      
## 4:       scale ParamLgl    NA    NA       2    TRUE      
## 5:     ykernel ParamUty    NA    NA     Inf              
## 6: store_model ParamLgl    NA    NA       2   FALSE

❕ Ocena modeli

Istnieje wiele miar pozwalających na ocenę i porównywanie modeli.

W ramach pakietu mlr3 dostępne są następujące miary .

mlr_measures
## <DictionaryMeasure> with 62 stored values
## Keys: aic, bic, classif.acc, classif.auc, classif.bacc, classif.bbrier,
##   classif.ce, classif.costs, classif.dor, classif.fbeta, classif.fdr,
##   classif.fn, classif.fnr, classif.fomr, classif.fp, classif.fpr,
##   classif.logloss, classif.mauc_au1p, classif.mauc_au1u,
##   classif.mauc_aunp, classif.mauc_aunu, classif.mbrier, classif.mcc,
##   classif.npv, classif.ppv, classif.prauc, classif.precision,
##   classif.recall, classif.sensitivity, classif.specificity, classif.tn,
##   classif.tnr, classif.tp, classif.tpr, debug, oob_error, regr.bias,
##   regr.ktau, regr.mae, regr.mape, regr.maxae, regr.medae, regr.medse,
##   regr.mse, regr.msle, regr.pbias, regr.rae, regr.rmse, regr.rmsle,
##   regr.rrse, regr.rse, regr.rsq, regr.sae, regr.smape, regr.srho,
##   regr.sse, selected_features, sim.jaccard, sim.phi, time_both,
##   time_predict, time_train

Bardziej rozbudowane informacje można uzyskać następująco.

as.data.table(msr())
##                     key                                               label
##  1:                 aic                        Akaika Information Criterion
##  2:                 bic                      Bayesian Information Criterion
##  3:         classif.acc                             Classification Accuracy
##  4:         classif.auc                            Area Under the ROC Curve
##  5:        classif.bacc                                   Balanced Accuracy
##  6:      classif.bbrier                                  Binary Brier Score
##  7:          classif.ce                                Classification Error
##  8:       classif.costs                       Cost-sensitive Classification
##  9:         classif.dor                               Diagnostic Odds Ratio
## 10:       classif.fbeta                                        F-beta score
## 11:         classif.fdr                                False Discovery Rate
## 12:          classif.fn                                     False Negatives
## 13:         classif.fnr                                 False Negative Rate
## 14:        classif.fomr                                 False Omission Rate
## 15:          classif.fp                                     False Positives
## 16:         classif.fpr                                 False Positive Rate
## 17:     classif.logloss                                            Log Loss
## 18:   classif.mauc_au1p             Weighted average 1 vs. 1 multiclass AUC
## 19:   classif.mauc_au1u                      Average 1 vs. 1 multiclass AUC
## 20:   classif.mauc_aunp          Weighted average 1 vs. rest multiclass AUC
## 21:   classif.mauc_aunu                   Average 1 vs. rest multiclass AUC
## 22:      classif.mbrier                              Multiclass Brier Score
## 23:         classif.mcc                    Matthews Correlation Coefficient
## 24:         classif.npv                           Negative Predictive Value
## 25:         classif.ppv                           Positive Predictive Value
## 26:       classif.prauc                              Precision-Recall Curve
## 27:   classif.precision                                           Precision
## 28:      classif.recall                                              Recall
## 29: classif.sensitivity                                         Sensitivity
## 30: classif.specificity                                         Specificity
## 31:          classif.tn                                      True Negatives
## 32:         classif.tnr                                  True Negative Rate
## 33:          classif.tp                                      True Positives
## 34:         classif.tpr                                  True Positive Rate
## 35:               debug                        Debug Classification Measure
## 36:           oob_error                                    Out-of-bag Error
## 37:           regr.bias                                                Bias
## 38:           regr.ktau                                       Kendall's tau
## 39:            regr.mae                                 Mean Absolute Error
## 40:           regr.mape                         Mean Absolute Percent Error
## 41:          regr.maxae                                  Max Absolute Error
## 42:          regr.medae                               Median Absolute Error
## 43:          regr.medse                                Median Squared Error
## 44:            regr.mse                                  Mean Squared Error
## 45:           regr.msle                              Mean Squared Log Error
## 46:          regr.pbias                                        Percent Bias
## 47:            regr.rae                             Relative Absolute Error
## 48:           regr.rmse                             Root Mean Squared Error
## 49:          regr.rmsle                         Root Mean Squared Log Error
## 50:           regr.rrse                         Root Relative Squared Error
## 51:            regr.rse                              Relative Squared Error
## 52:            regr.rsq                                           R Squared
## 53:            regr.sae                              Sum of Absolute Errors
## 54:          regr.smape               Symmetric Mean Absolute Percent Error
## 55:           regr.srho                                      Spearman's rho
## 56:            regr.sse                               Sum of Squared Errors
## 57:   selected_features Absolute or Relative Frequency of Selected Features
## 58:         sim.jaccard                            Jaccard Similarity Index
## 59:             sim.phi                          Phi Coefficient Similarity
## 60:           time_both                                        Elapsed Time
## 61:        time_predict                                        Elapsed Time
## 62:          time_train                                        Elapsed Time
##                     key                                               label
##     task_type          packages predict_type task_properties
##  1:      <NA>              mlr3     response                
##  2:      <NA>              mlr3     response                
##  3:   classif mlr3,mlr3measures     response                
##  4:   classif mlr3,mlr3measures         prob        twoclass
##  5:   classif mlr3,mlr3measures     response                
##  6:   classif mlr3,mlr3measures         prob        twoclass
##  7:   classif mlr3,mlr3measures     response                
##  8:   classif              mlr3     response                
##  9:   classif mlr3,mlr3measures     response        twoclass
## 10:   classif mlr3,mlr3measures     response        twoclass
## 11:   classif mlr3,mlr3measures     response        twoclass
## 12:   classif mlr3,mlr3measures     response        twoclass
## 13:   classif mlr3,mlr3measures     response        twoclass
## 14:   classif mlr3,mlr3measures     response        twoclass
## 15:   classif mlr3,mlr3measures     response        twoclass
## 16:   classif mlr3,mlr3measures     response        twoclass
## 17:   classif mlr3,mlr3measures         prob                
## 18:   classif mlr3,mlr3measures         prob                
## 19:   classif mlr3,mlr3measures         prob                
## 20:   classif mlr3,mlr3measures         prob                
## 21:   classif mlr3,mlr3measures         prob                
## 22:   classif mlr3,mlr3measures         prob                
## 23:   classif mlr3,mlr3measures     response        twoclass
## 24:   classif mlr3,mlr3measures     response        twoclass
## 25:   classif mlr3,mlr3measures     response        twoclass
## 26:   classif mlr3,mlr3measures         prob        twoclass
## 27:   classif mlr3,mlr3measures     response        twoclass
## 28:   classif mlr3,mlr3measures     response        twoclass
## 29:   classif mlr3,mlr3measures     response        twoclass
## 30:   classif mlr3,mlr3measures     response        twoclass
## 31:   classif mlr3,mlr3measures     response        twoclass
## 32:   classif mlr3,mlr3measures     response        twoclass
## 33:   classif mlr3,mlr3measures     response        twoclass
## 34:   classif mlr3,mlr3measures     response        twoclass
## 35:      <NA>              mlr3     response                
## 36:      <NA>              mlr3     response                
## 37:      regr mlr3,mlr3measures     response                
## 38:      regr mlr3,mlr3measures     response                
## 39:      regr mlr3,mlr3measures     response                
## 40:      regr mlr3,mlr3measures     response                
## 41:      regr mlr3,mlr3measures     response                
## 42:      regr mlr3,mlr3measures     response                
## 43:      regr mlr3,mlr3measures     response                
## 44:      regr mlr3,mlr3measures     response                
## 45:      regr mlr3,mlr3measures     response                
## 46:      regr mlr3,mlr3measures     response                
## 47:      regr mlr3,mlr3measures     response                
## 48:      regr mlr3,mlr3measures     response                
## 49:      regr mlr3,mlr3measures     response                
## 50:      regr mlr3,mlr3measures     response                
## 51:      regr mlr3,mlr3measures     response                
## 52:      regr mlr3,mlr3measures     response                
## 53:      regr mlr3,mlr3measures     response                
## 54:      regr mlr3,mlr3measures     response                
## 55:      regr mlr3,mlr3measures     response                
## 56:      regr mlr3,mlr3measures     response                
## 57:      <NA>              mlr3     response                
## 58:      <NA> mlr3,mlr3measures     response                
## 59:      <NA> mlr3,mlr3measures     response                
## 60:      <NA>              mlr3         <NA>                
## 61:      <NA>              mlr3         <NA>                
## 62:      <NA>              mlr3         <NA>                
##     task_type          packages predict_type task_properties

Podobnie jak w przypadku wybrania używanego algorytmu należy utworzyć obiekt określający, która miara zostanie wykorzystana.

Na przykład w celu obliczenia trafności (ang. accuracy) obiekt należy zdefiniować następująco.

trafność <- msr("classif.acc")

By obliczyć trafność danego modelu na danym zbiorze danych najpierw należy otrzymać przewidywane wartości za pomocą $predict().

gatunki_przewidywane_test_knn_k5 <- knn_k5$predict(zadanie,row_ids = uczący_testowy$test)

gatunki_przewidywane_test_knn_k5
## <PredictionClassif> for 48 observations:
##     row_ids     truth  response
##           1    setosa    setosa
##           2    setosa    setosa
##           6    setosa    setosa
## ---                            
##         148 virginica virginica
##         149 virginica virginica
##         150 virginica virginica

Po zapisaniu wyniku $predict() można dla tego obiektu obliczyć trafność wykorzystując $score().

Wynik oznacza odsetek poprawnie sklasyfikowanych obserwacji ze zbioru testowego przy pomoc algorytmu k najbliższych sąsiadów z k=5.

gatunki_przewidywane_test_knn_k5$score(trafność)
## classif.acc 
##   0.9583333

❕ Regresja

Algorytmy te pozwalają przewidzieć wartość zmiennej ilościowej.

Tak jak w przypadku klasyfikacji należy utworzyć zadanie.

Dla regresji zamiast funkcji as_task_classif należy wykorzystać as_task_regr.

W tym przykładzie przewidywana będzie szerokość płatka.

zadanie_regresja <- as_task_regr(iris,target = "Petal.Width")

Wybór algorytmu następuje również w ten sam sposób jak w przypadku klasyfikacji.

Dla zadania regresji dostępne są jednak inne algorytmy.

mlr_learners
## <DictionaryLearner> with 27 stored values
## Keys: classif.cv_glmnet, classif.debug, classif.featureless,
##   classif.glmnet, classif.kknn, classif.lda, classif.log_reg,
##   classif.multinom, classif.naive_bayes, classif.nnet, classif.qda,
##   classif.ranger, classif.rpart, classif.svm, classif.xgboost,
##   regr.cv_glmnet, regr.debug, regr.featureless, regr.glmnet, regr.kknn,
##   regr.km, regr.lm, regr.nnet, regr.ranger, regr.rpart, regr.svm,
##   regr.xgboost

W omawianym przykładzie zostanie wykorzystany las losowy.

las_losowy <- lrn("regr.ranger")

❕ Model

las_losowy$train(zadanie_regresja,row_ids = uczący_testowy$train)

Wartości przewidywane dla zbioru testowego.

regresja_przewidywane <- las_losowy$predict(zadanie_regresja,row_ids = uczący_testowy$test)

Wiele z miar wykorzystywanych do oceny modeli uczenia maszynowego majacych na celu regresję są analogiczne do tych wykorzystywanych w ekonometrii Przykładem może być MAPE czy MAE.

as.data.table(msr())
##                     key                                               label
##  1:                 aic                        Akaika Information Criterion
##  2:                 bic                      Bayesian Information Criterion
##  3:         classif.acc                             Classification Accuracy
##  4:         classif.auc                            Area Under the ROC Curve
##  5:        classif.bacc                                   Balanced Accuracy
##  6:      classif.bbrier                                  Binary Brier Score
##  7:          classif.ce                                Classification Error
##  8:       classif.costs                       Cost-sensitive Classification
##  9:         classif.dor                               Diagnostic Odds Ratio
## 10:       classif.fbeta                                        F-beta score
## 11:         classif.fdr                                False Discovery Rate
## 12:          classif.fn                                     False Negatives
## 13:         classif.fnr                                 False Negative Rate
## 14:        classif.fomr                                 False Omission Rate
## 15:          classif.fp                                     False Positives
## 16:         classif.fpr                                 False Positive Rate
## 17:     classif.logloss                                            Log Loss
## 18:   classif.mauc_au1p             Weighted average 1 vs. 1 multiclass AUC
## 19:   classif.mauc_au1u                      Average 1 vs. 1 multiclass AUC
## 20:   classif.mauc_aunp          Weighted average 1 vs. rest multiclass AUC
## 21:   classif.mauc_aunu                   Average 1 vs. rest multiclass AUC
## 22:      classif.mbrier                              Multiclass Brier Score
## 23:         classif.mcc                    Matthews Correlation Coefficient
## 24:         classif.npv                           Negative Predictive Value
## 25:         classif.ppv                           Positive Predictive Value
## 26:       classif.prauc                              Precision-Recall Curve
## 27:   classif.precision                                           Precision
## 28:      classif.recall                                              Recall
## 29: classif.sensitivity                                         Sensitivity
## 30: classif.specificity                                         Specificity
## 31:          classif.tn                                      True Negatives
## 32:         classif.tnr                                  True Negative Rate
## 33:          classif.tp                                      True Positives
## 34:         classif.tpr                                  True Positive Rate
## 35:               debug                        Debug Classification Measure
## 36:           oob_error                                    Out-of-bag Error
## 37:           regr.bias                                                Bias
## 38:           regr.ktau                                       Kendall's tau
## 39:            regr.mae                                 Mean Absolute Error
## 40:           regr.mape                         Mean Absolute Percent Error
## 41:          regr.maxae                                  Max Absolute Error
## 42:          regr.medae                               Median Absolute Error
## 43:          regr.medse                                Median Squared Error
## 44:            regr.mse                                  Mean Squared Error
## 45:           regr.msle                              Mean Squared Log Error
## 46:          regr.pbias                                        Percent Bias
## 47:            regr.rae                             Relative Absolute Error
## 48:           regr.rmse                             Root Mean Squared Error
## 49:          regr.rmsle                         Root Mean Squared Log Error
## 50:           regr.rrse                         Root Relative Squared Error
## 51:            regr.rse                              Relative Squared Error
## 52:            regr.rsq                                           R Squared
## 53:            regr.sae                              Sum of Absolute Errors
## 54:          regr.smape               Symmetric Mean Absolute Percent Error
## 55:           regr.srho                                      Spearman's rho
## 56:            regr.sse                               Sum of Squared Errors
## 57:   selected_features Absolute or Relative Frequency of Selected Features
## 58:         sim.jaccard                            Jaccard Similarity Index
## 59:             sim.phi                          Phi Coefficient Similarity
## 60:           time_both                                        Elapsed Time
## 61:        time_predict                                        Elapsed Time
## 62:          time_train                                        Elapsed Time
##                     key                                               label
##     task_type          packages predict_type task_properties
##  1:      <NA>              mlr3     response                
##  2:      <NA>              mlr3     response                
##  3:   classif mlr3,mlr3measures     response                
##  4:   classif mlr3,mlr3measures         prob        twoclass
##  5:   classif mlr3,mlr3measures     response                
##  6:   classif mlr3,mlr3measures         prob        twoclass
##  7:   classif mlr3,mlr3measures     response                
##  8:   classif              mlr3     response                
##  9:   classif mlr3,mlr3measures     response        twoclass
## 10:   classif mlr3,mlr3measures     response        twoclass
## 11:   classif mlr3,mlr3measures     response        twoclass
## 12:   classif mlr3,mlr3measures     response        twoclass
## 13:   classif mlr3,mlr3measures     response        twoclass
## 14:   classif mlr3,mlr3measures     response        twoclass
## 15:   classif mlr3,mlr3measures     response        twoclass
## 16:   classif mlr3,mlr3measures     response        twoclass
## 17:   classif mlr3,mlr3measures         prob                
## 18:   classif mlr3,mlr3measures         prob                
## 19:   classif mlr3,mlr3measures         prob                
## 20:   classif mlr3,mlr3measures         prob                
## 21:   classif mlr3,mlr3measures         prob                
## 22:   classif mlr3,mlr3measures         prob                
## 23:   classif mlr3,mlr3measures     response        twoclass
## 24:   classif mlr3,mlr3measures     response        twoclass
## 25:   classif mlr3,mlr3measures     response        twoclass
## 26:   classif mlr3,mlr3measures         prob        twoclass
## 27:   classif mlr3,mlr3measures     response        twoclass
## 28:   classif mlr3,mlr3measures     response        twoclass
## 29:   classif mlr3,mlr3measures     response        twoclass
## 30:   classif mlr3,mlr3measures     response        twoclass
## 31:   classif mlr3,mlr3measures     response        twoclass
## 32:   classif mlr3,mlr3measures     response        twoclass
## 33:   classif mlr3,mlr3measures     response        twoclass
## 34:   classif mlr3,mlr3measures     response        twoclass
## 35:      <NA>              mlr3     response                
## 36:      <NA>              mlr3     response                
## 37:      regr mlr3,mlr3measures     response                
## 38:      regr mlr3,mlr3measures     response                
## 39:      regr mlr3,mlr3measures     response                
## 40:      regr mlr3,mlr3measures     response                
## 41:      regr mlr3,mlr3measures     response                
## 42:      regr mlr3,mlr3measures     response                
## 43:      regr mlr3,mlr3measures     response                
## 44:      regr mlr3,mlr3measures     response                
## 45:      regr mlr3,mlr3measures     response                
## 46:      regr mlr3,mlr3measures     response                
## 47:      regr mlr3,mlr3measures     response                
## 48:      regr mlr3,mlr3measures     response                
## 49:      regr mlr3,mlr3measures     response                
## 50:      regr mlr3,mlr3measures     response                
## 51:      regr mlr3,mlr3measures     response                
## 52:      regr mlr3,mlr3measures     response                
## 53:      regr mlr3,mlr3measures     response                
## 54:      regr mlr3,mlr3measures     response                
## 55:      regr mlr3,mlr3measures     response                
## 56:      regr mlr3,mlr3measures     response                
## 57:      <NA>              mlr3     response                
## 58:      <NA> mlr3,mlr3measures     response                
## 59:      <NA> mlr3,mlr3measures     response                
## 60:      <NA>              mlr3         <NA>                
## 61:      <NA>              mlr3         <NA>                
## 62:      <NA>              mlr3         <NA>                
##     task_type          packages predict_type task_properties
MAPE <- msr("regr.mape")

Wartość MAPE uzyskana przez model.

regresja_przewidywane$score(MAPE)
## regr.mape 
## 0.2021149