Instrukcja obsługi programu Gauss To jest pierwsza wersja (autor: Dobromił Serwa)



Podobne dokumenty
MATLAB Podstawowe polecenia

SKRYPTY. Zadanie: Wyznaczyć wartość wyrażenia arytmetycznego

Ćwiczenie 1. Wprowadzenie do programu Octave

1 Podstawy c++ w pigułce.

1 Podstawy c++ w pigułce.

GNU Octave (w skrócie Octave) to rozbudowany program do analizy numerycznej.

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

Matlab Składnia + podstawy programowania

Ćwiczenie 1. Wprowadzenie do programu Octave

Metody numeryczne Laboratorium 2

Podstawowe operacje na macierzach

Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach?

Przetwarzanie sygnałów

Obliczenia w programie MATLAB

WYDZIAŁ ELEKTROTECHNIKI, AUTOMATYKI I INFORMATYKI INSTYTUT AUTOMATYKI I INFORMATYKI KIERUNEK AUTOMATYKA I ROBOTYKA STUDIA STACJONARNE I STOPNIA

MATLAB - laboratorium nr 1 wektory i macierze

LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab

Matlab, zajęcia 3. Jeszcze jeden przykład metoda eliminacji Gaussa dla macierzy 3 na 3

Programowanie w języku Python. Grażyna Koba

Diary przydatne polecenie. Korzystanie z funkcji wbudowanych i systemu pomocy on-line. Najczęstsze typy plików. diary nazwa_pliku

Mathcad c.d. - Macierze, wykresy 3D, rozwiązywanie równań, pochodne i całki, animacje

Skrypty powłoki Skrypty Najcz ciej u ywane polecenia w skryptach:

1 Programowanie w matlabie - skrypty i funkcje

Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie.

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

PRZETWARZANIE I ORGANIZOWANIE DANYCH: ARKUSZ KALKULACYJNY

Przykład 1 -->s="hello World!" s = Hello World! -->disp(s) Hello World!

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.

Trochę o plikach wsadowych (Windows)

Wprowadzenie do Scilab: macierze

Matlab Składnia + podstawy programowania

ARKUSZ KALKULACYJNY komórka

Podstawy języka C++ Maciej Trzebiński. Praktyki studenckie na LHC IFJ PAN. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. M. Trzebiński C++ 1/16

Podstawy programowania skrót z wykładów:

Metody optymalizacji - wprowadzenie do SciLab a

MATLAB tworzenie własnych funkcji

Elementy metod numerycznych - zajęcia 9

METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH

3. Instrukcje warunkowe

Podstawy Programowania Podstawowa składnia języka C++

Makropolecenia w Excelu

Wstęp do Informatyki i Programowania Laboratorium: Lista 1 Środowisko programowania

Arkusz kalkulacyjny EXCEL

Wprowadzenie do programu Mathcad 15 cz. 1

Wprowadzenie do środowiska

Programowanie komputerowe. Zajęcia 1

7. Pętle for. Przykłady

Programy wykorzystywane do obliczeń

Administracja sieciowymi systemami operacyjnymi III Klasa - Linux

Laboratorium Algorytmy Obliczeniowe. Lab. 9 Prezentacja wyników w Matlabie

Niezwykłe tablice Poznane typy danych pozwalają przechowywać pojedyncze liczby. Dzięki tablicom zgromadzimy wiele wartości w jednym miejscu.

Baltie 3. Podręcznik do nauki programowania dla klas I III gimnazjum. Tadeusz Sołtys, Bohumír Soukup

Przedrostkowa i przyrostkowa inkrementacja i dekrementacja

1 Przygotował: mgr inż. Maciej Lasota

Wprowadzania liczb. Aby uniknąć wprowadzania ułamka jako daty, należy poprzedzać ułamki cyfrą 0 (zero); np.: wpisać 0 1/2

Podstawy Programowania C++

