2014-01-10 2 views
0

여러 timeseries에서 루프를 실행 중입니다. 부정적인 예측을 받았기 때문에 긍정적 인 예측을 엄격히 준수하기 위해 Lambda=0을 사용하는 것이 좋습니다.R 일괄 예측 음수 값

1 시간 동안이 작업을 수행하면 완벽하게 작동합니다. 순간부터 루프에서 오류가 발생합니다. 난 수신 오류 :

pegelsresid.C (Y, m, init.state, ERRORTYPE, trendtype, seasontype, 오류가 외국 함수 호출 NA/NaN이/Inf를 (ARG 1)

는 R 코드는 다음 시계열의

데이터는 : I 람다 = 0없이 예측을 실행하는 경우, 예측 (= 음의 값)이다

StartYear<-2011 

StartMonth<-1 

DataTimeSeries.ts <- ts(DataTimeSeries, frequency = 12,start=c(StartYear,StartMonth)) 



    1121407 H 650270 14144690 17155531 500054691 H 650230 
Jan 2011  17  0  6  8   0  0 
Feb 2011  5  0  6  5   0  0 
Mar 2011  19  0  2  0   1  3 
Apr 2011  7  0  2  3   5  7 
May 2011  7  0  3  26   3  5 
Jun 2011  3  0  1  1   0  0 
Jul 2011  10  3  4  2   0  0 
Aug 2011  9  1  3  1   0  0 
Sep 2011  14  0  5  8   2  7 
Oct 2011  17  0  11  6   1  0 
Nov 2011  11  1  2  2   0  0 
Dec 2011  75  12  131  0   0  3 
Jan 2012  13  1  3  2   1  7 
Feb 2012  8  0  5  2   0  0 
Mar 2012  14  0  3  4   0  0 
Apr 2012  8  0  1  6   0  0 
May 2012  8  0  4  2   0  0 
Jun 2012  11  0  6  0   0  0 
Jul 2012  10  3  5  3   0  0 
Aug 2012  10  1  6  5   0  0 
Sep 2012  16  0  5  3   0  0 
Oct 2012  3  0  2  0   0  0 
Nov 2012  14  1  2  2   1  0 
Dec 2012  11  46  5  0   1  0 
Jan 2013  7  1  1  2   0  2 
Feb 2013  9  1  5  2   0  0 
Mar 2013  17  0  6  1   0  0 
Apr 2013  8  0  3  0   0  0 
May 2013  17  2  2  4   0  0 
Jun 2013  1  1  2  0   0  0 

ns <- ncol(DataTimeSeries.ts) 
rows <-nrow(DataTimeSeries.ts) 


Forecast <- matrix(NA,nrow=h,ncol=ns) 

for(i in 1:ns) 
    Forecast[,i] <- forecast(DataTimeSeries.ts[,i], lambda=0,h=h)$mean 

:

[,1]  [,2]  [,3]  [,4]  [,5]  [,6] 
[1,] 9.887062 4.4379429 3.1059891 0.24696736 -0.3792315 -0.5448469 
[2,] 8.951653 0.3544301 2.2218957 0.04790458 -0.4395805 -0.6557000 
[3,] 10.787565 -1.8823119 4.6116380 -0.15115820 -0.4999294 -0.7665531 
[4,] 12.802994 -3.9683800 6.5737599 -0.35022098 -0.5602784 -0.8774062 
[5,] 7.916042 0.3676410 -1.0954609 -0.54928376 -0.6206273 -0.9882593 
[6,] 75.723475 26.5071178 117.7545308 -0.74834654 -0.6809763 -1.0991124 
[7,] -23.604058 -1.3480372 -26.4102628 -0.94740932 -0.7413252 -1.2099654 
[8,] 6.693199 3.0567211 4.2765418 -1.14647211 -0.8016742 -1.3208185 
[9,] 16.689538 0.5293152 2.0234525 -1.34553489 -0.8620231 -1.4316716 
[10,] 5.771219 -0.9780367 0.9339003 -1.54459767 -0.9223721 -1.5425247 
[11,] 9.055315 2.4255619 2.2734174 -1.74366045 -0.9827210 -1.6533778 
[12,] 4.120385 2.5818660 1.9924763 -1.94272323 -1.0430700 -1.7642308 

누가이 문제에 대해 도움을 줄 수 있습니까?

정보 주셔서 감사합니다. 데이터와 코드를 적절하게 추가했습니다.

+0

문제의 최소 작동 예를 제공 할 수 있습니까? 특히 R 콘솔에서 실행할 수있는 코드를 제공하여 문제를 입증 할 수 있습니까? – josliber

+0

데이터 프레임은 다음과 같습니다 : – user3183433

+0

포맷이 엉망입니다. 데이터의 전체 범위를 선택하고 편집 창의 도구 모음에서 "{}"단추를 클릭하면 치료할 수 있습니다. –

답변

0

데이터에 0이 포함되어 있으며 0의 로그를 사용할 수 없습니다.

변환을 수행하기 전에 작은 양의 상수를 모든 데이터에 추가 한 다음 예측에서 상수를 제거 할 수 있습니다.

+0

감사합니다. 실제로, 나는 그것에 대해 생각하지 않았다. – user3183433

+0

모든 히스토리 (0이 아닌)에 0.000001을 추가하고 히스토리에서 다시 예측할 수 없게 예측 한 후에도 괜찮습니까? 나는 이것이 예측을위한 최선의 방법이라고 생각한다. 그 값이 충분히 작 으면 나는 그 예측을 수정하는 것이 필요 없다고 가정한다. – user3183433

+0

이 경우에 람다를 자동으로 정의하는 좋은 방법은 다음과 같습니다. Lambda [, i] <- BoxCox.lambda (DataTimeSeries.ts [, i]) – user3183433