ANALIZA DANYCH W STATA 8.0 ZAJĘCIA 2 1. Rozpoczęcie 1. Stworzyć w katalogu C:/temp katalog stata_2 2. Ściągnąć z internetu ze strony http://akson.sgh.waw.pl/~mproch dwa pliki: dane.dta oraz mp2.dta (kryją się pod tekstem Zajęcia 2 plik 1 / 2 oraz Zajęcia 2 plik 2 / 2 ) 3. Zapisać te pliki w katalogu C:/temp/stata_2 4. Otworzyć Statę 5. Zmienić katalog domyślny, rozpocząć logowanie i otworzyć bazę danych następującymi poleceniami: cd C:/temp/stata_2 log using stata2a.log cmdlog using stata2b.log use dane 2. Sortowanie zmiennych i grupowanie Na dole jest informacja czy zbiór jest posortowany czy też nie state - pop sort region state state - pop Omówić konstrukcję by: help by Żeby użyć instrukcji by, baza danych musi być posortowana: sort pop by region: list state - pop (tak nie dało rady, bo baza nie była posortowana względem zmiennej region) sort region by region: list state - pop In nie może być połączone z by by region: list in 1/2 If może być połączone z by by region: list state pop if pop>5000000 By i sort w jednym to polecenie bysort: bysort pop: list state - pop Z2: 1 z 9
Można używać instrukcji by i sort również do wielu zmiennych bysort region pop: list state - pop Instrukcja by może być wykorzystywana przy okazji wielu poleceń. Informuje o tym pomoc. 3. Dodawanie i kasowanie obserwacji oraz zmiennych Można wszystko w oknie edit: use dane edit Wpisać np. Quebec i Kanada i jakieś losowe wartości pozostałych zmiennych jako nową obserwację numer 51 Dodać jakąś zmienną Usunąć jakąś zmienną Usunąć jakąś obserwację Wychodząc nacisnąć preserve (zmiany zostały tylko w pamięci komputera na dysku nie zostały zapisane) (A) Dodawanie nowych obserwacji use dane input 51. Alberta Kanada.......... 52. end (Kropki to dane nieznane (missing values)) in l (na końcu jest mała litera el a nie jedynka) Uwaga!!! Należy unikać dodawania nowych obserwacji poleceniem input, gdyż jeżeli wprowadzona zmienna będzie miała inny format (np. int zamiast byte, float zamiast int, str20 zamiast str19), to komputer ją albo zaokrągli, albo utnie, albo nie przyjmie. Takie rzeczy bezpieczniej jest wykonywać w oknie edit. Przykład na to dziwne zjawisko: edit 1 120 kocur Powyższe dane wpisać jako pierwsza obserwacja dla 3 zmiennych. Wychodząc z okna edycji nacisnąć preserve. Z2: 2 z 9
input 2. 99 10000 krak 3. 101 2.6 krokodyl 4. end Okazuje się, że ostatni wiersz jest całkowicie przekłamany. edit 101 2.6 krokodyl Wpisać powyższe dane jako czwartą obserwację i dać preserve Teraz okazuje się, że jest dobrze. Typy zmiennych się zmieniły i wszystko zostało przyjęte. (B) Dodawanie nowych zmiennych (a) Tworzenie proste use dane generate ludn_mln = pop/1000000 generate double ludn_mln2 = pop/1000000 generate malz_netto = marriage - divorce if region == "South" region == "West" generate stan = Stan + state state - pop ludn* malz* stan (b) Tworzenie bardziej skomplikowane Zmienne systemowe: search system variables Zmienne systemowe (_b, _coef, _se). Zmienna systemowa _b jest tym samym co zmienna systemowa _coef. regress medage pop popurban divorce generate teoret2 = _b[pop]*pop + _b[popurban]*popurban + _b[divorce]*divorce + _b[_cons]*_cons predict teoret3 generate teoret_kontrolny = teoret3 teoret2 teo* Zmienne systemowe (_n, _N): generate abc = pop[_n+1] generate abc2 = _n display _N Z2: 3 z 9
generate abc3 = pop[_n] pop abc* Zmienne systemowe (_n, _N) z instrukcją by: bysort region: generate kot1 = [_n] by region: generate kot2 = [_N] region kot? Numery obserwacji ze zmiennych: sort state display state[3] state generate mbxd1 = state[3] generate mbxd2 = state[_n - _n + 1] state mbxd* Komenda egen: help egen egen m1 = max(pop) egen m2 = mean(pop) egen m3 = min(pop) egen m4 = sum(pop) display m4[1]/_n egen m5 = mode(region) sort pop region pop m? Uwaga: Z komendą egen nie pójdą zmienne systemowe i to co w nawiasach kwadratowych. (C) Kasowanie zmiennych i obserwacji drop in l drop if region == NE drop mbxd1 m3 keep state region pop m* sort region pop by region: keep in 1 by region: keep if _n == 1 Zmienna systemowa _all (_all czyli wszystkie zmienne) drop _all Zmian nie zapisujemy Z2: 4 z 9
4. Analiza korelacji korelacja prosta use mp2.dta Kowariancja na podstawie danych z próby: n n 1 1 cov( x, y) = xi x yi y = xi y n 1 i= 1 n 1 i= 1 cov ( x, y) S xs y; S xs y Współczynnik korelacji liniowej: r r cov, = S ( x y) ( x, y) x S y ( x, y) 1; 1 ( )( ) nxy i cov(x,y) = -S x S y r(x,y) = -1 cov(x,y) = S x S y r(x,y) = 1 cov(x,y) = 0 r(x,y) = 0 cov(x,y) = 0 r(x,y) = 0 correlate correlate, covariance correlate, means correlate, covariance means Z2: 5 z 9
Czym się różni correlate od pwcorr? correlate pwcorr Dodajmy zmienną a i obserwację nr 11 o dowolnej wartości ale tylko dla zmiennej a: input a 1. end input 11.... 123 12. end correlate pwcorr Widać teraz różnicę między correlate a pwcorr (w poleceniu correlate dla wszystkich zmiennych współczynniki korelacji muszą opierać się na tych samych obserwacjach, w poleceniu pwcorr liczba obserwacji może być różna dla różnych par zmiennych) correlate x y z in 1/10 Opcje polecenia pwcorr: Liczba obserwacji dla każdego współczynnika korelacji: pwcorr, obs Poziom istotności współczynników korelacji: pwcorr, sig pwcorr, print(.10) pwcorr, print(.01) pwcorr, star(.01) Jakim testem się bada poziom istotności współczynników korelacji obliczonych na podstawie próby? H0: ρ = 0 H1: ρ 0 (ρ współczynnik korelacji dla populacji) Gdy odrzucimy H 0, to oznacza, że ρ jest istotnie różne od zera i związek pomiędzy zmiennymi należy uznać za istotny. Gdy H 0 jest prawdziwa, statystyka stopniami swobody ( x, y) 2 r ( x, y) r t = n 2 ma rozkład t-studenta z n 2 1 Z2: 6 z 9
P ( t t *) = α ; α poziom istotności; stąd wyliczamy t*. Pamiętajmy, że test jest dwustronny. α/2 α/2 -t t Jeżeli t > t* to H 0 odrzucamy i wówczas współczynnik korelacji jest istotnie różny od zera help pwcorr drop a drop in 11 Wyniki wielu procedur można wykorzystać w dalszej analizie. Służą temu funkcje r(), e() i s(). Większość komend wyniki zapisuje w postaci funkcji: r() Estimation commands np. regress wyniki zapisują w postaci funkcji: e() Żeby zobaczyć dostępne funkcje odwołujące się do wyników wcześniejszego polecenia, korzystamy z komend: return list (dla funkcji r()), ereturn list (dla funkcji e()), sreturn list (dla funkcji s()) Np. summarize x return list ereturn list sreturn list display r(sd)^2 generate x_st = (x - r(mean))/r(sd) summarize x display r(sum) return list drop x_st correlate x y return list correlate x z return list Z2: 7 z 9
ZADANIE: Ręcznie stworzyć plik z rozszerzeniem.do, który wyświetla dla współczynnika korelacji między zmienną x i z wartość statystyki t obliczoną według podanego wcześniej wzoru oraz wartość krytyczną t* w tym teście t-studenta dla pewnego poziomu istotności. doedit Poniższe polecenia wpisujemy do edytora Do-file Editor. Kiedy wpiszemy część, możemy z menu Tools w tym edytorze wybrać opcję Do (lub odpowiednią ikonkę na pasku narzędzi) w celu wykonania dotychczas wpisanych komend: correlate x z display "Statystyka t dla wsp. korelacji zmiennych x i z wynosi ", r(rho)*sqrt(r(n)-2)/sqrt(1-(r(rho))^2) display "Wartosc krytyczna t dla poziomu istotnosci 10% wynosi ", invttail(r(n)-2,0.05) Plik zapisać pod nazwą korelacja.do w katalogu C:/temp/stata_2 Uruchomienie komend zawartych w tym pliku następuje po wpisaniu polecenia: do korelacja.do W ostatniej linijce pliku korelacja.do wykorzystujemy jedną z funkcji matematycznostatystycznych programu Stata funkcję invttail. Dla podanego poziomu istotności oraz dla podanej wartości 1 dystrybuanta(x) funkcja ta zwraca odpowiedni punkt x na osi odciętych w rozkładzie t-studenta, tzn.: Jeżeli invttail(a,b) = c, to: a liczba stopni swobody b pole pod funkcją gęstości rozkładu t-studenta od punktu c na osi odciętych do nieskończoności b c Liczba 0.05 jako jeden z argumentów funkcji invttail oznacza, że przyjęliśmy poziom istotności równy 10% (α = 0.10) Informacje o innych funkcjach statystycznych znajdują się w pomocy: help functions a następnie trzeba nacisnąć myszką na tekst probfun, który ukaże się w oknie wynikowym Z2: 8 z 9
W katalogu C:/temp/stata_2 powinno być 5 plików: stata2a.log i stata2b.log zawierające wpisane komendy oraz wyniki dotychczasowej pracy dane.dta i mp2.dta z bazami danych korelacja.do plik zawierający polecenia do wykonania przez program Stata Z2: 9 z 9