PROGRAMOWANIE W PYTHONIE OD PIERWSZYCH KROKÓW

Metody i analiza danych

Instrukcja korzystania z portalu Diagnoza Nowej Ery

Wykorzystanie programów komputerowych do obliczeń matematycznych

EXCEL Prowadzący: dr hab. inż. Marek Jaszczur Poziom: początkujący

Jak napisać program obliczający pola powierzchni różnych figur płaskich?

Obliczenia inżynierskie arkusz kalkulacyjny. Technologie informacyjne

Program szkoleniowy. 24 h dydaktycznych (18 h zegarowych) NAZWA SZCZEGÓŁY CZAS

WyŜsza Szkoła Zarządzania Ochroną Pracy MS EXCEL CZ.2

Informatyka II. Laboratorium Aplikacja okienkowa

Metody Numeryczne. Laboratorium 1. Wstęp do programu Matlab

Technologie informacyjne: Arkusz kalkulacyjny

Diagnoza Szkolna Pearsona. Instrukcja obsługi

Warunki logiczne instrukcja if

Laboratorium Wstawianie skryptu na stroną: 2. Komentarze: 3. Deklaracja zmiennych

Programowanie - wykład 4

Ćwiczenie 1. Matlab podstawy (1) Matlab firmy MathWorks to uniwersalny pakiet do obliczeń naukowych i inżynierskich, analiz układów statycznych

Technologie Informacyjne - Linux 3

Podstawy programowania Laboratorium. Ćwiczenie 2 Programowanie strukturalne podstawowe rodzaje instrukcji

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

Podstawy MATLABA, cd.

Pracownia Informatyczna Instytut Technologii Mechanicznej Wydział Inżynierii Mechanicznej i Mechatroniki. Podstawy Informatyki i algorytmizacji

MentorGraphics ModelSim

Podstawy programowania w języku Visual Basic dla Aplikacji (VBA)

Python wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA

Wprowadzenie do Scilab: macierze

Przewodnik dla każdego po: Dla każdego coś miłego Microsoft Excel 2010

Spis treści. I. Skuteczne. Od autora... Obliczenia inżynierskie i naukowe... Ostrzeżenia...XVII

Podstawowe operacje na macierzach, operacje we/wy

Podstawy Automatyki ćwiczenia Cz.1. Środowisko Matlab

Projektowanie aplikacji internetowych Pisanie skryptów wiersza poleceń - pętle

Szukanie rozwiązań funkcji uwikłanych (równań nieliniowych)

Pętle i tablice. Spotkanie 3. Pętle: for, while, do while. Tablice. Przykłady

Ćwiczenie 3. MatLab: Algebra liniowa. Rozwiązywanie układów liniowych

Akademia Górniczo-Hutnicza Wydział Elektrotechniki, Automatyki, Informatyki i Elektroniki

Algebra macierzy

Excel 2007 PL. Pierwsza pomoc

Autor: dr inż. Katarzyna Rudnik

Umieszczanie kodu. kod skryptu

Wykresy i interfejsy użytkownika

Informatyka Arkusz kalkulacyjny Excel 2010 dla WINDOWS cz. 2

Temat: Organizacja skoroszytów i arkuszy


Transkrypt:

