Saturday 19 August 2017

Regime De Regressão Média Em Movimento


Stata: análise de dados e software estatístico Nicholas J. Cox, Universidade de Durham, Reino Unido Christopher Baum, Boston College egen, ma () e suas limitações Statarsquos comando mais óbvio para o cálculo de médias móveis é a função ma () de egen. Dada uma expressão, ela cria uma média móvel daquela expressão. Por padrão, é tomado como 3. deve ser estranho. No entanto, como a entrada manual indica, egen, ma () não podem ser combinados pela varlist:. E, por esse motivo, não é aplicável aos dados do painel. Em qualquer caso, fica fora do conjunto de comandos especificamente escritos para séries temporais veja séries de tempo para obter detalhes. Abordagens alternativas Para calcular as médias móveis para os dados do painel, existem pelo menos duas opções. Ambos dependem do conjunto de dados ter sido o tsset de antemão. Isso vale muito a pena fazer: não só você pode economizar-se especificando repetidamente a variável do painel e a variável de tempo, mas o Stata se comporta de forma inteligente com quaisquer lacunas nos dados. 1. Escreva sua própria definição usando gerar Usando operadores de séries temporais, como L. e F.. Dê a definição da média móvel como argumento para uma declaração de geração. Se você fizer isso, você, naturalmente, não está limitado às médias móveis ponderadas (não ponderadas), calculadas por egen, ma (). Por exemplo, as médias móveis de três períodos, igualmente ponderadas, seriam dadas e alguns pesos podem ser facilmente especificados: você pode, claro, especificar uma expressão como log (myvar) em vez de um nome de variável, como myvar. Uma grande vantagem desta abordagem é que a Stata faz automaticamente o que é certo para os dados do painel: os valores de liderança e atraso são elaborados dentro dos painéis, assim como a lógica determina que eles deveriam ser. A desvantagem mais notável é que a linha de comando pode ficar bastante longa se a média móvel envolver vários termos. Outro exemplo é uma média móvel unilateral baseada apenas em valores anteriores. Isso poderia ser útil para gerar uma expectativa adaptativa sobre o que uma variável será baseada apenas em informações até à data: o que alguém poderia prever para o período atual com base nos últimos quatro valores, usando um esquema de ponderação fixa (pode haver um atraso de 4 períodos Especialmente comumente usado com timeseries trimestrais.) 2. Use egen, filter () from SSC Use o filtro de função egen escrito () do egenmore package em SSC. No Stata 7 (atualizado após 14 de novembro de 2001), você pode instalar este pacote, após o qual a ajuda, além disso, aponta para detalhes no filtro (). Os dois exemplos acima serão renderizados (Nesta comparação, a abordagem de geração é talvez mais transparente, mas veremos um exemplo do oposto em um momento.) Os atrasos são um número. Leva a atrasos negativos: neste caso -11 se expande para -1 0 1 ou liderar 1, lag 0, lag 1. Os coeficientes, outro número, multiplicam os itens atrasados ​​ou atrasados ​​correspondentes: neste caso, esses itens são F1.myvar . Myvar e L1.myvar. O efeito da opção de normalização é dimensionar cada coeficiente pela soma dos coeficientes de modo que o coeficiente de coef (1 1 1) seja equivalente aos coeficientes de 13 13 13 e a normalização de coef (1 2 1) seja equivalente a coeficientes de 14 12 14 . Você deve especificar não apenas os atrasos, mas também os coeficientes. Como egen, ma () fornece o caso igualmente ponderado, a principal razão para egen, filter () é suportar o caso pontualmente ponderado, para o qual você deve especificar coeficientes. Também pode-se dizer que obrigar os usuários a especificar coeficientes é uma pressão pouco sobre eles para pensar sobre os coeficientes que eles querem. A justificativa principal para os pesos iguais é, a adivinhar, a simplicidade, mas pesos iguais têm propriedades de domínio de freqüência péssimas, para mencionar apenas uma consideração. O terceiro exemplo acima pode ser qualquer um dos quais é tão complicado quanto a abordagem gerada. Existem casos em que egen, filter () dá uma formulação mais simples do que gerar. Se você quer um filtro binomial de nove séculos, que os climatologistas acham útil, então parece talvez menos horrível do que, e mais fácil de conseguir, do mesmo modo, assim como com a abordagem de geração, egen, filter () funciona corretamente com os dados do painel. Na verdade, como afirmado acima, depende do conjunto de dados ter sido tsset de antemão. Uma dica gráfica Depois de calcular suas médias móveis, você provavelmente vai querer olhar para um gráfico. O comando do usuário tsgraph é inteligente sobre conjuntos de dados tsset. Instale-o em um Stata 7 atualizado por um ssc inst tsgraph. E quanto a subconjunto com se Nenhum dos exemplos acima faz uso de restrições if. Na verdade egen, ma () não permitirá que se especifique. Ocasionalmente, as pessoas querem usar se ao calcular médias móveis, mas seu uso é um pouco mais complicado do que normalmente. O que você esperaria de uma média móvel calculada com se. Vamos identificar duas possibilidades: interpretação fraca: não quero ver nenhum resultado para as observações excluídas. Interpretação forte: eu nem quero que você use os valores para as observações excluídas. Aqui está um exemplo concreto. Suponha que, como consequência de alguma condição, as observações 1-42 estão incluídas, mas não as observações 43. Mas a média móvel para 42 dependerá, entre outras coisas, do valor para a observação 43 se a média se prolongar para trás e para frente e for pelo menos 3, e dependerá de algumas das observações em algumas circunstâncias. Nosso palpite é que a maioria das pessoas iria pela interpretação fraca, mas se isso é correto, egen, filter () não é compatível se também. Você sempre pode ignorar o que você não quer ou mesmo definir valores indesejados a perder depois, usando o substituir. Uma nota sobre resultados faltantes nas extremidades da série Como as médias móveis são funções de atrasos e leads, egen, ma () produz falta onde os atrasos e as derivações não existem, no início e no final da série. Uma opção nomiss força o cálculo de médias móveis mais curtas e não centradas para as caudas. Em contraste, nem gerar nem egen, filter () faz, ou permite, qualquer coisa especial para evitar resultados perdidos. Se algum dos valores necessários para o cálculo estiver faltando, esse resultado está faltando. Cabe aos usuários decidir se e qual cirurgia corretiva é necessária para tais observações, presumivelmente depois de olhar para o conjunto de dados e considerando qualquer ciência subjacente que possa ser levada a efeito. Novação 04 de novembro de 2014, 19:36 Querido, estou trabalhando Com um conjunto de dados de painel desequilibrado onde o painel var é o número do fundo e o tempo var é o mês. Assim, estou trabalhando com séries temporais mensais, mas com lacunas. O que eu quero é calcular o índice Sharpe de 3 anos e também o jensens alfa de 3 anos para cada fundo. Então, se eu for no ano de 1992, gostaria de calcular o índice de Sharpe nesse ano usando as observações mensais dos anos 1992 1991 1990. Para isso, eu preciso da média e do excesso de retorno de cada fundo durante esse período. Além disso, gostaria de estimar o Jensens Alpha executando o modelo CAPM usando novamente as observações mensais dos anos 1992 1991 1990. Para isso, eu poderia usar o comando statsby e usar os coeficientes de uma regressão executada durante esse período. Eu tenho tentado muitos comandos como rollreg, movavg, ma etc e também alguns moradores com foreachforvalues, mas não posso empregá-los porque não tenho um painel balanceado e não quero eliminar fundos, porque eu posso ter uma ou duas lacunas. Este é um exemplo do meu conjunto de dados o mês anterior mês mktrf smb hml umd ExcessR s ---------------------------------- ----------------------------------------- 2 1997 1. 2 1997 2 -. 0049 -0,0261 .0469 -0204. 2 1997 3 -0503-0032 .0386 .0094 -.0181431 2 1997 4 .0404 -.0519 -0102 .0489 .0117428 2 1997 5 .0674 .0483-0438 -.0519 .0372053 ---- -------------------------------------------------- --------------------- 2 1997 6 .041 .015 .0072 .0259 .0310222 2 1997 7 .0733 -.0252 -0013 .0384 .0402394 2 1997 8-0415 .0734 .0137 -.0252 -.0292168 2 1997 9 .0535 .0268-0025 .0145 .0381404 2 1998 1 .0015-0094 -.0207 .001 .0056473 ------ -------------------------------------------------- ------------------- 2 1998 2 .0703 .0032 -0086 -.011 .0395531 2 1998 3 .0476 -0099 .0123 .0214 .0277491 2 1998 4 .0073 .0048 .0027 .0078 .0005439 2 1998 5 -0.0307 -0354 .0412 .0189 -.0093562 2 1998 6 .0318 -.0315 -.0222 .0726 .002362 -------- -------------------------------------------------- ----------------- 2 1998 7 -.0246 -.0492 -.0115 .0371 -.0232616 2 1998 8 -.1608 -.0575 .0524 .0187 -.091043 2 1998 9 .0615 -0015 -.0388-0063 .0222817 2 1998 10 .0713 -.032 -.0277 -.0535 .0311223 2 1998 11. 061 .0114 -.0343 .0118 .0300834 ---------------------------------------- ----------------------------------- 2 1998 12 .0616 -.003 -.047 .0904 .0168859 7 1994 1 .0287 .0014 .021 .0001 .0183894 7 1994 2 -0256 .0272 -0141-0026 -.0170168 7 1994 3 -0,0478-0096 .0134 -.0132 -.0656004 7 1994 4 .0068 -.0032034 -------------------------------------- .0068 -0.0091 .0169 .0041 -.0032034 -------------------------------------- ------------------------------------- 7 1994 5 .0058 -.0201 .0018 -.0216 -0093189 7 1994 6 -0303 -0048 .0168 -0083 -.0506594 7 1994 7 .0282 -.0178 .0098 .0019 .0199595 7 1994 8 .0401 .0145 -.0347 .0154 .0419298 7 1994 9 -0,0231 .0268 -0181 .0131 -.0135341 ------------------------------------ --------------------------------------- 7 1994 10 .0134 -022 -.0236 .0145 .0129598 7 ​​1994 11 -0.0404 -.0017-0005 -.0019-0433825 7 1994 12 .0086 .0005 .0026 .035 .0152948 05 de novembro de 2014, 11:35 Muito obrigado por suas postagens. Quanto ao índice Sharpe, esse é o código que escrevi e resolvo o meu problema. Gen MeanVWExcRetGr. Classifique crspfundno ryear month forval i1990 (1) 2013 local mi-2 por crspfundno. Egen Meanimean (VWExcRetGr) se ryearlti amp ryeargtm substituir MeanVWExcRetGrMeani se ryeari Não é perfeito, mas eu tenho meus meios em uma coluna agora, então cada ano eu tenho o mesmo valor de rolamento significa nas minhas observações mensais (egen). Eu estou dizendo que não é perfeito porque dentro dos comandos eu não especifico que eu quero média dos valores somente no caso de eu ter 3 anos de observações. Assim, também calcula a média no caso em que eu tenho 2 anos de observações. A boa notícia é que eu posso me eliminar essas observações. Eu postei o acima porque eu quero que você entenda o que eu preciso exatamente. Eu quero ter o alfa e o beta, cada um em uma coluna para que eu possa usá-los para regredá-los em outras variáveis. Portanto, no ano de 1995 para o fundo nº 100, que tem 11 observações mensais, por exemplo, eu quero que a saída alfa da regressão do fator capm4 de 3 anos (1995,1994,1993) capm4 seja repetida nas 11 linhas - células da coluna alfa. O mesmo se aplica a beta. Eu apliquei o código Mata com algumas alterações egen g group (crspfundno) gen alpha. Mata mata clear stview (crspfundno. Quotcrspfundno quot) stview (ryear. Quotryearquot) stview (VWExcRetGr. QuotVWExcRetGrquot) stview (mktrf. Quotmktrfquot) stview (smb. Quotsmbquot) stview (hml. Quothmlquot) stview (umd. Quotumdquot) stview (g. Quotgquot) stview (alpha. Quotalphaquot) p panelsetup (crspfundno, 1) para (i1 iltrows (p) i) para (opi, 2 ogtpi, 1 o--) y J (1,1 ,.) XJ (1,5 ).) B. Para (para tgtpi, 1 t--) se (vá, 1 gt, 1 ampère ryearo, 1 - ryeart, 1 lt 2) yy VWExcRetGrt, 1 XX (mktrft, 1, smbt, 1, hmlt, 1, umdt, 1 , 1) yy (2..rows (y)). XX (2..rows (X)) ,. Se (linhas (y) gt6) b invsym (cross (X, X)) cross (X, y) alphao, 1 b5,1 final, mas o resultado é este e não inclui beta também. Você pode me ajudar a fundno ryear mês g alpha 5487 2001 1 478 -0045781 5487 2001 2 478 -0049922 5487 2001 3 478 -0044039 5487 2001 4 478 -.0058963 5487 2001 5 478 -.0057021 5487 2001 6 478 - .0037893 5487 2001 7 478 -.0046226 5487 2001 8 478 -.0027665 5487 2001 9 478 -.0037288 5487 2002 1 478 .0009866 5487 2002 2 478 .0019246 5487 2002 3 478 .0019994 5487 2002 4 478 .002021 5487 2002 5 478 .0025631 5487 2002 6 478 .0019815 5487 2002 7 478 .0037848 5487 2002 8 478 .0035144 5487 2002 9 478 .003802 5487 2002 10 478 .0012915 5487 2002 11 478 .0016832 5487 2002 12 478 .0015888 Eu não tenho certeza se Eu entendo você. No entanto, repetindo o conselho no tópico ao qual eu referi você anteriormente sobre não usar o código Mata enquanto o código Stata está disponível, aqui está um código adaptado desse segmento que fará a regressão do rolamento. Isso levará muito tempo se você tiver um grande conjunto de dados. Deixe-me saber se isso demora muito tempo. Eu aconselho você a verificar os resultados. 06 Nov 2014, 08:51 A Abraham: código Mata muito rápido. Eu só precisava de 1 minuto em vez de 2 horas. Além disso, ele funciona melhor, pois retorna valores faltantes se eu tiver apenas uma observação de um ano. Muito obrigado. Uma última pergunta. Se eu precisar da regressão do capm, isso significa apenas VWExcRetGr e mktrf, mas não o smb hml umd, é assim que o código deve ser como Alpha. Gen bMktrf. Mata mata clear stview (crspfundno. Quotcrspfundnoquot) stview (ryear. Quotryearquot) stview (VWExcRetGr. QuotVWExcRetGrquot) stview (mktrf. Quotmktrfquot) stview (Alpha. QuotAlphaquot) stview (bMktrf. QuotbMktrfquot) p panelsetup (crspfundno, 1) para (i1 iltrows (P) i) para (opi, 1 oltpi, 2 o) y VWExcRetGro, 1 X (mktrfo, 1, 1) b. Para (tpi, 1 tltpi, 2 t) se (para amp crspfundnoo, 1 crspfundnot, 1 amp (ryearo, 1 - ryeart, 1 lt 2) amp ryearo, 1 gt ryeart, 1) yy VWExcRetGrt, 1 XX (mktrft, 1 1) se (linhas (y) gt6) b invsym (cross (X, X)) cross (X, y) Alphao, 1 b2,1 bMktrfo, 1 b1,1 No seu código, você calcula a desvio padrão por país e Indústria (usando resumir), mas então você substitui esse valor em SDx de outros coutries (no loop interno). É isso que você quer fazer. Eu escrevi o código Mata assumindo que você deseja calcular o desvio padrão por país e indústria. Se você quiser calcular por país e indústria, você precisa adicionar: Aqui está o código Mata (ele calcula o desvio padrão também quando a janela é menor que 4 anos):

No comments:

Post a Comment