Oblicz standardowe błędy Newey-Westa bez obiektu lm w R.

13

Zadałem to pytanie wczoraj na StackOverflow i otrzymałem odpowiedź, ale zgodziliśmy się, że wydaje się to nieco hackingowe i może być lepszy sposób, aby na to spojrzeć.

Pytanie: Chciałbym obliczyć standardowe błędy Newey-Westa (HAC) dla wektora (w tym przypadku wektor zwraca zapas). Funkcja NeweyWest()w sandwichpakiecie robi to, ale pobiera lmobiekt jako dane wejściowe. Rozwiązaniem, które oferuje Joris Meys, jest rzutowanie wektora na 1, który zamienia mój wektor w resztki, w które można się odżywiać NeweyWest(). To jest:

as.numeric(NeweyWest(lm(rnorm(100) ~ 1)))

dla wariancji średniej.

Czy powinienem to robić w ten sposób? Czy jest sposób na bardziej bezpośrednie robienie tego, co chcę? Dzięki!

Richard Herron
źródło
1
Pytanie nie jest jasne. Co rozumiesz przez „błąd standardowy dla wektora”? Zwykle chcemy standardowego błędu oszacowania parametru. Jaki parametr szacujesz? Podany kod tworzy oszacowanie Newey West kwadratowego błędu standardowego średniej. Czy tego chcesz?
Cyrus S
@Cyrus - Przez „wektor” nie mam na myśli lmobiektu. Często mam wektor (powiedzmy serię zwrotów akcji), że nie chcę brać udziału w żadnych regresjach (ponieważ nie dbam o jego projekcję, inną niż na 1), ale dla których nadal chcę HAC Standardowy błąd. W tym przypadku oszacowaniem parametru jest zwrot z magazynu. Powyższa odpowiedź tak robi, ale wymaga obliczenia lmobiektu, którego tak naprawdę nie potrzebuję. Zastanawiam się więc, czy w R istnieje procedura, która robi to bez tworzenia lmobiektu.
Richard Herron,
Niestety, wciąż niejasne: „W tym przypadku oszacowaniem parametru jest zwrot z magazynu”. Czy przez to rozumiesz „średnią zwrotów akcji w serii”? Jeśli tak, to masz wszystko w porządku.
Cyrus S
@ Cyrus - Wiem, że to, co mam, działa, ale miałem nadzieję, że istnieje sposób na obliczenie SE bez przechodzenia przez lmobiekt w przypadku pojedynczego wektora. Nie sądzę. Dzięki za pomoc w wyjaśnieniu mojego pytania!
Richard Herron,

Odpowiedzi:

15

Załóżmy, że mamy regres

y=Xβ+u

Następnie oszacowanie OLS to i przy założeniu, że jest bezstronnym szacunkiem, że β^

β^β=(XX)1Xu
β^
Var(β^)=E[(XX)1XuuX(XX)1]

Typowe założenia OLS są takie, że i co daje nam Tę macierz kowariancji zwykle podaje się w pakietach statystycznych.E(u|X)=0E(uu|X)=σ2In

Var(β^)=σ2E(XX)1

Jeśli są heteroscedastyczne i (lub) autokorelowane, to i zwykłe dane wyjściowe dają mylące wyniki. Aby uzyskać prawidłowe wyniki, obliczane są standardowe błędy HAC. Wszystkie metody błędów HAC obliczają Różnią się w swoich założeniach, jak wygląda .uiE(uu|X)σ2In

diag(E(XX)1XuuX(XX)1).
E(uu|X)

Jest więc naturalne, że ta funkcja NeweyWestwymaga modelu liniowego. Metoda Newey-West oblicza prawidłowe błędy standardowe estymatora modelu liniowego. Więc twoje rozwiązanie jest całkowicie poprawne, jeśli założymy, że zwroty akcji są zgodne z modelem i chcesz oszacować zabezpieczający przed nieprawidłowościami w .

rt=μ+ut
Var(μ)ut

Jeśli natomiast chcesz oszacować „poprawny” (cokolwiek to oznacza), powinieneś sprawdzić modele zmienności, takie jak GARCH i jego warianty. Zakładają, że gdzie są w normie. Celem jest zatem prawidłowe oszacowanie . Następnie i masz „poprawne” oszacowanie swojej wariancji, chroniąc przed zwykłymi cechami zwrotów akcji, takimi jak grupowanie zmienności, skośność itp.r t = σ t ε t ε t σ t V a r ( r t ) = V a r ( σ t )Var(rt)

rt=σtεt
εtσtVar(rt)=Var(σt)
mpiktas
źródło
Dzięki! Kodowanie tego może nie być bardziej efektywne niż tworzenie lmobiektu.
Richard Herron,
Wydaje mi się, że ten lmobiekt jest właściwą drogą! Dzięki za świetne podsumowanie ... czasami w aplikacji zbyt daleko od teorii.
Richard Herron,