Instrukcja obsługi programu Gauss To jest pierwsza wersja (autor: Dobromił Serwa) Wstęp Program Gauss stanowi środowisko do obliczeń matematycznych, statystycznych i ekonometrycznych. Polecenia i sposób funkcjonowania programu jest podobny jak w programach Matlab, Octave, czy Scilab. Program Gauss jest szczególnie popularny wśród ekonometryków, ponieważ umożliwia budowanie złożonych modeli ekonometrycznych, testów statystycznych i symulacji. Ponadto wiele skomplikowanych procedur zostało już zaprogramowanych w Gaussie i udostępnionych w sieci internetowej. Wersja akademicka i biznesowa programu jest płatna. Można jednak z serwisu FTP firmy Aptech pobrać wersję light, której podstawowym ograniczeniem jest brak możliwości wykorzystania do obliczeń macierzy danych o dużych rozmiarach. Sposób pobierania programu z serwisu FTP jest następujący. W menu Start należy wybrać opcję Uruchom, a następnie wpisać w okienku edycji: ftp ftp.aptech.com Kiedy ukaże się kolejne okienko edycji i serwer FTP poprosi o podanie danych użytkownika, należy wpisać wyrażenie anonymous i nacisnąć enter, a potem wpisać swój adres poczty internetowej i nacisnąć enter. Login: anonymous Password: mój_adres@moja_domena.pl Użytkownik zostanie zalogowany do serwera FTP, a w kolejnej linijce ukaże się napis ftp> i migający kursor. Wtedy należy po kolei wpisać sekwencję poleceń służących do pobrania plików GAUSS_Light_9.0_Win.zip i GAUSS_7.0_Manual.zip na własny komputer. ftp> binary ftp> get /outgoing/gauss_light_9.0_win.zip ftp> get /outgoing/gauss_7.0_manual.zip ftp> bye Ostatnie polecenie służy do zakończenia połączenia z serwerem FTP. Kiedy pliki zostaną skopiowane na dysk lokalny, można je rozpakować w dowolnym tymczasowym katalogu i zainstalować program Gauss na komputerze. 1

Podstawowe polecenia W Gaussie możliwe jest wykonywanie prostych obliczeń matematycznych. Działania (np. 1+1) należy wpisać w okienku poleceń na końcu naciskając klawisz enter. Program Gauss sam dopisze średnik na końcu polecenia i wydrukuje wynik obliczenia.» 1+10^2; 101.00000» log(12)+sqrt(25); 6.0791812 Jeżeli chcemy sprawdzić, jakie funkcje matematyczne są dostępne dla użytkownika, to możemy nacisnąć klawisz F1 lub wybrać w menu pozycję Help i opcję User s Guide. Potem można skorzystać ze spisu treści lub wyszukać polecenie samemu. Przydatna jest możliwość definiowania zmiennych i wykonywania działań przy ich pomocy. Nazwy zmiennych (a także funkcji i macierzy) nie mogą mieć więcej niż 32 znaki. W najprostszy sposób zmienne definiuje się poprzez przypisanie im wartości.» a=1;» b=2;» a+b*a^(1/b); 3.0000000 Możliwe jest też przeprowadzanie działań na macierzach. Zdefiniowanie macierzy danych wymaga użycia nawiasów klamrowych (wyrażenie let nie jest konieczne) lub zdefiniowania rozmiarów macierzy w nawiasach kwadratowych (np. x[2,3]). Spacje oddzielają wartości w wierszu, a przecinki oddzielają kolejne kolumny.» let aa = {1 2 3, 4 5 6};» aa; 1.0000000 2.0000000 3.0000000 4.0000000 5.0000000 6.0000000» cc = {1 2 3, 1 2 3};» let x[2,3] = 6 5 4 3 2 1;» x; 6.0000000 5.0000000 4.0000000 3.0000000 2.0000000 1.0000000 Takie przypisywanie wartości elementom macierzy jest często kłopotliwe i czasochłonne. Dlatego istnieje szereg funkcji, które ułatwiają przypisywanie wartości macierzom.» jedynki = ones(2,4); //macierz 2x4 z samych jedynek;» zera = zeros(1,2); //macierz 1x2 z samych zer;» sekwencja = seqa(1,1,5); //wektor pionowy 5x1 przyjmujący; //wartości ciągu arytmetycznego od 1 do 5;» sekwencja2 = seqm(2,6,4); //wektor pionowy 4x1 przyjmujący; //wartości ciągu geometrycznego: 2,12,,432;» qq = eye(4); //macierz jednostkowa o wymiarach 4x4;» losowe = rndu(2,4); //macierz 2x4 liczb pseudo-losowych z rozkładu //jednostajnego U(0,1);» losowe_n = rndn(5,2); //macierz 5x2 liczb pseudo-losowych z rozkładu //normalnego N(0,1); 2

