2016-04-25 42 views
0

我通过谷歌在过去4年里下载的年收入:如何在数据显示外推时间序列

library(quantmod) 
getFinancials(GOOG) 
df<-viewFinancials(GOOG.f, type='IS', period='A',subset = NULL)['Net Income',] 
df<-(as.data.frame(df)) 

这里:

2015-12-31 16348 
2014-12-31 14136 
2013-12-31 12733 
2012-12-31 10737 

我想“推断”这个数据作为未来10年的平均线性增长,这种方式:

enter image description here

在Excel中,我需要粘贴上述数据,排序,从最旧到最新,选择它,“拉伸”选择另外10行,这个结果:

12/31/2012 10737 
12/31/2013 12733 
12/31/2014 14136 
12/31/2015 16348 
12/31/2016 18048 
12/31/2017 19871 
12/31/2018 21695 
12/31/2019 23518 
12/31/2020 25342 
12/31/2021 27166 
12/31/2022 28989 
12/31/2023 30813 
12/31/2024 32636 
12/31/2025 34460 

我怎样才能在R中做同样的事(或接近它)?

回答

2

这需要一些额外的步骤中R.这里是您的示例数据:

date<-as.Date(c("2015-12-31", "2014-12-31", "2013-12-31", "2012-12-31")) 
value<-c(16348, 14136, 12733, 10737) 

假设一个线性增长到未来。使用lm命令执行线性回归。变量“模型”存储拟合。

#fit linear regression 
model<-lm(value~date) 

寻找10年未来,创建用于在未来10年内的日期顺序并存储为一个数据帧(对于预测命令所需)

#build predict dataframe 
dfuture<-data.frame(date=seq(as.Date("2016-12-31"), by="1 year", length.out = 10)) 
#predict the futurne 
predict(model, dfuture, interval = "prediction") 

上述模型是假设线性增长。如果对增长会有什么不同的预测,那么lm公式需要修改或使用nlm方程。 我会留下关于在可用数据范围之外进行预测的警告。

+0

这就是它。它适用于'GOOG',但当我将其应用于'TSLA'时,它只预测4年而不是10年。你知道为什么吗?太不可预测? – Oposum

+0

预测函数应该为传递给它的数据帧中的每一行生成一个估计值。确保数据框中的列名称与模型中的因变量名称匹配!在上面的例子中,lm模型的值是vs“date”,因此dfuture dataframe中的列名也被命名为“date” – Dave2e

+0

明白了,谢谢! – Oposum