1 Wstęp

Do tworzenia wykresów statystycznych w R można wykorzystać jedną z popularnych bibliotek:

2 Grafika w R - praca z pakietem lattice

2.1 Przykładowe dane

Przykładowe dane, z którymi będziemy pracować, załadujemy z pakietu Przemysława Biecka “PBImisc” (autor “Przewodnik po pakiecie R”). W przypadku pierwszego użycia tego pakietu, należy go zainstalować (w RStudio, pasek zadań-> Tools->Install Packages… - może wymagać uruchomienia RStudio w trybie administratora).

Inny sposób na instalowanie biblioteki jak w przykładzie niżej (linijka jest zakomentowana, instalujemy raz):

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

Na nasze potrzeby sprawdzimy “zawartość” obiektu kidney:

head(kidney) # sprawdzić w pomocy co robi funkcja head
mode(kidney)   #typ obiektu
str(kidney)    #struktura obiektu
summary(kidney) #podsumowanie
? PBImisc # informacje na temat pakietu, w szczególności zbioru danych
#"kidney" (na dole okna pomocy powinien znajdować się link "Index"
#do dalszej części dokumentacji)

2.2 Porównanie wykresów z 3 pakietów ze domyślnymi argumentami

Uwaga: pakiety lattice i ggplot2 wymagają załadowania bibliotek i być może jednorazowego zainstalowania.

plot(MDRD12~MDRD7, data=kidney) #standardowy wkres

library("lattice")
xyplot(MDRD12~MDRD7, data=kidney) # za pomocą pakietu lattice

library("ggplot2")
qplot(MDRD12,MDRD7, data=kidney)  # za pomocą pakietu ggplot2

2.3 Elementy wykresu w pakiecie lattice

  • Użyty szablon - każdy szablon realizowany przez odpowiednią funkcję z pakietu. Listę funkcji można znaleźć w pomocy na temat pakietu (omówione zostaną w dalszej części Laboratorium):
? lattice
Funkcje podzielone są na grupy: funkcje jednej zmiennej (univariate), dwóch zmiennych (bivariate), trójwymiarowe (trivariate) i wielu zmiennych (multivariate). Funkcje te i ich opcje omówimy w dalszej części. **Uwaga:** przez wykres dwóch zmiennych rozumiemy wykres, gdzie jedna ze zmiennych jest zależna (np. jest funkcją) drugiej zmiennej.
  • Formuła opisująca, które zmienne i w jakiej roli mają wystąpić na wykresie. Formuła składa się z 3 części: lewej strony formuły, prawej strony formuły i warunkowania. Zmienne powinny być widoczne w lokalnej przestrzeni nazw (prawe górne okno RStudio) albo odpowiadać nazwom kolumn w danych wskazanych przez argument data.
    Składnia formuły:
    zmienna objaśniana ~ zmienne objaśniające | zmienna grupująca

    zmienna objaśniana oraz zmienna grupująca może zawierać dowolną liczbę zmiennych rozdzielonych znakiem * lub + (znaki te można używać zamiennie)

  • Typy zmiennych użytych w formule, od nich zależy sposób prezentacji na wykresie.

2.4 Podstawowy wykres

2.4.1 Dane do wykresu

Spróbujemy najpierw przyjrzeć się trzem wybranym elementom zbioru kidney, a następnie zilustrujemy dane na wykresie (chodzi o kolumny MDRD12, MDRD7, discrepancy.DR ramki danych kidney). Sprawdzić w pomocy ? kidney co opisują (mierzą) te zmienne.

