2017-04-05 2 views
0

J'essaie de prévoir les données de charge en utilisant la fonction neuralnet(), cependant, lorsque j'essaie prévisions fonction() Je reçois l'erreur: erreur dans is.constant (y): (liste) objet ne peut pas être contraint de taper « double »Prévision neuralnet(): Erreur dans is.constant (y): l'objet (list) ne peut pas être forcé à taper 'double'

Mes données se présente comme suit:

  date temperature load weekday month weekend day 
1 2010-01-01   -28 256131  5 01  0 1 
2 2010-01-02   -24 277749  6 01  1 2 
3 2010-01-03   -53 264166  0 01  1 3 
4 2010-01-04   -42 319847  1 01  0 4 
5 2010-01-05   -17 321376  2 01  0 5 

et est structuré :

str(NLtrain) 
'data.frame': 2191 obs. of 7 variables: 
$ date  : POSIXct, format: "2010-01-01" "2010-01-02" "2010-01-03" ... 
$ temperature: num -28 -24 -53 -42 -17 -45 -43 -42 -25 -11 ... 
$ load  : num 256131 277749 264166 319847 321376 ... 
$ weekend : num 0 1 1 0 0 0 0 0 1 1 ... 
$ weekday : int 5 6 0 1 2 3 4 5 6 0 ... 
$ month  : chr "01" "01" "01" "01" ... 
$ day  : int 1 2 3 4 5 6 7 8 9 10 ... 

Le code I hav e utilisé:

loadts <- ts(NLtrain$load, frequency=7, start = c(2010,1,1)) 

nnvar = NLtrain$weekday+NLtrain$day+NLtrain$temperature 

nn = neuralnet(loadts~nnvar, 
      data = NLtrain, hidden = 3, 
      linear.output =FALSE) 
forecast(nn) 

Qu'est-ce que je fais mal?

Merci à l'avance

+0

Pouvez-vous également afficher la structure de vos données (en utilisant 'str')? –

+0

@ RomanLuštrik ont ​​ajouté la structure! – NikkiB

Répondre

0

La façon dont vous définissez la formule pour votre neuralnet() est incorrect. Le "nnvar" devient un vecteur comme vous l'avez expliqué. C'est la somme des colonnes. Utilisez la manière suivante

nnvar<-as.formula(loadts~weekday+day+temperature) 

nn=neuralnet(nnvar,data=NLtrain,hidden=3,linear.output=F) 

En outre, comme vos valeurs loadts ne sont pas dans l'intervalle de (0,1), je pense que vous ne devriez pas utiliser linear.output = F, comme dans ce cas la fonction logistique devient l'activation fonction et vos valeurs sont limitées à 0-1

+0

Je reçois toujours la même erreur .. J'ai essayé ce qui suit: 'nnvar <- as.formula (loadts ~ jour + jour + température) nn = neuralnet (nnvar, données = NLtrain, caché = 3) prévision (nn) ' – NikkiB

+0

Vous devriez vérifier la fonction forecast() en utilisant? Forecast. Il est utilisé pour la modélisation de séries temporelles. Il ne reconnaît pas les modèles NN. Les arguments transmis à la fonction sont également erronés. –