Parametry funkcji ones, zeros, eye, rndu, rndn zapisane w okrągłych nawiasach oznaczają odpowiednie rozmiary macierzy. Symbolem // oddzielone są komentarze do działań. Komentarza program nie traktuje jak polecenia i nie próbuje go wykonywać. Innym sposobem komentowania jest wprowadzenie wyrażenia /* na początku komentowanego tekstu, oraz */ na jego końcu. Taki sposób komentowania jest szczególnie przydatny przy pisaniu dłuższych programów, składających się z wielu linijek poleceń. Sposób zapisywania działań na macierzach jest intuicyjny, a samo wykonywanie działań jest bardzo szybkie. Dostępne są operatory sumowania (+), odejmowania (-), mnożenia (*), dzielenia przez skalar (/), łączenia poziomego (~) i pionowego ( ) macierzy, potęgowania (^), mnożenia i dzielenia macierzy element po elemencie (odpowiednio.* i./ ), iloczynu Kroneckera (.*.), transponowania ( ), silni (!) i inne.» aa+cc; 2.0000000 4.0000000 6.0000000 5.0000000 7.0000000 9.0000000» (aa cc)'; 1.0000000 4.0000000 1.0000000 1.0000000 2.0000000 5.0000000 2.0000000 2.0000000 3.0000000 6.0000000 3.0000000 3.0000000» aa./cc; 1.0000000 1.0000000 1.0000000 4.0000000 2.5000000 2.0000000» aa^cc; //do potęgowania elementu przez element nie trzeba.^; 1.0000000 4.0000000 27.000000 4.0000000 25.000000 216.00000 Odwołania do poszczególnych elementów macierzy dokonuje się wykorzystując nawiasy kwadratowe. W komentarzach przedstawiono znaczenie poszczególnych poleceń.» aa[2,2] //element z 2. wiersza i 2. kolumny; 5.0000000» aa[.,2 3] //elementy ze wszystkich wierszy i kolumn 2 i 3; 2.0000000 3.0000000 5.0000000 6.0000000» aa[1,1:3] //elementy z 1. wiersza i kolumn od 1 do 3; 1.0000000 2.0000000 3.0000000 Często potrzebna jest też wiedza na temat liczby wierszy i kolumn macierzy.» rows(x); //liczba wierszy macierzy x; 2.0000000» cols(x); //liczba kolumn macierzy x; 3.0000000 Inne ważne funkcje często użyteczne przy budowaniu procedur i symulacji ekonometrycznych przedstawiono poniżej.» diag(eye(2)); //wektor elementów diagonalnych macierzy eye(2); 1.0000000 1.0000000» let v[2,2]= 1 2 3 4;» vec(v)'; //wektor z kolumn macierzy ustawionych na sobie; 3