head(kidney$MDRD12) # można pominąć head()
## [1] 65 62 45 60 64 45
summary(kidney$MDRD12)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    8.00   42.00   51.00   52.22   62.00  153.00
head(kidney$MDRD7)
## [1] 46 44  6  8 36  9
summary(kidney$MDRD7)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    5.00    9.00   18.50   24.36   37.00   99.00
kidney$discrepancy.DR
##   [1] 1 1 1 0 1 0 0 1 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 1 1 0 1 1 0 1 1 1 1 1 1 2
##  [38] 1 1 2 0 0 2 1 0 1 0 0 1 1 0 0 1 1 1 0 0 1 2 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1
##  [75] 0 0 1 1 1 1 1 0 1 1 1 1 1 0 0 1 1 1 0 2 0 0 1 0 0 0 1 0 0 2 1 1 1 0 1 1 1
## [112] 1 0 0 0 0 1 1 2 1 1 1 1 1 1 1 0 1 1 1 1 0 0 1 1 1 1 1 1 0 1 0 1 1 0 1 1 1
## [149] 2 2 1 1 1 1 1 0 1 1 1 0 0 1 0 0 1 1 0 1 1 1 1 1 1 1 1 0 1 0 0 1 1 1 0 1 1
## [186] 1 0 1 0 1 1 0 1 1 1 1 1 1 0 1 1 0 1 1 1 1 1 1 0 1 2 0 1 0 0 1 0 1 2 0 1 1
## [223] 1 0 1 0 1 0 1 0 0 1 1 0 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 0 1 1 1 1
## [260] 1 1 1 1 0 1 0 1 0 0 1 0 1 1 0 1 1 1 0 1 1 1 1 1 0 0 0 0 1 1 1 0 0 2 1 0 0
## [297] 0 1 1 0 0 1 0 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1 0 1 0 0 1 0 1 0 1 0
## [334] 1
summary(kidney$discrepancy.DR)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.0000  0.0000  1.0000  0.6976  1.0000  2.0000

2.4.2 Sam wykres

xyplot(MDRD12 ~ MDRD7 | discrepancy.DR, data = kidney)

W ten sposób uzyskaliśmy wykres składający się z 3 paneli (zmienna warunkująca discrepancy.DR ma 3 wartości 0, 1 oraz 2. Jest to liczba niezgodności w antygenach DR). Na osi OY (wartości) znajdują się dane MRDR12, na osi OX (argumenty) dane MDRD7. Jest to podstawowy wykres kropkowy. Argument data=kidney wskazuje, z jakiego zbioru danych mają być pobrane dane MDRD12, MDRD7, discrepancy.DR ilustrowane na wykresie.

Nic nie stoi na przeszkodzie, by dane do wykresu były zmiennymi globalnymi:

x=seq(0,10,0.1)
y=sin(x)
xyplot(y~x) #dostaniemy "wykres" funkcji y=sin(x) w przedziale od 0 do 10

3 Dodatkowe argumenty - modyfikacja wykresu xyplot

Wybrane argumenty pozwalające na modyfikowanie wykresu:

3.1 Argument type

“p” oznacza wykres kropkowy, “smooth” - krzywa średniej ruchomej, “r” - krzywa trendu liniowego. Wartości argumentu type przekazywane są jako lista - ta literka c służąca do tworzenia listy lub wektora.

xyplot(MDRD12 ~ MDRD7 | discrepancy.DR, data = kidney, type=c("p","smooth","r"))

Wybrane wartości argumentu:

  • p, punkty

  • l, linia (ciekawy efekt, jeśli dodamy do powyższego wykresu, przy wykresie funkcji sin ma to większy sens). Związane jest to z tym, że dane nie koniecznie muszą być funkcją (w standardowym sensie)

  • b, o, linia i punkty

  • h, linie pionowe przypominające histogram

  • s, punkty łączone są krzywą schodkową

  • spline, dopasowanie splinu 3-ciego stopnia do danych

  • g, pomocnicze linie siatki

  • a, średnie w grupach połączone linią (ćwiczenie: wyjaśnić, jak działa ten argument)

xyplot(MDRD12 ~ MDRD7 | discrepancy.DR, data = kidney, type=c("p","a"))

3.2 Legenda, argument key

Za pomocą argumentu auto.key=TRUE możemy stworzyć automatyczną legendę (uwaga, w przykładzie poniżej dodane zostały wartości dla MDRD36)

xyplot(MDRD12+ MDRD36 ~ MDRD7, data = kidney, type=c("p","spline"),auto.key=TRUE)

Zamiast wartości TRUE możemy podać listę właściwości do zmodyfikowania:

  • auto.key=list(columns=2) - legenda będzie wyświetlana w dwóch kolumnach

  • auto.key=list(space="right") pozycja legendy (możliwe: top, bottom, left, right)

  • auto.key=list(title="opis legendy")

xyplot(MDRD12+ MDRD36 ~ MDRD7, data = kidney, type=c("p","spline"),
       auto.key=list(columns=2,
                     space="bottom",
                     title = "opis legendy - dwie zmienne"))

3.3 Opisy osi, wykresu

Argumenty xlab="text", ylab="text2" pozwalają na zmianę nazw osi, zamiast standardowych pobieranych z formuły wykresu. Można też usunąć opis osi przez xlab=NULL .

