2016-06-26 10 views
0

Jemand hat kürzlich eine Frage zu diesem Papier hier gestellt: https://static.googleusercontent.com/media/www.google.com/en//googleblogs/pdfs/google_predicting_the_present.pdfpredict() und newdata - Wie funktioniert das?

Der R-Code des Papiers kann am Ende des Papiers gefunden werden. Im Wesentlichen untersucht das Papier Einmonatsvorhersagen von Verkaufszahlen durch Suchanfragen. Ich denke, ich habe das Modell und die Methode verstanden, aber es gibt ein Detail, das mich verwirrt. Es ist der Teil:

1 ##### Divide data by two parts - model fitting & prediction 
dat1 = mdat[1:(nrow(mdat)-1), ] 
dat2 = mdat[nrow(mdat), ] 

2 ##### Fit Model; 
fit = lm(log(sales) ~ log(s1) + log(s12) + trends1, data=dat1); 
summary(fit) 

und:

3 #### Prediction for the next month; 
predict.fit = predict(fit, newdata=dat2, se.fit=TRUE); 

verstehe ich, dass dat2 in (1) von mdat nur die letzte Reihe ist. (2) bedeutet, dass das Regressionsmodell auf alles außer der letzten Zeile im Datensatz angewendet wird.

Aber warum wird newdata=dat2 im Vorhersagemodell von (3) verwendet und was bedeutet es? Warum nur die letzte Reihe?

Antwort

1

Hier ist eine Beschreibung für jede Zeile des Codes:

dat1 = mdat[1:(nrow(mdat)-1), ] 

Erstellt eine Teilmenge des gesamten Datensatzes, die alle bis auf die letzte Zeile enthält.

dat2 = mdat[nrow(mdat), ] 

Erstellt eine Teilmenge des gesamten Datasets, die nur die letzte Zeile enthält.

fit = lm(log(sales) ~ log(s1) + log(s12) + trends1, data=dat1) 

Für die Modellanpassung ist nur die erste Teilmenge dat1 verwendet. Also die Daten ohne die letzte Zeile.

predict.fit = predict(fit, newdata=dat2, se.fit=TRUE) 

predict nimmt das angepasste Modell und sieht, was wäre es dat2 für die „unsichtbaren“ Daten vorhersagen.

Im einfachsten Fall mit nur einer unabhängigen Variablen würden wir eine Zeile an dat1 anpassen und dann schauen, welcher Y-Wert für den X-Wert von dat2 vorhergesagt würde.

+0

Aber warum wird nur ein Wert verwendet? Ein Wert in der Zukunft? Weil sich das Papier nur auf die Ein-Monats-Vorhersage konzentriert? Angenommen, es würde sich 3-m-Vorhersagen ansehen, dann wären dat2 die letzten drei Werte? – JohnnyDeer

+1

Rechts. Sie könnten einfach mehr als einen Wert verwenden, dann würden Sie mit 'dat1 <- mdat [1: (nrow (mdat) -3),]' und 'dat2 = mdat [(nrow (mdat) - 2)] arbeiten: nrow (mdat),] '. Wenn es jedoch ihr Ziel war, nur einen Monat vorher und nicht drei vorherzusagen (was vernünftig sein könnte, weil Sie die Genauigkeit verlieren, wenn Sie weiter in die Zukunft schauen), warum sollten sie zwei zusätzliche Beobachtungen verschwenden, die höchstwahrscheinlich die wichtigsten sind, weil sie es sind die aktuellste? – Alex

+0

Okay, also die MAE in der Zeitung wird dann mit den laufenden Werten aus der Regression auf dat1 gemessen (d. H. 'Predict.fit = vorhergesagt (fit, se.fit = TRUE) '), richtig? Weil 'predicate.fit = vorhersage (fit, newdata = dat2, se.fit = TRUE)' gibt nur einen Wert zurück. Ich frage mich immer noch, wann und wo dieses Ergebnis von 'predict.fit = vorhergesagt (fit, newdata = dat2, se.fit = TRUE)' verwendet wird. – JohnnyDeer