1.0000000 3.0000000 2.0000000 4.0000000» vecr(v)'; //wektor z wierszy macierzy ustawionych na sobie (szybsza); 1.0000000 2.0000000 3.0000000 4.0000000» inv(v); //odwrotność macierzy v (funkcja invpd jest szybsza); -2.0000000 1.0000000 1.5000000-0.50000000» det(v); //wyznacznik z macierzy v; -2.0000000» vcx(rndn(100,2)); //macierz kowariancji dla kolumn z macierzy; 0.99523575 0.092381493 0.092381493 0.88722700» meanc(rndn(100,2))'; //transponowany wektor średnich z kolumn; 0.017035952-0.13616947» sumc(aa)'; //transponowana suma z elementów z kolumn macierzy; 5.0000000 7.0000000 9.0000000» minc(cc)'; //transponowane minimum z każdej kolumny cc; 1.0000000 2.0000000 3.0000000» maxc(aa)'; //transponowane maksimum z każdej kolumny aa; 4.0000000 5.0000000 6.0000000» stdc(rndn(100,3))'; //odchylenia standardowe z każdej kolumny macierzy; 0.99352984 1.0699232 1.0189074 Programy i procedury Praca w programie Gauss najczęściej polega na pisaniu i wykonywaniu wielu poleceń. Można zautomatyzować ten proces poprzez napisanie w dowolnym edytorze tekstu kolejnych linijek poleceń i potraktowanie ich łącznie jak jednego programu. Gauss najpierw skompiluje a później wykona taki program linijka po linijce. Pliki z programami napisanymi w języku Gaussa nie mają predefiniowanych rozszerzeń. Najczęściej stosuje się rozszerzenia *.g, *.gss, czy *.txt. Aplikacja Gauss zawiera własny wbudowany edytor tekstu, który ułatwia pisanie i uruchamianie programów dzięki wbudowanym funkcjom (np. rozpoznawanie funkcji, słów kluczowych itp.). Podobnie, możliwe jest definiowanie procedur, które zawierać mogą szereg poleceń. Następnie, każda procedura może być wywołana wielokrotnie, w dowolnym miejscu programu, za każdym razem przy użyciu pojedynczego polecenia. Dodatkowo, procedury (analogicznie do funkcji) mogą zwracać dowolną liczbę wartości w postaci macierzy, wektorów, skalarów itp. Procedura składa się z następujących poleceń: proc local retp endp. Poniższa procedura przyjmuje dwa argumenty i zwraca trzy wartości. proc (3) = moja_procedura(a, b); local x,y,z; x = rndn(1,1)*a; y = rndn(1,1)*b; z = 1; wykonuje procedurę ; retp(x,y,z); endp; moja_procedura(1, 1); call moja_procedura(2,2); //definiuje procedurę, argumenty: a, b //definiuje wszystkie potrzebne zmienne //procedura zwraca wartości x, y, z //koniec definicji procedury //wyświetli tekst i 3 wartości liczbowe //wyświetli tylko tekst 4

Polecenie call przed nazwą wywoływanej procedury zmusza komputer do jej wykonania bez zwracania żadnych wartości. Pętle i polecenia warunkowe Wielokrotne wykonywanie sekwencji poleceń możliwe jest dzięki zastosowaniu pętli. Wyrażenie for nazwa_zmiennej(start,stop,step) endfor pozwala wykonywać grupę poleceń aż do momentu, kiedy zmienna nazwa_zmiennej osiągnie wartość stop. Zmienna nazwa_zmiennej na początku przyjmuje wartość start i przy kolejnym wykonaniu pętli zmienia się o wartość step. a = 0; // definiuje zmienną a for i(1,3,1); // wykona pętlę 3 razy To jest pętla numer i; // wydrukuje napis i numer pętli a = a + i; // do aktualnej wartości a doda i endfor; // koniec pętli a; // po wykonaniu pętli wydrukuje wynik: 6 Warto zwrócić uwagę, że wystarczy zapisać tekst w cudzysłowie, żeby komputer potraktował go jako polecenie do wydrukowania. Wydruk wynikowy w programie Gauss wygląda następująco: To jest pętla numer 1.0000000 To jest pętla numer 2.0000000 To jest pętla numer 3.0000000 6.0000000» Podobnie zdefinowane są wyrażenia do while warunek endo, oraz do until warunek endo. Pierwsze wyrażenie wykonuje pętlę między do i endo, kiedy warunek jest prawdziwy, a drugie wyrażenie wykonuje pętlę, kiedy warunek jest fałszywy. a = 0; i = 1; do while i<4; To jest pętla numer i; a = a + i; i = i + 1; endo; a; a = 0; i = 1; do until i==4; To jest pętla numer i; a = a + i; i = i + 1; endo; a; Warto zwrócić uwagę na operator relacyjny ==, który oznacza równość zmiennych po obu stronach operatora. Warunek i==4 jest prawdziwy, kiedy i równe jest 4. Inne operatory relacyjne to <, >, <=, /= (dla tekstu wszystkie są poprzedzone znakiem $, a dla porównania poszczególnych elementów macierzy poprzedzone są znakiem.). Prawdziwe wyrażenie zwraca wartość 1, a fałszywe wyrażenie zwraca 0. Polecenia warunkowe wykonywane są przy pomocy wyrażenia if warunek elseif warunek_2 elseif warunek_n else endif. Jeśli warunek jest prawdziwy to wykonywana jest grupa poleceń po tym warunku. Jeśli warunek jest fałszywy to sprawdzany jest warunek_2 i gdy jest prawdziwy, to wykonywane są polecenia po tym 5