Argument main="opis wykresu" pozwala na nadanie wykresowi nagłówka. Standardowo ma wartość NULL (brak nagłówka).

xyplot(MDRD12+ MDRD36 ~ MDRD7, data = kidney,
       type=c("p","spline"),
       xlab="oś iksów",
       ylab="oś igrek",
       main="Tytuł wykresu jest jak każdy widzi")

Uwaga: w przypadku dłuższych formuł przydatne jest rozbicie ich na kilka linijek, co zwiększa przejrzystość jak w kodzie powyżej.

Przydatny może być pakiet latex2exp umożliwiający używanie wyrażeń TeXa do tworzenia opisów osi/wykresów. Pakiet wymaga zainstalowania (jednorazowo) i załadowania biblioteki. Warto zwrócić uwagę na main w poniższym przykładzie - mieszanka tekstu i wyrażeni matematycznych ograniczonych standardowymi znakami $ TeXa:

library("latex2exp")
xyplot(MDRD12+ MDRD36 ~ MDRD7, data = kidney, type=c("p","spline"),
       xlab="oś iksów",
       ylab=TeX(r'($\alpha  x^\alpha, \ \ \frac{1}{x}$)'),
       main=TeX(r'(Using $\LaTeX$ for plotting in base graphics! $\alpha=\beta$)',
                bold=TRUE))

3.4 Argumenty xlim, ylim

Argumenty te pozwalają na kontrolowanie wartości na obu osiach, są zadawane jako dwuwymiarowe wektory oznaczające lewy i prawy koniec przedziału na osiach

xyplot(MDRD12+ MDRD36 ~ MDRD7, data = kidney, type=c("p","spline"),
       xlim=c(20,50), ylim=c(50,100),pch=25)

3.5 Argument pch, cex

Do zmiany symbolu znacznika na wykresie można wykorzystać argument pch, który może przyjmować wartości od 0 do 25 (liczbowe) lub pojedyncze znaki (ograniczone przez cudzysłów, np. “k”). Lista symboli dostępna jest w pomocy przez ? pch . Argument pch może przyjąć jako wartość wektor, określający znacznik dla każdego zestawu wartości oddzielnie.

Argument cex kontroluje rozmiar znacznika

xyplot(MDRD12+ MDRD36 ~ MDRD7,
       data = kidney,
       type=c("p","spline"),
       xlim=c(20,50),
       ylim=c(50,100),
       pch=25,
       cex=2)

4 Mechanizm warunkowania i mechanizm grupowania

4.1 Mechanizm warunkowania

Mechanizm warunkowania (poprzez symbol | w formule dla wykresu) pozwala na przedstawienie danych na osobnych panelach (tutaj w przykładzie na 3 panelach, gdzie zmienna warunkująca discrepancy.DR ma 3 różne wartości).

xyplot(MDRD36 ~ MDRD7|discrepancy.DR,
       data = kidney,
       type="p",
       cex=1,
       pch=4,
       auto.key = TRUE)

4.2 Mechanizm grupowania

Mechanizm grupowania - argument group - pozwala na przedstawienie tych samych danych na jednym wykresie, jak w przykładzie niżej (podział ponownie determinuje zmienna discrepancy.DR)

xyplot(MDRD36 ~ MDRD7,group=discrepancy.DR, data = kidney, type="p",
       cex=1,pch=4,auto.key = list(column=3))

5 Przegląd szablonów pakietu lattice

UWAGA:

Zaprezentowane w poniższych materiałach funkcje/opcje stanowią ułanek opcji/możliwości. Internet jest ogromnym zasobem wiedzy i odpowiedzi na pojawiające się pytania - choć czasem jest problem z odpowiednim sformułowaniem pytania (kolega tak mówi).

5.1 Wykres kropkowy, funkcja xyplot() .

Funkcja ta omówiona była dość szczegółowo we wcześniejszej części

5.2 Wykres kropkowy, funkcja splom()

Funkcja splom() służy do rysowania macierzy wykresów kropkowych:

splom(kidney[,c(9,11,13,15)],
      type=c("smooth","p"),
      pch='.')

Dołożymy dwa argumenty, pozwalające na sterowanie rozmiarem czcionki opisu zmiennych (dla potrzeb tego opisu czcionki zmniejszymy):

splom(kidney[,c(9,11,13,15)],
      type=c("smooth","p"),
      pch='.',
      varname.cex = .5,
      axis.text.cex=0.5)

