2016-03-11 86 views
-1

我確實有一個問題涉及繪製時間序列的實際數據和擬合模型的值。特別是,我的問題涉及到本文:R:繪製「實際與裝配」

https://static.googleusercontent.com/media/www.google.com/en//googleblogs/pdfs/google_predicting_the_present.pdf

在該文件的附錄中,你可以找到的R腳本。在這裏,我有兩個最初的問題:(1)這是什麼

##### Define Predictors - Time Lags; 
dat$s1 = c(NA, dat$sales[1:(nrow(dat)-1)]); 
dat$s12 = c(rep(NA, 12), dat$sales[1:(nrow(dat)-12)]); 

做的,什麼是功能:

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

決賽和主要問題:比方說,我得到一個計算我的數據與

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

The adj。 R平方值爲0.342。因此,我認爲上面的模型解釋了建模數據(預測數據?)與實際數據之間大約34%的差異。現在,我該如何繪製這個「模型圖」(擬合),以便在論文中得到類似的內容?

Fitted

我認爲第二個圖表的「裝」,實際上是從估計模型的數據,對不對?如果是這樣,那麼這部分似乎在腳本中缺失。

非常感謝!

EDIT 1:

嘗試這樣做:

# Actual values and fitted values 
plot(sales ~ month, data= dat1, col="blue", lwd=1, type="l", xaxt = "n", xaxs="r",yaxs="r", xlab="", ylab="Total Sales"); 
par(new=TRUE) 
plot(fitted(fit) ~ month, data= dat1, col="red", lwd=1, type="l", xaxs="r", yaxs="r", yaxt = "n", xlab="Month", ylab="Index", xaxt="n"); 
axis(4) 

輸出:錯誤(功能(式中,數據= NULL,子集= NULL,na.action = na.fail,:可變長度不同(發現「月」)

回答

1
dat$s1 = c(NA, dat$sales[1:(nrow(dat)-1)]) 

這產生了數據的新列s1sales其中第一EL e是NA。最後一項從sales缺失。

dat$s12 = c(rep(NA, 12), dat$sales[1:(nrow(dat)-12)]) 

s12木板條柱,用12個NAS和其餘的是首先從dat$salesnrow(dat)-12值。

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

dat1爲所有,但最後觀察(行),dat2只有最後一排。當預測所述響應(sales),你只需要饋送data.frame與至少是上式的右邊的列(也稱爲解釋變量),在這種情況下s1s12,作爲newdata參數predict()功能。這是使用dat2的地方。

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

該下一行適用於使用dat1的模型。

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

fitted(fit)會給你擬合值。嘗試predict(fit)並比較它是否有任何不同。

每個語句末尾的分號是多餘的。

+0

我在編輯1中試過一些東西。不幸的是,這不起作用。但我可以通過擬合(適合)來看到這些值。 – Johnny

+0

你能幫我解釋一下「#####數據分爲兩部分 - 模型擬合和預測 dat1 = mdat [1:(nrow(mdat)-1),] dat2 = mdat [nrow(mdat ),]「?我不明白dat2的意義。 – Johnny

+0

@約翰尼看到我的編輯。 –