0

我确实有一个与绘制时间序列的实际数据和拟合模型的值有关的问题。特别是,我的问题与本文有关:

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)

形容词。R 平方值为 0.342。因此,我认为上面的模型解释了建模数据(预测数据?)和实际数据之间大约 34% 的差异。现在,我怎样才能绘制这个“模型图”(拟合),以便在论文中得到类似的东西?

合身

我假设第二张图的“拟合”实际上是来自估计模型的数据,对吧?如果是这样,那么脚本中似乎缺少这部分。

非常感谢!

编辑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,:可变长度不同(找到“月份”)

4

1 回答 1

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

这将创建一个新列s1sales其中包含第一个元素为 NA 的数据。来自的最后一项sales丢失。

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

具有 12 个 NA 的Crates12列,其余是nrow(dat)-12来自dat$sales.

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

dat1是除了最后一个观察(行)之外的所有,dat2只是最后一行。在预测响应 ( sales) 时,您只需提供一个 data.frame,其中至少包含公式右侧的列(也称为解释变量),在这种情况下s1, 和s12,作为函数的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)并比较是否有任何不同。

每个语句末尾的分号是多余的。

于 2016-03-11T08:21:27.387 回答