Pierwszym argumentem funkcji splom() nie jest formuła, jak w xyplot(), a ramka danych zawierająca zmienne ilościowe. Argument type działa podobnie, jak w przypadku xyplot() - poprzednie zajęcia.

5.3 Wykres paskowy, funkcja stripplot()

Wykres paskowy pokazuje, jak zmienia się zmienna ilościowa dla różnych grup opisanych przez zmienną jakościową.

stripplot(factor(discrepancy.AB)~MDRD7,
          data=kidney,
          jitter.data=TRUE,
          alpha=0.5,
          col="red")

Uwaga:

str(kidney$discrepancy.AB) # discrepancy.AB jest zmienną ilościową (int)
##  int [1:334] 2 4 2 3 1 1 2 2 3 3 ...
str(factor(kidney$discrepancy.AB)) #zamienia zmienną 
##  Factor w/ 5 levels "0","1","2","3",..: 3 5 3 4 2 2 3 3 4 4 ...
#ilościową na zmienną jakościową (kategorii, factor)

Zadanie:

Jakie jest działanie argumentów jitter.data oraz alpha w powyższym przykładzie? Przetestować ich działanie zmieniając wartości argumentów

5.4 Wykres pudełkowy, funkcja bwplot

Wykres pudełkowy, inaczej wykres typu ramka-wąsy (b - box? w - whiskers?). Info: lewy koniec wąsa - minimum, początek pudełka - pierwszy kwartyl, kropka lub kreska pionowa w pudełku - mediana, koniec pudełka - trzeci kwartyl, prawy wąs - maksimum. Kropki poza głównym wykresem - obserwacje odstające (Zadanie: co to są obserwacje odstające?).

bwplot(therapy~MDRD12,
       data=kidney)

Argument varwidth=TRUE za pomocą szerokości pudełka obrazuje rozmiar porównywanych grup (różnica stosunkowo niewielka, ale jest):

bwplot(therapy~MDRD12,
       data=kidney,
       varwidth=FALSE)

bwplot(therapy~MDRD12,
       data=kidney,
       varwidth=TRUE)

Inny przykład: podzielenie discrepancy.AB na 3 przedziały

discrepancy<-equal.count(kidney$discrepancy.AB, number=3)
bwplot(therapy~MDRD12|discrepancy,
       data=kidney,
       varwidth=TRUE)

5.5 Wykres kropkowy i paskowy, funkcja dotplot()

Tablicę zliczeń (krzyżowych, kontyngencji) możemy wykorzystać funkcje table():

library("Przewodnik")
(wPlec=table(daneSoc$wyksztalcenie,daneSoc$plec)) #dodatkowy, zewnętrzny nawias
##             
##              kobieta mezczyzna
##   podstawowe      22        71
##   srednie         16        39
##   wyzsze          10        24
##   zawodowe         7        15
#powoduje natychmiastowe wyświetlenie danych

Do graficznej prezentacji takich danych można wykorzystać funkcję dotplot(), tutaj w podstawowej wersji:

dotplot(wPlec)

oraz nieco bardziej zaawansowanej:

dotplot(wPlec,
        groups=FALSE,
        type=c("p","h"))

dotplot(wPlec,
        type="o",
        auto.key=TRUE)

Zadanie/pytania:

  1. za co odpowiada argument groups?
  2. dla przypomnienia, co to jest type="o"?
  3. Do powyższego obrazka dodać tytuł wykresu, opisy osi, umieścić legendę po prawej stronie

5.6 Wykres kropkowy i paskowy, funkcja barchart()

attach(daneSoc) #wczytanie danych
tablica=as.data.frame(table(wyksztalcenie,plec,praca))
#potrzebujemy ramkę danych
tablica #wyświetlenie...
##    wyksztalcenie      plec             praca Freq
## 1     podstawowe   kobieta       nie pracuje    2
## 2        srednie   kobieta       nie pracuje    4
## 3         wyzsze   kobieta       nie pracuje    1
## 4       zawodowe   kobieta       nie pracuje    0
## 5     podstawowe mezczyzna       nie pracuje   20
## 6        srednie mezczyzna       nie pracuje   12
## 7         wyzsze mezczyzna       nie pracuje    5
## 8       zawodowe mezczyzna       nie pracuje    8
## 9     podstawowe   kobieta uczen lub pracuje   20
## 10       srednie   kobieta uczen lub pracuje   12
## 11        wyzsze   kobieta uczen lub pracuje    9
## 12      zawodowe   kobieta uczen lub pracuje    7
## 13    podstawowe mezczyzna uczen lub pracuje   51
## 14       srednie mezczyzna uczen lub pracuje   27
## 15        wyzsze mezczyzna uczen lub pracuje   19
## 16      zawodowe mezczyzna uczen lub pracuje    7
barchart(wyksztalcenie~Freq|plec,
         groups=praca,
         data=tablica,
         auto.key=TRUE)

