Calcola gli errori standard Newey-West senza un oggetto lm in R


13

Ho fatto questa domanda ieri su StackOverflow e ho ottenuto una risposta, ma abbiamo concordato che sembra un po 'hacker e potrebbe esserci un modo migliore per esaminarlo.

La domanda: vorrei calcolare gli errori standard Newey-West (HAC) per un vettore (in questo caso un vettore di rendimenti azionari). La funzione NeweyWest()nel sandwichpacchetto fa questo, ma accetta un lmoggetto come input. La soluzione offerta da Joris Meys è di proiettare il vettore su 1, che trasforma il mio vettore in residui da alimentare NeweyWest(). Questo è:

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

per la varianza della media.

Dovrei farlo in questo modo? O c'è un modo per fare più direttamente quello che voglio? Grazie!


1
La domanda non è chiara Cosa intendi con "errore standard per un vettore"? In genere vogliamo l'errore standard di una stima dei parametri. Quale parametro stai stimando? Il codice fornito produce la stima di Newey West dell'errore standard quadrato della media. È questo che vuoi?
Cyrus S,

@Cyrus - Per "vettore" non intendo un lmoggetto. Ho spesso un vettore (diciamo una serie di rendimenti azionari) che non voglio coinvolgere in alcuna regressione (perché non mi interessa la sua proiezione, tranne che su 1), ma per il quale voglio ancora l'HAC errore standard. In questo caso la stima dei parametri è il rendimento dello stock. La risposta sopra lo fa, ma richiede il calcolo lmdell'oggetto, che in realtà non mi serve. Quindi mi chiedo se c'è una routine in R che lo fa senza creare un lmoggetto.
Richard Herron,

Siamo spiacenti, non è ancora chiaro: "In questo caso il parametro stimato è il rendimento dello stock". Con questo, intendi la "media dei rendimenti azionari della serie"? Se sì, allora quello che hai è perfettamente perfetto.
Cyrus S,

@Cyrus - So che quello che ho funziona, ma speravo che ci fosse un modo per calcolare gli SE senza passare attraverso l' lmoggetto per il caso di un singolo vettore. Non credo. Grazie per avermi aiutato a chiarire la mia domanda!
Richard Herron,

Risposte:


15

Supponiamo di avere una regressione

y=Xβ+u

Poi OLS stimano β è β - β = ( X ' X ) - 1 X ' u e assumendo che β è stima non distorta abbiamo V a r ( β ) = E [ ( X ' X ) - 1 X ' u u X ( X X ) - 1 ]β^

β^β=(X'X)-1X'u
β^
Vun'r(β^)=E[(X'X)-1X'uu'X(X'X)-1]

E(u|X)=0E(uu'|X)=σ2ion

Vun'r(β^)=σ2E(X'X)-1

uioE(uu'|X)σ2ion

dioun'g(E(X'X)-1X'uu'X(X'X)-1).
E(uu'|X) sembra.

Quindi è naturale che la funzione NeweyWestrichieda un modello lineare. Il metodo Newey-West calcola gli errori standard corretti dello stimatore del modello lineare. Quindi la tua soluzione è perfettamente corretta se presumi che i tuoi rendimenti azionari seguano il modello

rt=μ+ut
e vuoi stimare Vun'r(μ) a protezione dalle irregolarità ut.

Se invece vuoi stimare "corretto" Var(rt) (whatever that means), you should check out volatility models, such as GARCH and its variants. They assume that

rt=σtεt
where εt are iid normal. The goal is then to correctly estimate σt. Then Var(rt)=Var(σt) and you have "correct" estimate of your variance, guarding against usual idiosyncrasies of stock returns such as volatility clustering, skewness and etc.

Thanks! There may not be a more efficient way for me to code this than forming the lm object.
Richard Herron

I guess the lm object is the way to go! Thanks for a great summary... sometimes in the application I get too far from the theory.
Richard Herron
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.