Sei que o que postarei é algo simples, e passível de conter algum erro, por isso peço desculpas aos mais avançados e motivação aos iniciantes "como eu".
O que segue abaixo é uma rotina simples no R, onde vou gerar duas variáveis e ajustar uma linha usando métodos não-paramétricos
em MAIUSCULO são feitos comentários que não fazem parte da rotina, apenas explicam o que está sendo realizado. Então, se você quer acompanhar o procedimento, copie o que está em "minusculo" e cole no programa "R"
Devemos primeiro carregar o pacote, em “pacotes”, “carregar pacote....”, “KernSmooth”
n = 200
NUMERO DE OBSERVAÇÕES
d = 0.1
DESVIO
e = rnorm(n,0,d)
ERRO, DISTRIBUIÇÃO RANDOMICA, MÉDIA ZERO E VARIÂNCIA DADA CONSTANTE = O.1
x = seq(1,10,length=n)
VARIÁVEL MONTADA ATRAVÉS DE UMA SEQUENCIA DE VALORES DE 1 A 10, DE TAMANHO N (200)
y = sin(x) + e
VARIÁVEL MONTADA COM UMA FUNÇÃO SENO DA ANTERIOR MAIS UM TERMO DE ERRO
plot(x,y)
FUNÇÃO PARA GERAR O GRÁFICO DAS DUAS VARIÁVEIS, PERCEBA O FORMATO “SENÓIDE” DESSE PLOT, DEVIDO AOS VALORES DE Y.
lines(locpoly(x,y,band=0.008),col="black")
LOCPOLY É A FUNÇÃO USADA PELO PACOTE KERNSMOOTH, BAND É O TAMANHO DA JANELA, COL = A COR DA LINHA. PERCEBA QUE A JANELA É MUITO PEQUENA, A LINHA QUE LIGA OS PONTOS NÃO APRESENTA UM FORMATO “SUAVE” ADAPTADO A FORMA QUE OS DADOS ESTÃO DISPOSTOS.
ABAIXO GRÁFICO, VALORES SIMULADOS SÃO OS PONTOS, ESTIMAÇÃO É A LINHA
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMIW8zEsdEYjBniT58ZHRqEbZbSma8AhPKJncnnqyQhbUhSNdgm76R7FTtj0k1m3Ocv4geJXbistI7VORDE0feq0yHX-iM4lZ7vaIRA3jlYsJw1-lrRzFQiFe2qEhnfvDgiqC1mK3py_M/s320/janela+0.008.png)
lines(locpoly(x,y,band=0.5),col="blue")
COM O AUMENTO DA JANELA (DE 0.008 P/ O.5) A LINHA AJUSTA-SE DE MELHOR MANEIRA AOS DADOS.
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3UVZE-4JpuNBtjcGfgRRVqvH1vh0NmYeHJbFF4kNVlRNPgY9FETCNdlMGxy_-B2eLHdeTdSJeocGtW9Tt7CTw-nXzKR27wunYR3_5uVbZ8jQhLyzw8jY3AtF21Sl83ouJ8k6R3usWInk/s320/janela+0.5.png)
lines(locpoly(x,y,band=0.3),col="yellow")
PERCEBA QUE COM A Diminuiçã DA JANELA A LINHA AJUSTA-SE AOS DADOS DE UMA FORMA "bOA" TAMB.
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLSPTsKl7AkKgZEMmXsjWC26oDqg3b71FoIUwoVgcIp4E-DnnMHQQUYP12CRYRAsFGtA2fXfhHPE70FrWqv73lVmPrDEsEl__LZIVc81BrALv2mV1maGsxzOtp6krniLyJyI4_vhp4e0Y/s320/janela+0.3.png)
lines(locpoly(x,y,band=0.1),col="blue")
MAIS UMA DIMINUIÇÃO DA JANELA E A LINHA AJUSTA-SE DE UMA MANEIRA RUIM, POIS FICA "DEFORMADA". O QUE SUGERE QUE OS VALORES DE BOM AJUSTE ESTÃO ENTRE OS ANTERIORES ACIMA.
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEid49TprnlBAHixaizpKIwAYalihBFqE-qgZv5LAk2_22LkU8AxPKYDYM9bbL99AZ28mthNIjLCu_nNaGzNVi3ANnS1DrL74Q0Hbci6yf-ifl6DMuZTa-RFXWH9fr_ngkVJytgqa5q0taE/s320/janela+0.3.png)
____________ESCOLHA DA JANELA - H____________
*QUANDO H VAI PARA INFINITO POLINÔMIO LOCAL IGUAL A AJUSTE LOCAL (EXEMPLO DA RETA)
EXEMPLO: PARA RETA, COM JANELA GRANDE
lines(locpoly(x,y,degree=1,band=10000),col="black")
CASO SEJA USADO UM POLINÔMIO DE GRAU DOIS E UMA JANELA GRANDE O GLOBAL SERIA UM POLINÔMIO E SEGUNDO GRAU, EXEMPLO:
lines(locpoly(x,y,degree=2,band=10000),col="red")
_______DEGREE É O GRAU DO POLINÔMIO QUE VAI SE AJUSTAR..
_____É POSSÍVEL INCLUIR OUTRO GRAU QUE NÃO O AUTOMÁTICO.....FICANDO, POR EXEMPLO, ASSIM:
lines(locpoly(x,y,degree=7,band=0.4),col="black")
O que segue abaixo é uma rotina simples no R, onde vou gerar duas variáveis e ajustar uma linha usando métodos não-paramétricos
em MAIUSCULO são feitos comentários que não fazem parte da rotina, apenas explicam o que está sendo realizado. Então, se você quer acompanhar o procedimento, copie o que está em "minusculo" e cole no programa "R"
Devemos primeiro carregar o pacote, em “pacotes”, “carregar pacote....”, “KernSmooth”
n = 200
NUMERO DE OBSERVAÇÕES
d = 0.1
DESVIO
e = rnorm(n,0,d)
ERRO, DISTRIBUIÇÃO RANDOMICA, MÉDIA ZERO E VARIÂNCIA DADA CONSTANTE = O.1
x = seq(1,10,length=n)
VARIÁVEL MONTADA ATRAVÉS DE UMA SEQUENCIA DE VALORES DE 1 A 10, DE TAMANHO N (200)
y = sin(x) + e
VARIÁVEL MONTADA COM UMA FUNÇÃO SENO DA ANTERIOR MAIS UM TERMO DE ERRO
plot(x,y)
FUNÇÃO PARA GERAR O GRÁFICO DAS DUAS VARIÁVEIS, PERCEBA O FORMATO “SENÓIDE” DESSE PLOT, DEVIDO AOS VALORES DE Y.
lines(locpoly(x,y,band=0.008),col="black")
LOCPOLY É A FUNÇÃO USADA PELO PACOTE KERNSMOOTH, BAND É O TAMANHO DA JANELA, COL = A COR DA LINHA. PERCEBA QUE A JANELA É MUITO PEQUENA, A LINHA QUE LIGA OS PONTOS NÃO APRESENTA UM FORMATO “SUAVE” ADAPTADO A FORMA QUE OS DADOS ESTÃO DISPOSTOS.
ABAIXO GRÁFICO, VALORES SIMULADOS SÃO OS PONTOS, ESTIMAÇÃO É A LINHA
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMIW8zEsdEYjBniT58ZHRqEbZbSma8AhPKJncnnqyQhbUhSNdgm76R7FTtj0k1m3Ocv4geJXbistI7VORDE0feq0yHX-iM4lZ7vaIRA3jlYsJw1-lrRzFQiFe2qEhnfvDgiqC1mK3py_M/s320/janela+0.008.png)
lines(locpoly(x,y,band=0.5),col="blue")
COM O AUMENTO DA JANELA (DE 0.008 P/ O.5) A LINHA AJUSTA-SE DE MELHOR MANEIRA AOS DADOS.
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3UVZE-4JpuNBtjcGfgRRVqvH1vh0NmYeHJbFF4kNVlRNPgY9FETCNdlMGxy_-B2eLHdeTdSJeocGtW9Tt7CTw-nXzKR27wunYR3_5uVbZ8jQhLyzw8jY3AtF21Sl83ouJ8k6R3usWInk/s320/janela+0.5.png)
lines(locpoly(x,y,band=0.3),col="yellow")
PERCEBA QUE COM A Diminuiçã DA JANELA A LINHA AJUSTA-SE AOS DADOS DE UMA FORMA "bOA" TAMB.
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLSPTsKl7AkKgZEMmXsjWC26oDqg3b71FoIUwoVgcIp4E-DnnMHQQUYP12CRYRAsFGtA2fXfhHPE70FrWqv73lVmPrDEsEl__LZIVc81BrALv2mV1maGsxzOtp6krniLyJyI4_vhp4e0Y/s320/janela+0.3.png)
lines(locpoly(x,y,band=0.1),col="blue")
MAIS UMA DIMINUIÇÃO DA JANELA E A LINHA AJUSTA-SE DE UMA MANEIRA RUIM, POIS FICA "DEFORMADA". O QUE SUGERE QUE OS VALORES DE BOM AJUSTE ESTÃO ENTRE OS ANTERIORES ACIMA.
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEid49TprnlBAHixaizpKIwAYalihBFqE-qgZv5LAk2_22LkU8AxPKYDYM9bbL99AZ28mthNIjLCu_nNaGzNVi3ANnS1DrL74Q0Hbci6yf-ifl6DMuZTa-RFXWH9fr_ngkVJytgqa5q0taE/s320/janela+0.3.png)
____________ESCOLHA DA JANELA - H____________
*QUANDO H VAI PARA INFINITO POLINÔMIO LOCAL IGUAL A AJUSTE LOCAL (EXEMPLO DA RETA)
EXEMPLO: PARA RETA, COM JANELA GRANDE
lines(locpoly(x,y,degree=1,band=10000),col="black")
CASO SEJA USADO UM POLINÔMIO DE GRAU DOIS E UMA JANELA GRANDE O GLOBAL SERIA UM POLINÔMIO E SEGUNDO GRAU, EXEMPLO:
lines(locpoly(x,y,degree=2,band=10000),col="red")
_______DEGREE É O GRAU DO POLINÔMIO QUE VAI SE AJUSTAR..
_____É POSSÍVEL INCLUIR OUTRO GRAU QUE NÃO O AUTOMÁTICO.....FICANDO, POR EXEMPLO, ASSIM:
lines(locpoly(x,y,degree=7,band=0.4),col="black")
Grande Julio!!
ResponderExcluirCara, como voce está iniciando os estudos de econometria nao parametrica ai, vale a pena ler esse livro: Nonparametric Econometrics: Theory and Practice, do Qi Li & Jeffrey Scott Racine.
É muito bom!
Acho que um passo importante é entender bem a teoria! Como exemplo aplicado ao seu post, existe uma vasta literatura sobre a escolha otima do bandwidth. Tenho certeza que existe um comando no R para isso.
Fica a dica.
Grande abraço!
Obrigado Pedro,
ResponderExcluirNo post quis apenas mostrar algum uso, sem me preocupar com a parte teórica ou até mesmo escolha da janela ótima. Puramente de efeito ilustrativo e iniciante.
Agradeço a indicação de literatura (lerei com certeza) e o comentário.
Sobre a escolha de janela ótima, acredito que tenha algo implementado no "R" sim, no exemplo do post quis mostrar que "é possivel trabalhar e como ficam os resultados com a mudaça de janela".
Começo o curso de econometria não-paramétrica agora em março....pretendo daí elaborar posts com mais fundamento teórico aliados a prática.
Abrcs
PS: Tu estás na Espanha não é? Gostaria de trocar uma idéia contigo sobre os estudos aí
meu e-mail é julio_economia@yahoo.com.br
Parabéns Julio!!!
ResponderExcluirAchei muito bom este teu post!
Pra mim que não sei nada de R é muito didático!
Um abração e espero ver outros posts assim!
Gabrielito,
ResponderExcluirA idéia do post é ser didático mesmo....
Nos próximos dias postarei algo sobre MCMC e também sobre bootstrap, com algum exemplo fácil de aplicar ou meramente ilustrativo como o acima.
Abrcs
Legal o post sobre o R!
ResponderExcluir