warunku. Jeśli warunek_2 jest fałszywy, to sprawdzany jest kolejny warunek, itd. Jeśli żaden warunek nie jest prawdziwy to wykonywane są polecenia po komendzie else. Wyrażenia elseif warunek i else nie są obowiązkowe. a = 1; if a==1; a = 1 ; //wydrukuje ten tekst a = a + 1; elseif a==2; //nie sprawdzi tego warunku a = 2 ; //nie wydrukuje tego tekstu else; a <> 1 i 2 ; //nie wydrukuje tego tekstu endif; a; //wykrukuje 2 W trakcie wykonywania powyższego programu komputer wydrukuje następujący wynik. a = 1 2.0000000 Grafika Tworzenie wykresów w Gaussie wymaga użycia w programie biblioteki pgraph. Przed stworzeniem pierwszego wykresu należy zadeklarować bibliotekę poleceniem library pgraph, a następnie ustawić domyślne wartości odpowiednich zmiennych globalnych zapisując polecenie graphset. library pgraph; //w tej linijce dodajemy też po przecinku inne biblioteki graphset; t = seqa(1,1,100); x = sin(t).*t; xy(t,x); //wykres liniowy Efektem wykonania takiego programu będzie następujący wykres. Inne polecenia do tworzenia wykresów to bar (wykres słupkowy), box (wykres pudełkowy), contour (wykres warstwic), hist (histogram), histp (histogram 6