Zadanie:

  1. dostosować wykres jak poprzednio (osie, tytuł itp.)

5.7 Wykres profili, funkcja parallelplot()

Funkcja parallelplot jest nowszą wersją funkcji parallel. Pozwala na przedstawienie profilu zmienności wielu cech jednocześnie

parallelplot(~kidney[,c(9:16)],
             groups=MDRD7<30,
             alpha=0.2,
             horizontal.axis=FALSE,
             scales=list(x=list(rot=90)),
             data=kidney)

Zadania:

  1. Jakie jest działanie “nowych” argumentów w powyższym poleceniu (horizontal.axis, scales)?
  2. Jaki jest efekt grupowania poprzez group=MDRD7?
  3. Wykres składa się z dużej ilości linii, ze względu na liczbę obserwacji w zbiorze danych kidney. Jak zaprezentować na wykresie wybrane wiersze (np. od 5 do 15)? Usunąć przy okazji mechanizm grupowania.

5.8 Histogram, funkcja histogram()

Podstawowy histogram oraz z warunkowaniem otrzymane za pomocą funkcji histogram():

histogram(~MDRD7, data=kidney)

histogram(~MDRD7|therapy, data=kidney)

Przydatna może być informacja o danych, w celu lepszego doboru przedziałów klasowych

 summary(kidney$MDRD7)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    5.00    9.00   18.50   24.36   37.00   99.00

Modyfikacja przedziałów, (ujemne wartości tylko ilustracyjnie) podział równomierny:

histogram(~MDRD7|therapy, data=kidney,
          breaks=seq(from=-10,to=100,by=5))

oraz podział nierównomierny:

histogram(~MDRD7|therapy, data=kidney,
          breaks=c(0,5,10,20,100))

Zmiana sposobu wyświetlania paneli poprzez argument layout:

histogram(~MDRD7|therapy, data=kidney,
          breaks=seq(from=0,to=100,by=5),
             layout=c(1,3))

Zadanie: sprawdzić efekt działania layout dla innych wartości.

5.9 Wykres gęstości, funkcja densityplot()

Wykres gęstości rozkładu w podstawowej postaci:

densityplot(~MDRD7,
            data=kidney)

oraz z warunkowaniem i dodatkowymi argumentami:

densityplot(~MDRD7|factor(diabetes),
            data=kidney,
            bw=8,
            plot.points="rug",
            auto.key=TRUE)

Inne modyfikacje

densityplot(~MDRD7,
            group=factor(diabetes),
            par.settings = list(superpose.line = list(col = c("blue","red"))),
            data=kidney,
            bw=8,
            from=0,to=80,
            plot.points=FALSE,
            auto.key=TRUE)

Zadanie:

  1. Narysować wykres gęstości warunkowany przez discrepancy.AB, tak aby panele były ułożone poziomo obok siebie oraz (druga wersja) pionowo jeden pod drugim
densityplot(~MDRD7|discrepancy.AB,
            data=kidney,
            plot.points="rug",
            auto.key=TRUE,
            layout=c(5,1))

densityplot(~MDRD7|discrepancy.AB,
            data=kidney,
            plot.points="rug",
            auto.key=TRUE,
            layout=c(1,5))

5.10 Wykres dystrybuanty empirycznej, funkcja ecdfplot z pakietu latticeExtra

Wywołanie funkcji:

library("latticeExtra")
ecdfplot(~MDRD7,
         auto.key=TRUE,
         data=kidney)

Zadanie

Narysować wykres dystrybuanty empirycznej wykorzystując warunkowanie i grupowanie

5.11 Wykresy kwantylowe, funkcje qqmath() i qq()

Funkcja qqmath służy do przedstawienia wykresu kwantylowego zgodności z rozkładem zadanym przez argument distribution.

Wygenerujemy próbkę 500 obserwacji z rozkładu normalnego i porównamy z rozkładem normalnym i wykładniczym

