2013-01-03 28 views
8

Ktoś ma krótki przykład edukacyjny, jak korzystać z sieci neuronowych (nnet w R) w celu przewidywania? Oto przykład, w R, szeregu czasowegoPrzykład prognozowania szeregów czasowych z użyciem sieci neuronowych w R

T = seq(0,20,length=200) 
Y = 1 + 3*cos(4*T+2) +.2*T^2 + rnorm(200) 
plot(T,Y,type="l") 

Dziękujemy

David

+5

nie jest 'nnet' ogranicza się do zmiennych jakościowych, czyli problemów klasyfikacyjnych? Możesz mieć więcej szczęścia z pakietami 'neuralnet' lub' AMORE'. Należy również pamiętać, że skoro twoja funkcja jest nieograniczona, funkcje transferu sigmoid (nie jedyny wybór, ale często domyślny) są mało prawdopodobne, aby dać użyteczny wynik. W przypadku szeregów czasowych, w celu uwzględnienia autoregresji, ludzie zazwyczaj używają [sieci powtarzalnych] (http://en.wikipedia.org/wiki/Recurrent_neural_network), które są znacznie bardziej skomplikowane ... –

+1

To nie jest pytanie programistyczne i jest lepiej pasuje do http://stats.stackexchange.com/. –

+2

Dzięki chłopaki, przynajmniej dajecie mi jakieś pomysły. Powiedziano mi, że sieci neuronowe mogą być używane do przewidywania serii czasowych "skokowo-sezonowych". Możliwe jest zastosowanie transformacji, która powoduje ograniczenie serii czasowych. Przyjrzę się również stats.stackexchage :) – DKK

Odpowiedz

14

myślę, że można użyć pakietu caret i specjalnie funkcję train

This function sets up a grid of tuning parameters for a number 
     of classification and regression routines. 
require(quantmod) 
require(nnet) 
require(caret) 
T = seq(0,20,length=200) 
y = 1 + 3*cos(4*T+2) +.2*T^2 + rnorm(200) 
dat <- data.frame(y, x1=Lag(y,1), x2=Lag(y,2)) 
names(dat) <- c('y','x1','x2') 
#Fit model 
model <- train(y ~ x1+x2 , 
       dat, 
       method='nnet', 
       linout=TRUE, 
       trace = FALSE) 
ps <- predict(model, dat) 

#Examine results 

plot(T,Y,type="l",col = 2) 
lines(T[-c(1:2)],ps, col=3) 
legend(5, 70, c("y", "pred"), cex=1.5, fill=2:3) 

enter image description here

+1

Beautiful! Dzięki agstudy. Jest to nieistotne, ale przesłanie wszystkich tych pakietów (i ich dodatków) jest trudne, czy mogę zapytać, czy jest na to szybki sposób? – DKK

+3

Jeśli miałbyś przewidzieć wartość dla timne = 30, jak byś to zrobił? Jak to się stało, że wybrałeś x1 = Lag (y, 1), x2 = Lag (y, 2), mam na myśli czy jest to specyficzne dla tej serii czasowej? – DKK

+2

Dlaczego bolesne? tylko 2 pakiety! 'caret' i' nnet'! 'quantomod' dla lagów! – agstudy

Powiązane problemy