外推时间序列
Extrapolating time series
我下载了过去 4 年 Google 的年收入:
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
我想"extrapolate"将此数据作为未来 10 年的平均线性增长,以这种方式:
。
在Excel,我只需要粘贴上面的数据,从旧到新排序,select就可以了,还有"stretch"的selection over 10 additional行,结果如下:
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 中做同样的事情(或类似的事情)?
它在 R 中需要一些额外的步骤。这是您的示例数据:
date<-as.Date(c("2015-12-31", "2014-12-31", "2013-12-31", "2012-12-31"))
value<-c(16348, 14136, 12733, 10737)
假设未来呈线性增长。使用 lm 命令执行线性回归。变量 "model" 存储拟合度。
#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 方程。
我将省略有关在可用数据范围之外进行预测的警告。
我下载了过去 4 年 Google 的年收入:
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
我想"extrapolate"将此数据作为未来 10 年的平均线性增长,以这种方式:
在Excel,我只需要粘贴上面的数据,从旧到新排序,select就可以了,还有"stretch"的selection over 10 additional行,结果如下:
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 中做同样的事情(或类似的事情)?
它在 R 中需要一些额外的步骤。这是您的示例数据:
date<-as.Date(c("2015-12-31", "2014-12-31", "2013-12-31", "2012-12-31"))
value<-c(16348, 14136, 12733, 10737)
假设未来呈线性增长。使用 lm 命令执行线性回归。变量 "model" 存储拟合度。
#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 方程。 我将省略有关在可用数据范围之外进行预测的警告。