probka=rnorm(500)
qqmath(~probka,distribution=qnorm)

qqmath(~probka,distribution=qexp)

Podobnie, tym razem próbka z rozkładu wykładniczego

probka=rexp(500)
qqmath(~probka,distribution=qnorm)

qqmath(~probka,distribution=qexp)

Uwaga: literka ‘q’ przy rozkładach związana jest z kwantylami rozkładu. Inne rozkłady można znaleźć w pomocy.

Funkcja qq() służy do konstrukcji wykresu kwantylowego przedstawiającego zgodność rozkładu zmiennej w dwóch grupach. Po lewej stronie formuły musi być podana zmienna z dokładnie dwoma poziomami:

qq(diabetes~MDRD7, data=kidney)

Zadanie:

Jak interpretować uzyskane wykresy?

6 Zadania

6.1 Zadanie 1

  • Zaimportować plik danych dane_w2.xlsx

  • Na podstawie danych CH7Avg wskazań wiatrowskazu (kierunku wiatru) utworzyć nowy wektor (np. sektor), który przyjmie wartości znakowe N, E, S, W, w zależności od wartości Ch7Avg w następujący sposób:
    N, gdy Ch7Avg jest mniejsze niż 45 lub większe niż 315
    E, gdy Ch7Avg jest większe niż 45 i mniejsze niż 135
    S, gdy Ch7Avg jest większe niż 135 i mniejsze niż 225
    W, gdy Ch7Avg jest większe niż 225 i mniejsze niż 315
    (domknąć przedziały z jednej strony). Wskazówka: było takie zadanie, gdzie losowaliśmy wektor z rozkładu jednostajnego i na jego podstawie budowaliśmy wektor o wartościach 0 lub 1, w zależności czy wylosowano liczbę mniejszą czy większą od 0.5.

  • Utworzyć ramkę danych zawierająca jedynie dane: date, wskazania Ch4Avg, Ch5Avg, Ch6Avg, Ch7Avg, oraz utworzony sektor. Ramka powinna wyglądać mniej więcej tak (tutaj tylko 6 pierwszych wierszy):

    ##                  date anemo_80m anemo_60m anemo_40m kierunek_80m sector
    ## 1 2010-08-01 00:00:00       4.6       5.3       4.8           62      E
    ## 2 2010-08-01 00:10:00       4.7       4.8       4.8           69      E
    ## 3 2010-08-01 00:20:00       5.1       4.8       4.5           83      E
    ## 4 2010-08-01 00:30:00       5.5       4.4       3.1           93      E
    ## 5 2010-08-01 00:40:00       5.0       3.8       2.6           89      E
    ## 6 2010-08-01 00:50:00       4.2       3.3       2.3           92      E

6.2 Zadanie 2

Korzystając z powyższej ramki narysować wykresy (zadbać o tytuły wykresów, kolory, legendy itp szczegóły wykresów):

  • jeden wykres (liniowy) wskazań anemometrów CH4, CH5 i CH6 w zależności od date

  • wykres punktowy wskazań anemometrów CH4 w zależności od date i sektora (4 panele, warunkowanie)

  • wykres punktowy wskazań anemometrów CH4, CH5 i CH6 w zależności od date i sektora (4 panele, warunkowanie)

  • wykres punktowy wskazań anemometrów CH4, CH5, CH6 w zależności od date wykorzystując grupowanie (3 panele, 4 serie kolorów). Powinno wyjść:

  • narysować wykres ramka-wąsy (bwplot) dla wskazań anemometru CH4

  • narysować wykres ramka-wąsy (bwplot) dla wskazań anemometru CH4 z podziałem na sektory (4 ramki na jednym rysunku)

  • narysować wykres macierzowy między wskazaniami CH4, CH5 i CH6. Porównać z macierzą korelacji dla tych danych (polecenie cor)

  • narysować wykres kwantylowy (qqmath) zgodności CH4 z rozkładem normalnym

  • narysować wykres kwantylowy (qqmath) zgodności CH4 z rozkładem Weibulla o parametrach wyestymowanych przy okazji poprzedniego laboratorium. Dostęp do rozkładu Weibulla (parametr distribution w qqmath) o zadanych parametrach poprzez function(p) qweibull(p,shape=???,scale=???) gdzie p jest argumentem funkcji i nie zmieniamy, a w miejsce ??? wstawiamy swoje wartości.