Перевод модели Eviews в R - PullRequest
0 голосов
/ 23 ноября 2018

Я только начал работать с анализом данных и знаю основы R. Моя компания раньше работала с прогностическими моделями с Eviews, и теперь они попросили меня поместить все это в R, чтобы я также мог запускать модели (у меня нет Eviewsили умеешь им пользоваться!).Кто-нибудь может мне помочь, пожалуйста!Буду также признателен, если у вас есть какие-либо материалы по R.

Код получает файл xls с несколькими переменными.Затем он запускает множество моделей с различными комбинациями этих переменных и сохраняет все в группе (я отображал только первые модели, потому что их больше 100!).Наконец, он рассчитывает MAE и RMSE для каждой из моделей.

Любая помощь приветствуется!Большое спасибо

'##########################################################                 
'#                                      Modelos para PIM                                    
'##########################################################

'Defines working path
cd " "

' Limpa workfile anterior
close pim_linked.wf1
wfcreate(wf=pim_linked,page=origin) m 1991m01 2020m12
delete *

'Lê dados da pim.xls no worksheet origem
read(s=origem,b2) pim.xls 12

' Define tabela para armazenar resultados
table tab_mom
table tab_yoy

'Linha incrementa a cada modelo
!linha = 1

' Escolher x como o numero até o mês da ultima observação da PIM
!x = @dtoo("2018:06")

'Define  ultima data da amostra
%data = @otod(!x)
%dataproj = @otod(!x + 1)



''''Geral
    group modelo_mom{!linha} dlog(y) c dlog(y(-1)) dlog(abcr) dlog(abcr(-1)) dlog(pmi) dlog(pmi(-1)) dlog(aco) dlog(papond) dlog(anf) dlog(ici) dlog(nuci) dlog(energia) _
                                        @seas(1) @seas(2) @seas(3) @seas(4) @seas(5) @seas(6) @seas(7) @seas(8) @seas(9) @seas(10) @seas(11)    
!linha = !linha + 1
group modelo_mom{!linha} dlog(y) c dlog(y(-1)) dlog(abcr) dlog(abcr(-1)) dlog(pmi) dlog(pmi(-1)) dlog(aco) dlog(papond) dlog(anf) dlog(ici) dlog(nuci) _
                                        @seas(1) @seas(2) @seas(3) @seas(4) @seas(5) @seas(6) @seas(7) @seas(8) @seas(9) @seas(10) @seas(11)    
!linha = !linha + 1
group modelo_mom{!linha} dlog(y) c dlog(y(-1)) dlog(abcr) dlog(abcr(-1)) dlog(pmi) dlog(pmi(-1)) dlog(aco) dlog(papond) dlog(anf) dlog(ici) _
                                        @seas(1) @seas(2) @seas(3) @seas(4) @seas(5) @seas(6) @seas(7) @seas(8) @seas(9) @seas(10) @seas(11)    

!fim = !linha

For !i = 1 To !fim
smpl 2002m01 %data  
equation eqt{!i}.ls(n) modelo_mom{!i}

smpl %dataproj %dataproj
eqt{!i}.forecast proj
y(!x + 1) = proj(!x + 1)

smpl 2002m1 %dataproj                                                                               'Amplia amostra para dessazonalizar
y.x12(mode=a,sfile="P:\Macro\X12\omegav03all\x12a\PIMeviews.txt")               'Dessazonaliza série

tab_mom(!i,1) = proj(!x + 1)                                                                            'Armazena projeção para y(!x + 1) na primeira coluna
tab_mom(!i,2) = y_sa(!x + 1)                                                                            'Armazena proj y_sa(!x + 1)
tab_mom(!i,3) = eqt{!i}.@rbar2                                                                          'Armazena R^2 ajustado na terceira coluna
tab_mom(!i,4) = eqt{!i}.@aic
tab_mom(!i,5) = eqt{!i}.@schwarz
'tab_mom(!i,6) = eqt.@dw

'Forecast one month ahear, for 12 months
For !j = 1 To 12
    series pim_frcst
    %ultima_data = @otod(!x - !j)
    %data_previsao = @otod(!x - !j + 1)
    smpl 2002m01 %ultima_data
    equation eqt_f.ls(n) modelo_mom{!i}

    smpl %data_previsao %data_previsao
    eqt_f.forecast pim_forecast
    pim_frcst(!x - !j + 1) = pim_forecast(!x - !j + 1)
Next

smpl 2002m01 %data
genr pimF_errs = pim_frcst - y
genr pimF_errs_sqrt = pimF_errs^2
tab_mom(!i,6) = @sqrt(@mean(pimF_errs_sqrt))
tab_mom(!i,7) = @mean(abs(pimF_errs))
tab_mom(!i,8) = (y_sa(!x+1)/y_sa(!x) - 1)*100                                                   'Armazena variação percentual com ajuste sazonal na quinta coluna

Далее

...