/* Mikroekonometria Zajęcia 11 - Dane panelowe / Parametry losowe CC BY: Mikołaj Czajkowski, Wiktor Budziński */ // Zadanie 1. Opieka zdrowotna w Niemczech // Wykorzystując projekt me.gerhealth.dta skonstruuj model, w którym odbycie wizyty u lekarza (Y = 1(docvis > 0)) wyjaśniane jest przez // stałą, płeć, wiek, dochód, posiadanie dzieci, liczbę lat edukacji i bycie w małżeństwie // Wczytujemy projekt me.gerhealth.dta * cd "C:\Users\...\Documents\ME\" use me.gerhealth.dta, clear sum // 1.1 Potraktuj wszystkie obserwacje jako niezależne gen vis = docvis > 0 logit vis female age hhninc hhkids educ married // 1.2 Skonstruuj model efektów losowych // Najpierw musimy "zdefiniować" panel - powiedzieć Stacie, które obserwaje dotyczą tego samego respondenta xtset id year // Najpierw identyfikator respondenta, potem lat/obserwacji na respondenta // Możemy obejrzeć jakieś ogólne informacje o danych panelowych xtdescribe // Informacje o zmiennych w panelu // Within variation - zmienność z roku na rok // Between variation - zmienność z respondenta na respondenta xtsum xtlogit vis female age hhninc hhkids educ married, re //opcja "re" oznacza random effects // Interpretacja jak w zwykłym logicie // Zdecydowana poprawa dopasowania modelu do danych // 1.2.1. Czy korelacje są istotne? // Na dole test LR na istotność korelacji (rho) display 1.474229^2/(1.474229^2+c(pi)^2/3) // liczymy rho 'ręcznie' // Część zmiennych przestała być istotna // 1.2.3. Porównaj wyniki (charakterystyki modeli, parametry, efekty krańcowe) estat ic margins, dydx(*) // Dla poissona: margins, dydx(*) expression(predict(nu0)) logit vis female age hhninc hhkids educ married estat ic // Zdecydowanie wyższe margins, dydx(*) // 1.3. Skonstruuj model efektów stałych xtlogit vis female age hhninc hhkids educ married, fe //opcja "fe" oznacza fixed effects // 1.3.1. Czy wszystkie obserwacje zostały wykorzystane? // Liczba obserwacji spadła do 16,312 - pozbyto się respondentów, którzy co roku chodzili do lekarza oraz tych którzy nigdy nie byli // 1.3.2. Czy wszystkie zmienne zostały wykorzystane? // Niemożliwe oszacowania parametru dla female, bo nie ma within-variation // 1.3.3. Który model lepiej pasuje do danych RE czy FE? // 1.4. Dodaj efekty stałe dla lat tabulate year, generate(year_) global years year_1 year_2 year_3 year_4 year_5 xtlogit vis female age hhninc hhkids educ married $years, fe //opcja "fe" oznacza fixed effects // Nie można dodać 6-tego roku, ze względu na to, że wyrzuciliśmy część obserwacji // Zadanie 2. Sortowanie śmieci // 2.1. Wczytaj zbiór danych me.recycling.dta use me.recycling.dta, clear gen seq = int((_n-1)/3) + 1 cmset seq alt replace sort = 1 if sort == 0 // Przekodowujemy sort = 0 na sort = 1 drop if out == 1 // 2.2. Dokonaj estymacji MNL cmclogit ans sort time fee, nocons // 2.3. Dokonaj estymacji modelu z parametrami losowymi zakładając normalne rozkłady replace id = id + 278 if ansno == 9 cmset id cs alt cmxtmixlogit ans, random(sort time fee) nocons // Inny typ drawów (halton) cmxtmixlogit ans, random(sort time fee) nocons intmethod(halton) // Istotna heterogeniczność dla wszystkich atrybutów // 2.3.1. Oszacuj średnie WTP set seed 10101 generate bsort = .4708728 + .7905294 *rnormal(0,1) // generujemy rozkład normalny generate bfee = -.0511725 + .039157 *rnormal(0,1) // generujemy rozkład normalny gen WTP = -bsort/bfee sum WTP // Trochę duże ochylenia standardowe, min i max // 2.3.2. Czy wyniki będą takie same dla różnych ziaren? // Spróbujmy z innym ziarnem set seed 1010101 generate bsort2 = .4708728 + .7905294 *rnormal(0,1) // generujemy rozkład normalny generate bfee2 = -.0511725 + .039157 *rnormal(0,1) // generujemy rozkład normalny gen WTP2 = -bsort2/bfee2 sum WTP WTP2 // Skąd taka różnica? // 2.4. Dokonaj estymacji modelu z parametrami losowymi zakładając rozkład log-normalny dla kosztu gen mfee = -fee cmxtmixlogit ans, random(sort time) random(mfee,ln) nocons intmethod(halton) set seed 10101 generate bsort3 = .4710368 + .8019863*rnormal(0,1) // generujemy rozkład normalny generate bfee3 = exp(-3.277948 + 1.114395*rnormal(0,1)) // generujemy rozkład log normalny gen WTP3 = bsort3/bfee3 // Spróbujmy z innym ziarnem set seed 1010101 generate bsort4 = .4710368 + .8019863*rnormal(0,1) // generujemy rozkład normalny generate bfee4 = exp(-3.277948 + 1.114395*rnormal(0,1)) // generujemy rozkład log normalny gen WTP4 = bsort4/bfee4 sum WTP3 WTP4 // Teraz bardziej zbliżone // 2.5. Dokonaj estymacji modelu klas ukrytych // Z 2 klasami help lclogit // Trzeba zainstalować // Estymacja przy pomocy algorytmu EM // Niestety, przez to nie mamy błędów standardowych lclogit ans sort time fee, group(seq) id(id) nclasses(2) * estat ic // estat błędnie podaje liczbę parametrów, przez co AIC i BIC są nieprawidłowe // Z 3 klasami lclogit ans sort time fee, group(seq) id(id) nclasses(3) * estat ic // estat błędnie podaje liczbę parametrów, przez co AIC i BIC są nieprawidłowe