procentowy ), histf (histogram częstościowy ), loglog (wykres z obiema osiami w skali logarytmicznej), logx i logy (odpowiednie osie w skali logarytmicznej), polar (wykres w biegunowym układzie współrzędnych), xyz (wykres 3D), surface (wykres powierzchniowy 3D). Inne ważne polecenia dotyczą tworzenia paneli wykresów (np. kilku wykresów w jednym okienku): begwind, endwind, window, makewind, setwind, nextwind, getwind. Istnieją także polecenia pozwalające stworzyć podpisy i legendy do wykresów, zmieniać kształt i rozmiar wykresów, itp. Szacowanie parametrów modeli metodą MNW Dla ekonometryków bardzo użyteczne są biblioteki maxlik i cml (nowsze wersje mając nieco zmienione nazwy). Nie są niestety dostępne w podstawowej wersji Gaussa, ale trzeba je dokupić oddzielnie. Pierwsza biblioteka służy do rozwiązywania problemów optymalizacyjnych związanych z maksymalizacją funkcji wiarygodności (lub np. minimalizacji sumy kwadratów reszt) w modelach ekonometrycznych. Jest zatem przydatna przy szacowaniu parametrów modeli nieliniowych, czy budowaniu bardziej złożonych testów statystycznych. Druga biblioteka służy do tego samego, ale dodatkowo umożliwia nakładanie warunków ograniczających na szukane wartości parametrów. Chcąc wykorzystać bibliotekę maxlik do oszacowania parametrów wybranego modelu należy na początku zadeklarować użycie tej biblioteki i zainicjować jej działanie (np. nadać odpowiednim zmiennym globalnym wartości startowe). W tym celu, przed uruchomieniem pierwszej procedury optymalizacyjnej (najczęściej jednak na początku programu w Gaussie), należy wpisać odpowiednie polecenia. library maxlik; //w tej linijce dodajemy też po przecinku inne biblioteki #include maxlik.ext; //dodaje definicje zmiennych globalnych maxset; //ustawia wartości startowe zmiennych globalnych W przypadku biblioteki cml polecenia są analogiczne. library cml; //w tej linijce dodajemy też po przecinku inne biblioteki #include cml.ext; //dodaje definicje zmiennych globalnych cmlset; //ustawia wartości startowe zmiennych globalnych Następnym krokiem jest zdefiniowanie maksymalizowanej funkcji (np. funkcji wiarygodności). Funkcja taka w Gaussie jest zdefiniowana jako procedura z dwoma argumentami. Poniższy przykład definiuje funkcję wiarygodności dla regresji liniowej. proc ml(a,z); //a = wektor parametrów, z = macierz danych local y,x,u,s2; //zmienne lokalne, używane tylko w procedurze ml y=z[.,1]; //w 1. kolumnie ukryto wartości zmiennej y x=z[.,2:(cols(z))]; //2. kolumna zawiera wartości x u=y-x*a[1:(rows(a)-1)]; //prawie wszystkie elementy wektora a //to parametry regresji s2=a[rows(a)]; //ostatni element wektora a to wariancja // składnika losowego 7

endp; retp(- 0.5*ln(2*pi*s2) -(u.*u)/(s2*2)); //koniec procedury //procedura zwraca wartość //funkcji wiarygodności Przed wywołaniem procedury maksymalizującej zadaną funkcję warto wybrać odpowiedni algorytm optymalizacyjny nadając odpowiednią wartość zmiennej globalnej _max_algorithm : 1 metoda najszybszego wzrostu, 2 metoda BFGS (Broyden, Fletcher, Goldfarb, Shanno), 3 metoda DFP (Davidon, Fletcher, Powell), 4 metoda Newtona- Raphsona, 5 metoda BHHH (Berndt, Hall, Hall, Hausman), 6 metoda PRCG (Polak- Ribiere Conjugate Gradient). Odpowiednik _max_algorithm w bibliotece cml to _cml_algorithm (odpowiednie numery algorytmów mogą się tutaj różnić). Następnym krokiem jest wybór wartości startowych dla poszukiwanych wartości parametrów argumentów optymalizowanej funkcji. Procedura służąca do przeprowadzenia optymalizacji to maxlik, natomiast prosty wydruk wyników możliwy jest przy użyciu procedury maxprt (por. program w pliku ml_ex1.txt). a0= { 1, 1, 1, 1, 8 }; //wartości startowe funkcji celu _max_algorithm = 1; //wybór algorytmu optymalizacji {b,f,g,cov,retcode} = maxlik(z,0,&ml,a0); //procedura maksymalizacji call maxprt(b,f,g,cov,retcode); //wydruk wyników Argumentami procedury maxlik są, odpowiednio, macierz danych z, wektor nazw zmiennych (tutaj przyjęto wartość 0), nazwa optymalizowanej funkcji (poprzedzona symbolem &, tutaj &ml), pionowy wektor wartości startowych parametrów (tutaj a0). Procedura maxlik zwraca, odpowiednio, optymalne wartości parametrów (b), maksymalną wartość funkcji celu (f), gradient funkcji celu w optimum (g), macierz kowariancji oszacowań parametrów (cov), kod zakończenia procedury (retcode). Ładowanie i zapisywanie zbiorów danych W Gaussie możliwe jest ładowanie i zapisywanie w macierzach danych ze zbiorów z plików różnych typów: tekstowego (w formacie ASCII), plików programu Microsoft Excel, własnych plików danych. Ładowanie danych z pliku tekstowego do macierzy polega na wykonaniu polecenia load. load x[] = data1.txt; //ładuje dane z pliku do wektora Nx1 x = reshape(x,100,5); //można później zmienić kształt macierzy load z[50,2] = data2.txt; //od razu wybieramy rozmiar macierzy Polecenia load i loadm mogą służyć do ładowania macierzy z plików z rozszerzeniem.fmt, w których przechowywane są macierze. load x = data1.fmt; loadm z = data2; //rozszerzenie.fmt jest domyślne load path = /aaa x,y; // czyta z plików x.fmt, y.fmt w katalogu aaa Czasami może być wymagane zamienienie separatora ścieżki dostępu / na \\ i zapisanie całej ścieżki dostępu w cudzysłowie. 8

