Arima 循环与 Arima 函数 [R]
Arima loop vs Arima function [R]
我正在尝试构建一个函数,其中我使用 for
循环估计很多 arima
模型。
我得到了 for 循环 运行 并得到了我想要的输出,但是当我尝试将我的代码放入函数中时,我得到了错误。
这是循环:
model_acc <- data.frame()
for (p in 0:4) {
for(d in 0:2){
for (q in 0:4){
model <- arima(data, order=c(p,d,q), method = "ML")
acc <- accuracy(model)
acc <- as.data.frame(acc)
acc_ext <- data.frame(acc,
loglikeli=logLik(model),
AIC=AIC(model),
BIC=BIC(model),
order=paste(p,d,q,sep=","))
acc_ext <- select(acc_ext,
ME, RMSE, MAE, MAPE,loglikeli,AIC,BIC,order)
model_acc <- rbind(model_acc, acc_ext)
}
}
}
我知道由于优化中的限制,有些模型无法使用最大似然法计算。但是这个循环让我得到了 75 个模型中的 61 个模型(仅 method="CSS"
)。我得到了可以计算的模型。
所以我要移动的参数是:data
、p_max
、d_max
、q_max
和 method
。
所以函数是这样的:
which_arima <- function(data, p_max, d_max, q_max, method){
model_acc <- data.frame()
for (p in 0:p_max) {
for(d in 0:d_max){
for (q in 0:q_max){
model <- arima(data, order=c(p,d,q), method = method)
acc <- accuracy(model)
acc <- as.data.frame(acc)
acc_ext <- data.frame(acc,
loglikeli=logLik(model),
AIC=AIC(model),
BIC=BIC(model),
order=paste(p,d,q,sep=","))
acc_ext <- select(acc_ext,
ME, RMSE, MAE, MAPE,loglikeli,AIC,BIC,order)
model_acc <- rbind(model_acc, acc_ext)
}
}
}
return(model_acc)
}
a <- which_arima(data, p_max=4, d_max=2, q_max=4, method="ML")
但是当我执行的时候,我得到这个错误(指无法计算的模型)并且没有得到任何东西。 (在for循环中只有我得到了可以计算的模型)。
Error in optim(init[mask], armafn, method = optim.method, hessian = TRUE, :
non-finite finite-difference value [4]
In addition: Warning messages:
1: In arima(data, order = c(p, d, q), method = method) :
possible convergence problem: optim gave code = 1
2: In arima(data, order = c(p, d, q), method = method) :
possible convergence problem: optim gave code = 1
3: In log(s2) : NaNs produced
4: In log(s2) : NaNs produced
Called from: optim(init[mask], armafn, method = optim.method, hessian = TRUE,
control = optim.control, trans = as.logical(transform.pars))
Browse[1]> Q
出了什么问题?因为没有功能环境工作“很好”。更重要的是,我该如何解决这个问题?
提前致谢!!
这是数据:
> dput(data)
structure(c(1.04885832686158, 1.06016074629379, 1.0517956106758,
1.02907998600003, 1.05054370620123, 1.07261670636915, 1.0706491823234,
1.0851355199628, 1.08488055975672, 1.08085233559646, 1.081489249884,
1.08587205516048, 1.07249155362154, 1.05497731364761, 1.05675866316574,
1.06428371643968, 1.06065865122313, 1.05621234529568, 1.05339905298902,
1.05787030302435, 1.0658034000068, 1.08707776713932, 1.08626056161822,
1.10238697375394, 1.11390088086972, 1.12120513732074, 1.11937921359653,
1.10341241626668, 1.1156190247407, 1.12376155972358, 1.12411603174635,
1.12183475077377, 1.12994175229071, 1.12956170931204, 1.12199732095331,
1.11645064755987, 1.12481242467782, 1.13066151473637, 1.13028712061827,
1.12694056065497, 1.12382226475179, 1.12352013167586, 1.13391069257413,
1.14763982976838, 1.14481816405703, 1.14852949174863, 1.14182560351963,
1.14086563926171, 1.14491904045717, 1.14897189333479, 1.14616964486707,
1.15074750127031, 1.14681353487065, 1.11151754535415, 1.10497749493861,
1.10963378437214, 1.12415745716768, 1.17507535290893, 1.20285968503846,
1.22784769136553, 1.23940795216891, 1.254741010879, 1.29442450660416,
1.30428779451896, 1.31314618462517, 1.32544236970695, 1.33728107423435,
1.34408499591568, 1.34199331033196, 1.34027541040719, 1.33616830504407,
1.33360421057602, 1.33332422301893, 1.34717794252774, 1.3502492092262,
1.35168291803248, 1.35827816606688, 1.36772644852242, 1.36755741578293,
1.36926148542701, 1.37264481021763, 1.37322962601678, 1.37643913938007,
1.37906284181634, 1.37644362054554, 1.38911039237937, 1.39412557349575,
1.40094895608589, 1.40630864159528, 1.40823485306921, 1.4138446752069,
1.42340582796496, 1.43641264727375, 1.43605231080207, 1.44839810240334,
1.45451041581127, 1.46166006472498, 1.46774816064695, 1.46930608347752,
1.47885183796249, 1.49059366171423, 1.49849145403671, 1.51209667142067,
1.5250141727637, 1.5392257264567, 1.55144303632514, 1.56488453313021,
1.58308777691125, 1.59737589266492, 1.60896279958586, 1.62553339664661,
1.63594174408691, 1.65233080464302, 1.67114336171075, 1.6897476078746,
1.71673790971729, 1.74453973794979, 1.76317526009814, 1.79187692264759,
1.84186982937622, 1.9460629324144, 2.05986108970089, 2.06767436493269,
2.0783176148561, 2.08271855277262, 2.09358626977224, 2.09674958523685,
2.11582742548029, 2.12810020369675, 2.13596929171732, 2.13972610568317,
2.14456803530813, 2.15013985201827, 2.16007349878874, 2.17165498940627,
2.18057666565755, 2.19162746118342, 2.20308765886345, 2.21304799942168,
2.22367586966847, 2.23629862083737, 2.24751866055731, 2.26100586740225,
2.40972893063106, 2.60366275683037, 2.68572993101095, 2.70501080420283,
2.6676315643757, 2.6479269687206, 2.64641010174172, 2.69966594490103,
2.69665303568271, 2.71396750774502, 2.71900427132191, 2.72876269360869,
2.76276620421252, 2.76620189252239, 2.74632816231219, 2.74196673817286,
2.72905831066292, 2.75190757584346, 2.77801573354251, 2.84089580821293,
2.85681823660541, 2.84754572013613, 2.85858396073969, 2.86184353545653,
2.86958309986952, 2.94279115543111, 2.98631808884879, 3.00648449252989,
3.00620698598987, 3.15207693676406, 3.27614511764022, 3.32011714920345,
3.39367422894347, 3.64822360464499, 3.61835354049394, 3.59374251055335,
3.63237359915986, 3.62209957896007, 3.64554153297999, 3.71611226971083,
3.76031231050606, 3.80307769833913, 3.77959145461296, 3.74772344909971,
3.95072671083008, 4.03652777624058, 4.06630193640976, 4.08838169421096,
4.09074775372752, 4.09286687677964, 4.11466378890098, 4.14350067096966,
4.18153835521181, 4.21299240125327, 4.23975062689892, 4.26683207875595,
4.29265054707555, 4.31835343358436, 4.34946580314932, 4.37865522989399,
4.41294135451665), .Dim = c(204L, 1L), .Dimnames = list(NULL,
"price"), .Tsp = c(2004, 2020.91666666667, 12), class = "ts")
我们可以在函数中添加一个tryCatch
which_arima <- function(data, p_max, d_max, q_max, method){
model_acc <- data.frame()
for (p in 0:p_max) {
for(d in 0:d_max){
for (q in 0:q_max){
tryCatch({
model <- arima(data, order=c(p,d,q), method = method)
acc <- accuracy(model)
acc <- as.data.frame(acc)
acc_ext <- data.frame(acc,
loglikeli=logLik(model),
AIC=AIC(model),
BIC=BIC(model),
order=paste(p,d,q,sep=","))
acc_ext <- select(acc_ext,
ME, RMSE, MAE, MAPE,loglikeli,AIC,BIC,order)
model_acc <- rbind(model_acc, acc_ext)
}, error = function(e) NA)
}
}
}
return(model_acc)
}
-测试
a <- which_arima(data, p_max=4, d_max=2, q_max=4, method="ML")
-输出
> a
ME RMSE MAE MAPE loglikeli AIC BIC order
Training set 3.916595e-14 1.00150757 0.84665890 47.3734354 -289.77077 583.54155 590.17779 0,0,0
Training set1 1.507413e-03 0.50685119 0.42608540 23.8330904 -153.49920 312.99840 322.95276 0,0,1
Training set2 1.477754e-03 0.27462038 0.23150111 12.9162286 -31.20907 70.41814 83.69062 0,0,2
Training set3 1.349691e-03 0.16826013 0.13265807 7.3234273 67.17326 -124.34652 -107.75592 0,0,3
Training set4 1.205197e-03 0.12347033 0.09404764 5.1708085 132.56865 -253.13729 -233.22857 0,0,4
Training set5 1.649574e-02 0.03945226 0.02063318 0.9365795 367.68785 -733.37570 -730.06250 0,1,0
Training set6 1.103986e-02 0.03456075 0.01736215 0.7957414 394.41586 -784.83172 -778.20531 0,1,1
Training set7 1.033720e-02 0.03443721 0.01713550 0.7848747 395.13798 -784.27595 -774.33634 0,1,2
Training set8 9.546954e-03 0.03417545 0.01651661 0.7683963 396.69035 -785.38071 -772.12788 0,1,3
Training set9 8.268413e-03 0.03353547 0.01710311 0.7855244 400.43015 -790.86030 -774.29427 0,1,4
Training set10 1.081905e-04 0.03982073 0.01849307 0.8429273 363.50025 -725.00049 -721.69223 0,2,0
Training set11 2.800510e-03 0.03429965 0.01750163 0.8103622 392.52320 -781.04639 -774.42986 0,2,1
Training set12 2.920421e-03 0.03214346 0.01515181 0.7129633 405.66898 -805.33795 -795.41315 0,2,2
Training set13 2.915234e-03 0.03206868 0.01541923 0.7234715 406.11610 -804.23221 -790.99914 0,2,3
Training set14 2.915216e-03 0.03206786 0.01543761 0.7239875 406.11852 -802.23704 -785.69571 0,2,4
Training set15 1.609540e-02 0.03954680 0.02075934 0.9489873 365.76961 -725.53923 -715.58487 1,0,0
Training set16 1.067822e-02 0.03464237 0.01747532 0.8057485 392.50610 -777.01221 -763.73973 1,0,1
Training set17 7.714409e-03 0.03500020 0.01712196 0.8100354 390.85979 -771.71958 -755.12898 1,0,2
Training set18 9.510129e-03 0.03417676 0.01653561 0.7702435 398.64834 -785.29668 -765.38796 1,0,3
Training set19 9.299540e-03 0.03407723 0.01644942 0.7661016 399.22596 -784.45192 -761.22508 1,0,4
Training set20 8.521452e-03 0.03440107 0.01658612 0.7665062 395.36364 -786.72729 -780.10088 1,1,0
Training set21 9.502976e-03 0.03434348 0.01673934 0.7705014 395.69269 -785.38538 -775.44577 1,1,1
Training set22 3.638516e-03 0.03220174 0.01508764 0.7126483 408.13770 -808.27541 -795.02259 1,1,2
Training set23 3.626362e-03 0.03212825 0.01534293 0.7227711 408.58054 -807.16108 -790.59505 1,1,3
Training set24 8.353323e-03 0.03319389 0.01722817 0.8063780 402.38983 -792.77965 -772.90042 1,1,4
Training set25 1.322429e-04 0.03862934 0.01853910 0.8452931 369.60607 -735.21213 -728.59560 1,2,0
Training set26 2.950783e-03 0.03271462 0.01554742 0.7271035 402.15143 -798.30287 -788.37806 1,2,1
Training set27 2.918645e-03 0.03207500 0.01535616 0.7214170 406.08191 -804.16382 -790.93075 1,2,2
Training set28 2.915432e-03 0.03206844 0.01542446 0.7236258 406.11678 -802.23356 -785.69222 1,2,3
Training set29 2.892408e-03 0.03184546 0.01585528 0.7398747 407.44682 -802.89365 -783.04404 1,2,4
Training set30 3.275778e-02 0.06802502 0.03811120 1.7010099 257.85907 -507.71814 -494.44566 2,0,0
Training set31 9.458801e-03 0.03434793 0.01677640 0.7737224 397.64430 -785.28860 -768.69800 2,0,1
Training set32 1.041047e-02 0.03449857 0.01757479 0.8092751 393.34656 -774.69312 -754.78440 2,0,2
Training set33 1.036041e-02 0.03438249 0.01712067 0.7851881 397.17474 -780.34949 -757.12265 2,0,3
Training set34 9.291907e-03 0.03413569 0.01668650 0.7780739 395.47305 -774.94611 -748.40115 2,0,4
Training set35 8.657322e-03 0.03439622 0.01656361 0.7657220 395.39192 -784.78384 -774.84422 2,1,0
Training set36 8.975188e-03 0.03415064 0.01646538 0.7625588 396.82841 -785.65683 -772.40401 2,1,1
Training set37 3.623756e-03 0.03213180 0.01528195 0.7207391 408.54688 -807.09376 -790.52773 2,1,2
Training set38 3.632392e-03 0.03218922 0.01509295 0.7124041 408.20813 -804.41627 -784.53703 2,1,3
Training set39 3.593594e-03 0.03190425 0.01582339 0.7407521 409.90942 -805.81883 -782.62639 2,1,4
Training set40 2.046999e-04 0.03534316 0.01743186 0.8004223 387.39069 -768.78138 -758.85658 2,2,0
Training set41 2.900379e-03 0.03229554 0.01543942 0.7252999 404.68622 -801.37243 -788.13936 2,2,1
Training set42 2.912130e-03 0.03206051 0.01549744 0.7258632 406.16110 -802.32220 -785.78086 2,2,2
Training set43 2.748199e-03 0.03106662 0.01710118 0.8027724 411.95382 -811.90764 -792.05804 2,2,3
Training set44 2.757572e-03 0.03048849 0.01571731 0.7454319 413.92678 -813.85355 -790.69568 2,2,4
Training set45 8.190706e-03 0.03447649 0.01665674 0.7750253 393.49946 -776.99891 -760.40831 3,0,0
Training set46 8.485733e-03 0.03422971 0.01656490 0.7726290 394.93100 -777.86199 -757.95327 3,0,1
Training set47 9.212683e-03 0.03436951 0.01678990 0.7781612 393.54762 -773.09523 -749.86839 3,0,2
Training set48 8.721991e-03 0.03406162 0.01638032 0.7597073 399.31535 -782.63070 -756.08574 3,0,3
Training set49 -1.095108e-03 0.03200273 0.01626031 0.8020173 407.59681 -797.19361 -767.33053 3,0,4
Training set50 6.642458e-03 0.03334238 0.01646485 0.7579776 401.61737 -795.23474 -781.98192 3,1,0
Training set51 3.614071e-03 0.03235398 0.01536258 0.7247132 407.14878 -804.29756 -787.73153 3,1,1
Training set52 3.626052e-03 0.03212051 0.01541776 0.7251026 408.62481 -805.24962 -785.37038 3,1,2
Training set53 3.434470e-03 0.03112232 0.01708791 0.8047847 414.43876 -814.87751 -791.68507 3,1,3
Training set54 3.429177e-03 0.03037721 0.01633882 0.7892697 417.28525 -818.57050 -792.06486 3,1,4
Training set55 2.343659e-04 0.03506668 0.01740936 0.7937255 388.95388 -769.90777 -756.67470 3,2,0
Training set56 2.921378e-03 0.03207232 0.01556489 0.7249596 406.11547 -802.23095 -785.68961 3,2,1
Training set57 2.923439e-03 0.03200307 0.01554917 0.7264361 406.53973 -801.07945 -781.22984 3,2,2
Training set58 2.772438e-03 0.03033715 0.01644824 0.7949022 414.69079 -815.38158 -792.22370 3,2,3
Training set59 2.758142e-03 0.03032083 0.01638087 0.7893286 414.81461 -813.62923 -787.16309 3,2,4
Training set60 6.105981e-03 0.03341497 0.01657335 0.7683822 399.75129 -787.50258 -767.59386 4,0,0
Training set61 7.918597e-03 0.03223310 0.01733992 0.8410424 404.54182 -793.08364 -766.53868 4,0,2
Training set62 3.580192e-03 0.03210903 0.01545304 0.7266964 410.69767 -803.39533 -773.53225 4,0,3
Training set63 9.682367e-03 0.03234607 0.01684835 0.8031973 407.24757 -794.49514 -761.31394 4,0,4
Training set64 6.558516e-03 0.03333914 0.01646740 0.7571758 401.63677 -793.27354 -776.70751 4,1,0
Training set65 6.614327e-03 0.03334172 0.01646714 0.7576681 401.62115 -791.24231 -771.36307 4,1,1
Training set66 3.601945e-03 0.03225054 0.01523192 0.7204685 407.38418 -800.76837 -777.57593 4,1,2
Training set67 3.435674e-03 0.03038226 0.01636894 0.7939351 417.16875 -818.33749 -791.83184 4,1,3
Training set68 3.441183e-03 0.03057401 0.01590164 0.7605592 416.07385 -814.14770 -784.32885 4,1,4
Training set69 2.783446e-04 0.03453279 0.01699742 0.7813553 391.99285 -773.98571 -757.44437 4,2,0
Training set70 2.922130e-03 0.03191875 0.01548585 0.7279757 407.03673 -802.07347 -782.22386 4,2,1
Training set71 2.921712e-03 0.03191246 0.01550785 0.7286895 407.07153 -800.14306 -776.98519 4,2,2
Training set72 2.757144e-03 0.03032018 0.01638662 0.7906756 414.79253 -813.58506 -787.11892 4,2,3
Training set73 2.776647e-03 0.03052505 0.01588780 0.7626634 413.36293 -808.72586 -778.95146 4,2,4
我正在尝试构建一个函数,其中我使用 for
循环估计很多 arima
模型。
我得到了 for 循环 运行 并得到了我想要的输出,但是当我尝试将我的代码放入函数中时,我得到了错误。
这是循环:
model_acc <- data.frame()
for (p in 0:4) {
for(d in 0:2){
for (q in 0:4){
model <- arima(data, order=c(p,d,q), method = "ML")
acc <- accuracy(model)
acc <- as.data.frame(acc)
acc_ext <- data.frame(acc,
loglikeli=logLik(model),
AIC=AIC(model),
BIC=BIC(model),
order=paste(p,d,q,sep=","))
acc_ext <- select(acc_ext,
ME, RMSE, MAE, MAPE,loglikeli,AIC,BIC,order)
model_acc <- rbind(model_acc, acc_ext)
}
}
}
我知道由于优化中的限制,有些模型无法使用最大似然法计算。但是这个循环让我得到了 75 个模型中的 61 个模型(仅 method="CSS"
)。我得到了可以计算的模型。
所以我要移动的参数是:data
、p_max
、d_max
、q_max
和 method
。
所以函数是这样的:
which_arima <- function(data, p_max, d_max, q_max, method){
model_acc <- data.frame()
for (p in 0:p_max) {
for(d in 0:d_max){
for (q in 0:q_max){
model <- arima(data, order=c(p,d,q), method = method)
acc <- accuracy(model)
acc <- as.data.frame(acc)
acc_ext <- data.frame(acc,
loglikeli=logLik(model),
AIC=AIC(model),
BIC=BIC(model),
order=paste(p,d,q,sep=","))
acc_ext <- select(acc_ext,
ME, RMSE, MAE, MAPE,loglikeli,AIC,BIC,order)
model_acc <- rbind(model_acc, acc_ext)
}
}
}
return(model_acc)
}
a <- which_arima(data, p_max=4, d_max=2, q_max=4, method="ML")
但是当我执行的时候,我得到这个错误(指无法计算的模型)并且没有得到任何东西。 (在for循环中只有我得到了可以计算的模型)。
Error in optim(init[mask], armafn, method = optim.method, hessian = TRUE, :
non-finite finite-difference value [4]
In addition: Warning messages:
1: In arima(data, order = c(p, d, q), method = method) :
possible convergence problem: optim gave code = 1
2: In arima(data, order = c(p, d, q), method = method) :
possible convergence problem: optim gave code = 1
3: In log(s2) : NaNs produced
4: In log(s2) : NaNs produced
Called from: optim(init[mask], armafn, method = optim.method, hessian = TRUE,
control = optim.control, trans = as.logical(transform.pars))
Browse[1]> Q
出了什么问题?因为没有功能环境工作“很好”。更重要的是,我该如何解决这个问题?
提前致谢!!
这是数据:
> dput(data)
structure(c(1.04885832686158, 1.06016074629379, 1.0517956106758,
1.02907998600003, 1.05054370620123, 1.07261670636915, 1.0706491823234,
1.0851355199628, 1.08488055975672, 1.08085233559646, 1.081489249884,
1.08587205516048, 1.07249155362154, 1.05497731364761, 1.05675866316574,
1.06428371643968, 1.06065865122313, 1.05621234529568, 1.05339905298902,
1.05787030302435, 1.0658034000068, 1.08707776713932, 1.08626056161822,
1.10238697375394, 1.11390088086972, 1.12120513732074, 1.11937921359653,
1.10341241626668, 1.1156190247407, 1.12376155972358, 1.12411603174635,
1.12183475077377, 1.12994175229071, 1.12956170931204, 1.12199732095331,
1.11645064755987, 1.12481242467782, 1.13066151473637, 1.13028712061827,
1.12694056065497, 1.12382226475179, 1.12352013167586, 1.13391069257413,
1.14763982976838, 1.14481816405703, 1.14852949174863, 1.14182560351963,
1.14086563926171, 1.14491904045717, 1.14897189333479, 1.14616964486707,
1.15074750127031, 1.14681353487065, 1.11151754535415, 1.10497749493861,
1.10963378437214, 1.12415745716768, 1.17507535290893, 1.20285968503846,
1.22784769136553, 1.23940795216891, 1.254741010879, 1.29442450660416,
1.30428779451896, 1.31314618462517, 1.32544236970695, 1.33728107423435,
1.34408499591568, 1.34199331033196, 1.34027541040719, 1.33616830504407,
1.33360421057602, 1.33332422301893, 1.34717794252774, 1.3502492092262,
1.35168291803248, 1.35827816606688, 1.36772644852242, 1.36755741578293,
1.36926148542701, 1.37264481021763, 1.37322962601678, 1.37643913938007,
1.37906284181634, 1.37644362054554, 1.38911039237937, 1.39412557349575,
1.40094895608589, 1.40630864159528, 1.40823485306921, 1.4138446752069,
1.42340582796496, 1.43641264727375, 1.43605231080207, 1.44839810240334,
1.45451041581127, 1.46166006472498, 1.46774816064695, 1.46930608347752,
1.47885183796249, 1.49059366171423, 1.49849145403671, 1.51209667142067,
1.5250141727637, 1.5392257264567, 1.55144303632514, 1.56488453313021,
1.58308777691125, 1.59737589266492, 1.60896279958586, 1.62553339664661,
1.63594174408691, 1.65233080464302, 1.67114336171075, 1.6897476078746,
1.71673790971729, 1.74453973794979, 1.76317526009814, 1.79187692264759,
1.84186982937622, 1.9460629324144, 2.05986108970089, 2.06767436493269,
2.0783176148561, 2.08271855277262, 2.09358626977224, 2.09674958523685,
2.11582742548029, 2.12810020369675, 2.13596929171732, 2.13972610568317,
2.14456803530813, 2.15013985201827, 2.16007349878874, 2.17165498940627,
2.18057666565755, 2.19162746118342, 2.20308765886345, 2.21304799942168,
2.22367586966847, 2.23629862083737, 2.24751866055731, 2.26100586740225,
2.40972893063106, 2.60366275683037, 2.68572993101095, 2.70501080420283,
2.6676315643757, 2.6479269687206, 2.64641010174172, 2.69966594490103,
2.69665303568271, 2.71396750774502, 2.71900427132191, 2.72876269360869,
2.76276620421252, 2.76620189252239, 2.74632816231219, 2.74196673817286,
2.72905831066292, 2.75190757584346, 2.77801573354251, 2.84089580821293,
2.85681823660541, 2.84754572013613, 2.85858396073969, 2.86184353545653,
2.86958309986952, 2.94279115543111, 2.98631808884879, 3.00648449252989,
3.00620698598987, 3.15207693676406, 3.27614511764022, 3.32011714920345,
3.39367422894347, 3.64822360464499, 3.61835354049394, 3.59374251055335,
3.63237359915986, 3.62209957896007, 3.64554153297999, 3.71611226971083,
3.76031231050606, 3.80307769833913, 3.77959145461296, 3.74772344909971,
3.95072671083008, 4.03652777624058, 4.06630193640976, 4.08838169421096,
4.09074775372752, 4.09286687677964, 4.11466378890098, 4.14350067096966,
4.18153835521181, 4.21299240125327, 4.23975062689892, 4.26683207875595,
4.29265054707555, 4.31835343358436, 4.34946580314932, 4.37865522989399,
4.41294135451665), .Dim = c(204L, 1L), .Dimnames = list(NULL,
"price"), .Tsp = c(2004, 2020.91666666667, 12), class = "ts")
我们可以在函数中添加一个tryCatch
which_arima <- function(data, p_max, d_max, q_max, method){
model_acc <- data.frame()
for (p in 0:p_max) {
for(d in 0:d_max){
for (q in 0:q_max){
tryCatch({
model <- arima(data, order=c(p,d,q), method = method)
acc <- accuracy(model)
acc <- as.data.frame(acc)
acc_ext <- data.frame(acc,
loglikeli=logLik(model),
AIC=AIC(model),
BIC=BIC(model),
order=paste(p,d,q,sep=","))
acc_ext <- select(acc_ext,
ME, RMSE, MAE, MAPE,loglikeli,AIC,BIC,order)
model_acc <- rbind(model_acc, acc_ext)
}, error = function(e) NA)
}
}
}
return(model_acc)
}
-测试
a <- which_arima(data, p_max=4, d_max=2, q_max=4, method="ML")
-输出
> a
ME RMSE MAE MAPE loglikeli AIC BIC order
Training set 3.916595e-14 1.00150757 0.84665890 47.3734354 -289.77077 583.54155 590.17779 0,0,0
Training set1 1.507413e-03 0.50685119 0.42608540 23.8330904 -153.49920 312.99840 322.95276 0,0,1
Training set2 1.477754e-03 0.27462038 0.23150111 12.9162286 -31.20907 70.41814 83.69062 0,0,2
Training set3 1.349691e-03 0.16826013 0.13265807 7.3234273 67.17326 -124.34652 -107.75592 0,0,3
Training set4 1.205197e-03 0.12347033 0.09404764 5.1708085 132.56865 -253.13729 -233.22857 0,0,4
Training set5 1.649574e-02 0.03945226 0.02063318 0.9365795 367.68785 -733.37570 -730.06250 0,1,0
Training set6 1.103986e-02 0.03456075 0.01736215 0.7957414 394.41586 -784.83172 -778.20531 0,1,1
Training set7 1.033720e-02 0.03443721 0.01713550 0.7848747 395.13798 -784.27595 -774.33634 0,1,2
Training set8 9.546954e-03 0.03417545 0.01651661 0.7683963 396.69035 -785.38071 -772.12788 0,1,3
Training set9 8.268413e-03 0.03353547 0.01710311 0.7855244 400.43015 -790.86030 -774.29427 0,1,4
Training set10 1.081905e-04 0.03982073 0.01849307 0.8429273 363.50025 -725.00049 -721.69223 0,2,0
Training set11 2.800510e-03 0.03429965 0.01750163 0.8103622 392.52320 -781.04639 -774.42986 0,2,1
Training set12 2.920421e-03 0.03214346 0.01515181 0.7129633 405.66898 -805.33795 -795.41315 0,2,2
Training set13 2.915234e-03 0.03206868 0.01541923 0.7234715 406.11610 -804.23221 -790.99914 0,2,3
Training set14 2.915216e-03 0.03206786 0.01543761 0.7239875 406.11852 -802.23704 -785.69571 0,2,4
Training set15 1.609540e-02 0.03954680 0.02075934 0.9489873 365.76961 -725.53923 -715.58487 1,0,0
Training set16 1.067822e-02 0.03464237 0.01747532 0.8057485 392.50610 -777.01221 -763.73973 1,0,1
Training set17 7.714409e-03 0.03500020 0.01712196 0.8100354 390.85979 -771.71958 -755.12898 1,0,2
Training set18 9.510129e-03 0.03417676 0.01653561 0.7702435 398.64834 -785.29668 -765.38796 1,0,3
Training set19 9.299540e-03 0.03407723 0.01644942 0.7661016 399.22596 -784.45192 -761.22508 1,0,4
Training set20 8.521452e-03 0.03440107 0.01658612 0.7665062 395.36364 -786.72729 -780.10088 1,1,0
Training set21 9.502976e-03 0.03434348 0.01673934 0.7705014 395.69269 -785.38538 -775.44577 1,1,1
Training set22 3.638516e-03 0.03220174 0.01508764 0.7126483 408.13770 -808.27541 -795.02259 1,1,2
Training set23 3.626362e-03 0.03212825 0.01534293 0.7227711 408.58054 -807.16108 -790.59505 1,1,3
Training set24 8.353323e-03 0.03319389 0.01722817 0.8063780 402.38983 -792.77965 -772.90042 1,1,4
Training set25 1.322429e-04 0.03862934 0.01853910 0.8452931 369.60607 -735.21213 -728.59560 1,2,0
Training set26 2.950783e-03 0.03271462 0.01554742 0.7271035 402.15143 -798.30287 -788.37806 1,2,1
Training set27 2.918645e-03 0.03207500 0.01535616 0.7214170 406.08191 -804.16382 -790.93075 1,2,2
Training set28 2.915432e-03 0.03206844 0.01542446 0.7236258 406.11678 -802.23356 -785.69222 1,2,3
Training set29 2.892408e-03 0.03184546 0.01585528 0.7398747 407.44682 -802.89365 -783.04404 1,2,4
Training set30 3.275778e-02 0.06802502 0.03811120 1.7010099 257.85907 -507.71814 -494.44566 2,0,0
Training set31 9.458801e-03 0.03434793 0.01677640 0.7737224 397.64430 -785.28860 -768.69800 2,0,1
Training set32 1.041047e-02 0.03449857 0.01757479 0.8092751 393.34656 -774.69312 -754.78440 2,0,2
Training set33 1.036041e-02 0.03438249 0.01712067 0.7851881 397.17474 -780.34949 -757.12265 2,0,3
Training set34 9.291907e-03 0.03413569 0.01668650 0.7780739 395.47305 -774.94611 -748.40115 2,0,4
Training set35 8.657322e-03 0.03439622 0.01656361 0.7657220 395.39192 -784.78384 -774.84422 2,1,0
Training set36 8.975188e-03 0.03415064 0.01646538 0.7625588 396.82841 -785.65683 -772.40401 2,1,1
Training set37 3.623756e-03 0.03213180 0.01528195 0.7207391 408.54688 -807.09376 -790.52773 2,1,2
Training set38 3.632392e-03 0.03218922 0.01509295 0.7124041 408.20813 -804.41627 -784.53703 2,1,3
Training set39 3.593594e-03 0.03190425 0.01582339 0.7407521 409.90942 -805.81883 -782.62639 2,1,4
Training set40 2.046999e-04 0.03534316 0.01743186 0.8004223 387.39069 -768.78138 -758.85658 2,2,0
Training set41 2.900379e-03 0.03229554 0.01543942 0.7252999 404.68622 -801.37243 -788.13936 2,2,1
Training set42 2.912130e-03 0.03206051 0.01549744 0.7258632 406.16110 -802.32220 -785.78086 2,2,2
Training set43 2.748199e-03 0.03106662 0.01710118 0.8027724 411.95382 -811.90764 -792.05804 2,2,3
Training set44 2.757572e-03 0.03048849 0.01571731 0.7454319 413.92678 -813.85355 -790.69568 2,2,4
Training set45 8.190706e-03 0.03447649 0.01665674 0.7750253 393.49946 -776.99891 -760.40831 3,0,0
Training set46 8.485733e-03 0.03422971 0.01656490 0.7726290 394.93100 -777.86199 -757.95327 3,0,1
Training set47 9.212683e-03 0.03436951 0.01678990 0.7781612 393.54762 -773.09523 -749.86839 3,0,2
Training set48 8.721991e-03 0.03406162 0.01638032 0.7597073 399.31535 -782.63070 -756.08574 3,0,3
Training set49 -1.095108e-03 0.03200273 0.01626031 0.8020173 407.59681 -797.19361 -767.33053 3,0,4
Training set50 6.642458e-03 0.03334238 0.01646485 0.7579776 401.61737 -795.23474 -781.98192 3,1,0
Training set51 3.614071e-03 0.03235398 0.01536258 0.7247132 407.14878 -804.29756 -787.73153 3,1,1
Training set52 3.626052e-03 0.03212051 0.01541776 0.7251026 408.62481 -805.24962 -785.37038 3,1,2
Training set53 3.434470e-03 0.03112232 0.01708791 0.8047847 414.43876 -814.87751 -791.68507 3,1,3
Training set54 3.429177e-03 0.03037721 0.01633882 0.7892697 417.28525 -818.57050 -792.06486 3,1,4
Training set55 2.343659e-04 0.03506668 0.01740936 0.7937255 388.95388 -769.90777 -756.67470 3,2,0
Training set56 2.921378e-03 0.03207232 0.01556489 0.7249596 406.11547 -802.23095 -785.68961 3,2,1
Training set57 2.923439e-03 0.03200307 0.01554917 0.7264361 406.53973 -801.07945 -781.22984 3,2,2
Training set58 2.772438e-03 0.03033715 0.01644824 0.7949022 414.69079 -815.38158 -792.22370 3,2,3
Training set59 2.758142e-03 0.03032083 0.01638087 0.7893286 414.81461 -813.62923 -787.16309 3,2,4
Training set60 6.105981e-03 0.03341497 0.01657335 0.7683822 399.75129 -787.50258 -767.59386 4,0,0
Training set61 7.918597e-03 0.03223310 0.01733992 0.8410424 404.54182 -793.08364 -766.53868 4,0,2
Training set62 3.580192e-03 0.03210903 0.01545304 0.7266964 410.69767 -803.39533 -773.53225 4,0,3
Training set63 9.682367e-03 0.03234607 0.01684835 0.8031973 407.24757 -794.49514 -761.31394 4,0,4
Training set64 6.558516e-03 0.03333914 0.01646740 0.7571758 401.63677 -793.27354 -776.70751 4,1,0
Training set65 6.614327e-03 0.03334172 0.01646714 0.7576681 401.62115 -791.24231 -771.36307 4,1,1
Training set66 3.601945e-03 0.03225054 0.01523192 0.7204685 407.38418 -800.76837 -777.57593 4,1,2
Training set67 3.435674e-03 0.03038226 0.01636894 0.7939351 417.16875 -818.33749 -791.83184 4,1,3
Training set68 3.441183e-03 0.03057401 0.01590164 0.7605592 416.07385 -814.14770 -784.32885 4,1,4
Training set69 2.783446e-04 0.03453279 0.01699742 0.7813553 391.99285 -773.98571 -757.44437 4,2,0
Training set70 2.922130e-03 0.03191875 0.01548585 0.7279757 407.03673 -802.07347 -782.22386 4,2,1
Training set71 2.921712e-03 0.03191246 0.01550785 0.7286895 407.07153 -800.14306 -776.98519 4,2,2
Training set72 2.757144e-03 0.03032018 0.01638662 0.7906756 414.79253 -813.58506 -787.11892 4,2,3
Training set73 2.776647e-03 0.03052505 0.01588780 0.7626634 413.36293 -808.72586 -778.95146 4,2,4