Pakiet R w analizie układów złożonych
ZADANIA
ZADANIE 0
- Zbudować trójkolumnową ramkę, w której kolejnych kolumnach o nazwach calkowite, litery i logiczne znajdują się:
- liczby od 1 do 10,
- kolejne małe litery alfabetu łacińskiego, korzystając z wbudowanego w R wektora letters),
- logiczne określenie, czy kolejna liczba od 1 do 10 liczba jest parzysta (TRUE) czy nie (FALSE) - należy skorzystać z wbudowanej w R funkcji %%, dającej resztę z dzielenia.
- Następnie należy wypisać pierwszy oraz trzeci rząd ramki, a także drugą kolumnę, używając zarówno indkesu liczbowego jak i nazwy.
- Zbudować listę, posiadającą trzy pola o nazwach x, y i z, gdzie x to liczby całkowite od 10 do 1, y to litery "a", "z" i "g", a z to dwie wartości TRUE i FALSE
- Wysłać kod realizujący powyższe zadanie na adres julian.sienkiewicz@pw.edu.pl, wpisując w temacie "Nazwisko, CSAR, Lab 0".
ZADANIE 1
Stworzyć własną funkcję o nazwie cross.prod(u,v), która zwraca iloczyn wektorowy wektorów \(\mathbf{v}=(v_x,v_y,v_z)\) i \(\mathbf{u}=(u_x,u_y,u_z)\). Skorzystać ze znanego wzoru
\( \mathbf{v} \times \mathbf{u} = \left| \begin{array}{cc}v_y & v_z\\ u_y & u_z\end{array} \right|\mathbf{e_x} - \left| \begin{array}{cc}v_x & v_z\\ u_x & u_z\end{array} \right| \mathbf{e_y} + \left| \begin{array}{cc}v_x & v_y\\ u_x & u_y\end{array} \right| \mathbf{e_z}\).
Do stworzenia funkcji można wykorzystać konstruktory matrix() oraz funkcje c(), t(), det(). Sprawdzić działanie funkcji na znanych przykładach, np. \(\mathbf{v}=(1,0,0)\) i \(\mathbf{u}=(0,1,0)\).
ZADANIE 2
Należy:
- wygenerować 100 liczb z rozkładu normalnego N(1, 2.5),
- na jednym wykresie porównać gęstość prawdopodobieństwa tak wygenerowanych punktów z gęstością teoretyczną,
- zapisać wyniki w pliku "zad2.png".
ZADANIE 3
Należy:
- wczytać dane z pliku zad.txt
- wykonać histogram i korzystając z niego zaproponować postać dopasowania,
- wykonać dopasowanie za pomocą regresji i przedstawić je na wykresie (dane + dopasowanie),
- wykonać test KS i ocenić jego wynik.
ZADANIE 4
Należy dokonać wizualizacji tabliczki mnożenia 1..20 na 1..20 za pomocą pakietu ggplot2:
- użyć kwadratów jako symboli (shape=15),
- wartość mnożenia zakodować kolorem (w celu oznaczenia wartości najniżej np. kolorem czerwonym a najwyższej - zielonym można użyć modyfikatora +scale_colour_continuous(low="red", high="green"),
Wykonać również histogram wartości mnożenia. Oba rysunki wyeksportować do formatu PNG lub JPG.
Spoiler: kluczową sprawą jest przygotowanie ramki danych, w której będą trzy kolumny - jeden i drugi czynnik oraz iloczyn. Można skorzystać z funkcji rep(), biorąc pod uwagę, że np. rep(1:3, each = 2) daje wektor [1, 1, 2, 2, 3, 3], a rep(1:3, times = 2) to [1, 2, 3, 1, 2, 3].
ZADANIE 5
Uradowany swoimi imieninami, Święty Mikołaj spożył do spólki z Rudolfem zbyt dużo ajerkoniaku, w wyniku czego jego chód stał się losowy (random walk). Zakładając, że krok w prawo to "1" a w lewo to "-1" oraz, że Mikołaj startuje z pozycji x=0 i wykonuje M=500 kroków wykreśl:
- pozycję Mikołaja w czasie x(t),
- entropię S(t) rozkładu kroków w chwili t (tzn. jest to entropia rozkładu wszystkich kroków od t'=0,..,t).
Porównaj entropię z wartością teoretyczną.
Wykonaj takie same rysunki i rozważania widząc, że Rudolf, rozdrażniony opilstwem Św. Mikołaja, kopnął go z całej siły w prawą nogę i w efekcie Mikołaj stąpa na nią teraz 5 razy rzadziej niż na lewą.
ZADANIE 6
Należy stworzyć sieć współwystępowania słów w tekście The Murders in the Rue Morgue (http://www.if.pw.edu.pl/~julas/CSAR/rue1.txt): połączenie pomiędzy dwoma słowami istnieje wtedy, gdy sąsiadują one ze sobą w tekście.
Wskazówka 1: do wczytania i oczyszczenia pliku wykorzystać początkowe instrukcje z Lab. 8, przykład 8.11
Wskazówka 2: macierz połączeń można dość prosto stworzyć przesuwając o 1 wektor słów, a następnie użyć polecenia table do otrzymania macierzy kontyngencji (tzn. współwystępowania, przykład 3.13). Następnie korzystając z polecenia graph_from_adjacency_matrix() i podając macierz jako argument można stworzyć graf. Wykonać:
- rysunek sieci, biorąc pod uwagę węzły, które mają stopień co najmniej k=10,
- rysunek przedstawiający rozkład stopni wierzchołków,
- rysunek przedstawiający zależność c(k).
Należy również policzyć średnią najkrótszą drogę w sieci.
ZADANIE 7
Należy:
- wylosować 80 punktów z dwuwymiarowego rozkładu Gaussa z macierzą kowariancji S=[3 0; 0 3] (60 dla średniej m1=[2,2] i 20 dla średniej m2=[-1,-1])
- stworzyć ramkę danych, zwierającą trzy kolumny (x, y oraz klasa),
- dodać do ramki nową kolumnę z=x+y i wyrysować punkty na wykresie trójwymiarowym używając funkcji scatterplot3d() z biblioteki scatterplot3d,
- wykonać analizę składowych głównych,
- stworzyć ramkę danych zawierająca pierwsze dwie współrzędne z PCA (pola $scores[,1] oraz $scores[,2]),
- na takich zmiennych dokonać analizy LDA za pomocą funkcji lda()
Do programu należy załączyć rysunki powstałe w wyniku wykonania punktów (iii), (iv) i (vi).