Czytanie danych z archiwów (tzn. plików typu Gauss Data Archive, GDA) możliwe jest dzięki następującym poleceniom: y = gdaread("myfile.gda","x1"); //czyta macierz x1 z pliku archiwum y = gdareadbyindex("myfile.gda",1); //czyta zmienną o indeksie 1 Czytanie danych z plików programu Microsoft Excel również jest bardzo proste. ma1 = xlsreadm("dane.xls", "a1:b200",1,""); //czyta dane z arkusza nr 1 ma2 = SpreadsheetReadM("dane.xls", "a1:b200",1); Zapisywanie danych w pliku tekstowym wymaga wykonania następujących poleceń. 1 format /rd 8,2; //formatuje wygląd liczb (także na ekranie) outwidth 132; //ustawia maksymalną liczbę kolumn na 132 output file = myfile.asc reset; //otwiera i resetuje plik tekstowy z danymi screen off; //wyłącza wyświetlanie wyników na ekranie print x; // drukuje macierz w otworzonym pliku output off; //zamyka plik z danymi screen on; //włącza wyświetlanie wyników na ekranie Część poleceń jest nieobowiązkowa (np. screen off, screen on, format, outwidth). Zapisanie macierzy w specjalnym pliku do przechowywania danych z macierzy (plików z rozszerzeniem.fmt ) wymaga użycia polecenia save. save /data/mydata1 = x, y; //zapisze x w pliku mydata1.fmt, a y w y.fmt Czasami może być wymagane zamienienie separatora ścieżki dostępu / na \\ i zapisanie całej ścieżki dostępu w cudzysłowie. Tworzenie, zapisywanie i uaktualnianie archiwum danych GDA odbywa się przy użyciu następujących komend. ret = gdacreate("a.gda",1); //parameter 1 nadpisuje istniejący plik ret = gdasave("a.gda","x*",0,1,3); ret = gdawrite("a.gda",rndn(100,50),"x1"); //zapisuje dane jako x1 ret = gdaupdate("a.gda",rndn(1000,100),"x1"); //zmienia x1 w archiwum Polecenie w drugim wierszu zapisuje w archwium a.gda wszystkie zmienne, których nzawy zaczynają się na literę x. Stare zmienne są nadpisywane, a całość zmian jest raportowana. Sposób przeprowadzania zapisywania może być zmieniany poprzez zmianę wartości parametrów 0,1,3. Zapisywanie danych w pliku.xls wymaga wyboru numeru arkusza i pola startowego: ret = xlswritem( x,"dane.xls","a1",1,""); //zwraca 0 kiedy sukces Lista instrukcji pozwalających czytać i zapisywać dane w plikach jest dużo większa. W Gaussie możliwe jest na przykład czytanie i zapisywanie w zbiorach danych tekstów, procedur, funkcji, słów kluczowych. Informacje szczegółowe znaleźć można w zakładce pomocy Gaussa. 1 Poniższe polecenia zaczerpnięto z Gauss 10 Manual dział 21. File I/O 9