R dla laików - podręcznik ekonometryka (C) R Foundation, from http://www.r-project.org Autor: Grzegorz Zajączkowski 3 Marca 2007 wersja 0.1 Propozycja podręcznika. Sugestie dotyczące poszerzenia będą mile widziane pod adresem grzegorz.z (at) student.sgh.waw.pl Zawartość: 1. Charakterystyka R 2. Instalacja i dodatki 3. Zarys składni w R 4. Modele szeregów czasowych 5. Bibliografia
1. Charakterystyka R R jest to zintegrowany zestaw narzędzi do manipulacji danymi, obliczeń oraz graficznej prezentacji danych. R jest programem tekstowym, nie ma możliwości "wyklikania" modelu, lecz trzeba napisać kod niezbędny do obliczeń. R posiada między innymi: - możliwość importowania danych wielu formatów w tym Excela - możliwość wykonywania skomplikowanych obliczeń na wektorach i macierzach - olbrzymią ilość narzędzi wbudowanych i dodatków do analiz ilościowych - możliwość tworzenia, wyświetlania i zapisywania na dysku wykresów, schematów oraz wszelkiego rodzaju rysunków - zestaw standardowych funkcji języka programowania takich jak pętle, warunki, procedury Należy zaznaczyć, że R jest aplikacją stosunkowo nową typu Open Source. Jest intensywnie rozwijany przez grupę zapaleńców. Zaletą tego jest niespotykana w innych tego typu programach wielość narzędzi, sporą wadą natomiast jest brak spójności niektórych narzędzi dodatkowych oraz ich niekompletne, testowe wersje. Macierzysta strona internetowa programu to http://www.r-project.org/. Poza możliwością ściągnięcia wersji instalacyjnej R na dysk, znajduje tam się również spora ilość dokumentacji oraz spis wszystkich dodatków umożliwiających rozszerzenie funkcjonalności R. 2. Instalacja i dodatki Aplikację R instaluje się poprzez standardowy instalator systemu Windows szybko i łatwo. Nieco umiejętności natomiast wymaga instalacja dodatków (ang. packages). Poniżej przedstawiona została instrukcja instalacji pakietu "tseries". Po uruchomieniu R wyświetla się standardowe okienko
Z menu programu wybieramy polecenie Install Packages Następnie wybieramy kolejno miejsce z którego będziemy ściągać dodatki (CRAN mirrors) 1, 1 Dla użytkowników w Polsce zaleca się ściąganie plików z niemieckich serwerów. Są one szybkie i zawierają w przeciwieństwie do polskich serwerów wszystkie dostępne dodatki (polskie serwery zawierały tylko najpopularniejsze w 2006 r.)
oraz dodatki, które chcemy zainstalować. Na prawym ekranie wybrano pakiet tseries. Można wybierać więcej niż jeden pakiet na raz poprzez trzymanie wciśniętego klawisza Ctrl. Po kliknięciu przycisku OK dodatek zostanie zainstalowany i w okienku tekstowym powinien pojawić się komunikat "package tseries succesfully unpacked and MD5 sums checked". Do korzystania z procedur zawartych w nowym pakiecie niezbędne jest załadowanie go do pamięci poleceniem library(nazwa_pakietu) przy każdym uruchomieniu R. Spis kilku rozszerzeń R (stan na 1.03.2007): Analiza szeregów czasowych ArDec - autoregressive decomposition of a time series based on the constructive approach in West (1997) dyn its - irregular time series mfilter - several time series filters useful for smoothing and extracting trend and cyclical components of a time series partsm - basic functions to fit and predict periodic autoregressive time series models. Sporo danych makroekonomicznych. tsdyn tseries - pakiet podstawowych funkcji, modele GARCH i ARMA tserieschaos - Routines for the analysis of nonlinear time series tsfa - Extraction of Factors from Multivariate Time Series urca - Unit root and cointegration tests encountered in applied econometric analysis. Sporo
danych makroekonomicznych. uroot - podstawowe testy pierwiastka jednostkowego Isstnieją pakiety wykorzystujące metody aktuarialne, łańcuchy Markova, ukryte łańcuchy Markova, Data Mining, statystykę Bayesowską, metodę Monte Carlo, wycenę opcji, algorytmy genetyczne, sieci neuronowe, optymalizację (np problemu komiwojażera) To tylko mała część. W dniu 1 marca 2007 zarejestrowanych było prawie 1000 (!!!!) rozszerzeń dla R umożliwiających wykonywanie ogromnej liczby analiz z różnych dziedzin Metod Ilościowych. Dokładny opis wszystkich pakietów znajduje się na stronie http://cran.r-project.org/src/contrib/packages.html Interfejs graficzny aplikacji R dysponuje m.in. dwoma użytecznymi poleceniami: Data Editor z menu Edit oraz Change dir z menu File. Pierwsze z nich wyświetla istniejące zmienne w tabeli, w której można je łatwo edytować. Drugie z nich ustawia domyślny katalog, skąd R może czytać pliki. Polecenia do wczytywania danych z dysku znajdują się w następnym rozdziale. 3. Zarys składni R Zdecydowanie najczęściej używaną komendą jest help(nazwa_funkcji) wywoływaną również przez wpisanie polecenia?nazwa_funkcji. Wywołuje ono okienko pomocy z definicją funkcji, opisem działania oraz ewentualnie z podanym przykładem działania. Przykład taki można uruchomić, niekoniecznie przepisując go linijka po linijce w R za pomocą komendy example(nazwa_funkcji). R oferuje prosty sposób wykonywania obliczeń algebraicznych za pomocą znanych operatorów: + dla skalarów, wektorów, macierzy - j.w. * dla skalarów; dla wektorów i macierzy mnożenie niealgebraiczne * / dla skalarów; dla wektorów i macierzy dzielenie niealgebraiczne * ( ) ^ - dla skalarów; dla wektorów i macierzy potęgowanie niealgebraiczne * %*% - mnożenie algebraiczne wektorów i macierzy solve() - odwracanie macierzy * - działania niealgebraiczne w R polegają na wykonywaniu działań na poszczególnych, odpowiadających sobie elementach wektorów lub macierzy. Przykładowo dla macierzy 1 3
a = 2 4 wynik działania a*a może być zaskakujący 1 9 a * a = 4 16 ale działanie a %*% a daje spodziewany rezultat 7 15 a %*% a = 10 22 Można więc przykładowo łatwo podnieść wszystkie elementy macierzy a do kwadratu przez operację a^2, lub pomnożyć je przez 3 przez operację a*3. Najczęściej wykorzystywane funkcje R Obliczenia na macierzach i wektorach length(zmienna) - długość wektora / liczność wektora dim(zmienna) - podaje wektor o wymiarach 2x1, w którym kolejno podaje liczbę wierszy oraz liczbę kolumn macierzy ncol(zmienna) - podaje liczbę kolumn macierzy, synonim do dim(zmienna)[2] nrow(zmienna) - podaje liczbę wierszy macierzy, synonim do dim(zmienna)[1] c(liczba1, liczba2,...) - tworzy wektor z podanych liczb c(1,2,3,4) jest równe wyrażeniu 1:4 c(1,2,3,7,8,9) jest równe wyrażeniu c(1:3,7:9) matrix(dane, liczba_wierszy, liczba_kolumn) - układając dane (np. wektor) według liczby wierszy i kolumn tworzy macierz cbind(wektor1,wektor2,...) - tworzy macierz z wektorów, traktując je jako kolumny rbind(wektor1,wektor2,...) - tworzy macierz z wektorów, traktując je jako wiersze names(macierz) - zwraca wektor nagłówków kolumn macierzy t(zmienna) - transpozycja macierzy lub wektora Mamy daną macierz M o wymiatach 2x3 z dwoma przykładowymi nagłówkami "cena" i "ilosc". Elementy tej macierzy można odczytać w następny sposób: - M[1,2] - zwraca element macierzy w pierwszym wierszu i drugiej kolumnie - M[,1] lub M[1:2,1] - zwraca całą pierwszą kolumnę macierzy - M[2,] lub M[2,1:3] - zwraca cały drugi wierszy macierzy - M[,2:3] - zwraca wszystkie wiersze macierzy i kolumny 2 i 3 - M[,c(1,3)] - zwraca wszystkie wiersze macierzy i kolumny 1 i 3
Kontrola wykonania programu (wyrażenie... może być jedną funkcją lub kilkoma funkcjami w kilku linijkach) if (wyrazenie) {... } - funkcje zawarte między nawiasami są wykonywane, jeśli wyrazenue jest prawdą if (wyrazenie) {... } else {... } - jeśli wyrażenie jest prawdą, wykonywany jest pierwszy zestaw funkcji, jeżeli jest fałszem, wykonywany jest drugi zestaw funkcji for (zmienna in k:m) {... } - zapętlony zestaw procedur, który jest wykonywany dla każdej z wartości od k do m. W pierwszej iteracji zmienna przyjmuje wartość k, później k+1, później... na końcu przyjmuje wartość m while (wyrazenie) {... } - pętla która wykonuje się dopóki, dopóty wyrazenie jest wartością TRUE typeof(zmienna) - bada typ zmiennej (macierz/data frame, wektor, liczba, łańcuch znaków) Podstawowe funkcje matematyczne log(x) - zwraca logarytm naturalny z x log(x,podstawa) - zwraca logarytm z x o podstawie podstawa exp(x) - zwraca wartość e do potęgi x max(), mean(), min() pi round(x) - zaokrągla x sign(x) - znak x Rozkłady beta() binom() - dwumianowy cauchy() chisq() - chi kwadrat exp() - wykładniczy f() gamma() geom() hyper() - hipergeometryczny lnorm() - log norm logis() - logistyczny nbinom() - negative binomial norm() - normalny pois() - Poissona t() unif() - jednostajny
weibull() wilcox() - Wilcoxon Operatory logiczne (dla wektorów x i y poniższe funkcje zwracają wektor, gdzie odpowiednie elementy x i y są pojedynczo porównywane ze sobą) x & y - and - or (dla wektorów x i y zwraca wektor)!x - zaprzeczenie x xor(x,y) - XOR, logiczne or == - równa się!= - nie równa się Operacje na plikach read.table() read.csv() - użyteczna funkcja czytająca np pliki z notowaniami giełdowymi read.csv2() read.delim() read.delim2() scan() - zaawansowane wczytywanie read.fwf() - pliki o stałej długości pól read.xls() w pakiecie xlsreadwrite - czyta pliki.xls write.table() write.csv() write.csv2() write.xls() w pakiecie xlsreadwrite - zapisuje pliki.xls odbcconnectexcel() w pakiecie RODBC - do czytania plików z rozszerzeniem.xls Uwaga - komunikacja pomiędzy R i Excelem najlepiej odbywa się za pomocą plików.csv. Jest to prosty i popularny format do zapisu wszelkich tabel i macierzy. Używanie funkcji odbcconnectexcel() lub read.xls() może okazać się trudniejsze. Możliwa jest komunikacja R z następującymi aplikacjami: EpiInfo, Minitab, S-PLUS, SAS, SPSS, Stata, Systat Octave relacyjne bazy danych np.: Informix; Oracle; Sybase; IBM's DB/2; Microsoft SQL Server on Windows Więcej informacji na stronie http://cran.r-project.org/doc/manuals/r-data.html
4. Modele szeregów czasowych Podstawowe funkcje i modele ekonometryczne summary() - funkcja wyświetlająca m.in. oszacowania parametrów oraz podstawowe statystyki dla modelu coef() - funkcja zwracająca wektor oszacowań parametrów (tylko niektóre modele) fitted() - funkcja zwracająca wektor estymowanych wartości zmiennej objaśnianej (tylko niektóre modele) residuals() - zwraca wektor reszt (tylko niektóre modele) predict() - pozwala tworzyć prognozy (tylko niektóre modele) lm() - model regresji liniowej glm() - uogólniony model regresji liniowej nls() - nieliniowa (ważona) MKN garch() w pakiecie tseries - General Autoregressive Conditional Heteroskedasticity arma() w pakiecie tseries - Autoregressive Moving Average alphaols() w pakiecie urca - oszacowania macierzy alfa w modelu VECM cajools() w pakiecie urca - j.w. ca.jo() w pakiecie urca - Johansen Procedure for VAR aar() w pakiecie tsdyn - Additive nonlinear autoregressive model setar() w pakiecie tsdyn - Self Exciting Threshold AutoRegressive model (STAR) lstar() w pakiecie tsdyn- Logistic Smooth Transition Autoregressive model (Logistic STAR) tarch() w pakiecie tsdyn - Treshold-ARCH model nnetts() w pakiecie tsdyn - Neural Network nonlinear autoregressive model fit.ar.par() w pakiecie partsm - Autoregressive or Periodic Autoregressive Model fit.piar() w pakiecie partsm - Periodically Integrated Autoregressive Model Niektóre testy szeregów czasowych Pakiet "uroot" Augmented Dickey Fuller Canova-Hansen Hylleberg-Engle-Granger-Yoo Kwiatkowski-Phillips-Schmidt-Shin Pakiet "urca" Likelihood ratio test for restrictions on alpha and beta w modelu VAR
Likelihood ratio test for restrictions on alpha w modelu VECM Phillips & Ouliaris Cointegration Test Testing Cointegrating Rank with Level Shift at Unknown time (Luetkepohl) Likelihood ratio test for no linear trend in VAR Augmented-Dickey-Fuller Unit Root Test Elliott, Rothenberg & Stock Unit Root Test Kwiatkowski et al. Unit Root Test Phillips & Perron Unit Root Test Schmidt & Phillips Unit Root Test Zivot & Andrews Unit Root Test Pakiet "tsdyn" delta test of conditional indipendence delta test of linearity Casdagli test of nonlinearity Pakiet "partsm" Test for the Significance of the p+1 Autoregressive Parameters in an AR(p) or PAR(p) Model Test for Periodic Variation in the Autoregressive Parameters Test for a Parameter Restriction in a PAR Model Test for Seasonal Heteroskedasticity Likelihood Ratio Test for a Single Unit Root in a PAR(p) Model 5. Bibliografia http://www.r-project.org/. http://cran.r-project.org/ - repozytorium plików, pakietów, podręczników http://cran.r-project.org/src/contrib/packages.html - opis pakietów http://cran.r-project.org/manuals.html - podręczniki Richard A. Becker, John M. Chambers and Allan R. Wilks (1988), The New S Language. Chapman & Hall, New York. John M. Chambers and Trevor J. Hastie eds. (1992), Statistical Models in S. Chapman & Hall, New York. John M. Chambers (1998) Programming with Data. Springer, New York.