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
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.
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.
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.
____________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
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.
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.
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.
____________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