R TSLM错误:替换的长度为零

R TSLM错误:替换的长度为零,r,time-series,R,Time Series,我有以下数据结构: d <- structure(list(Date = structure(c(17349, 17350, 17351, 17352, 17353, 17354, 17355, 17356, 17357, 17358, 17359, 17360, 17361, 17362, 17363, 17364, 17365,

我有以下数据结构:

d <- structure(list(Date = structure(c(17349, 17350, 17351, 17352, 
                                       17353, 17354, 17355, 17356, 17357, 17358, 17359, 17360, 17361, 
                                       17362, 17363, 17364, 17365, 17366, 17367, 17368, 17369, 17370, 
                                       17371, 17372, 17373, 17374, 17375, 17376, 17377, 17378, 17379, 
                                       17380, 17381, 17382, 17383), class = "Date"), Ratio = c(67, 50, 
                                                                                               67, 50, 100, 50, 33, 67, 0, 0, 0, 0, 100, 75, 0, 0, 75, 100, 
                                                                                               67, 33, 33, 33, 50, 50, 67, 100, 67, 50, 25, 25, 33, 33, 100, 
                                                                                               33, 0)), .Names = c("Date", "Ratio"), row.names = 183:217, class = "data.frame")
最后,我尝试划分数据并训练线性模型:

library("forecast")
train.ts <- window(xs, start = as.Date("2017-07-01"), end = as.Date("2017-08-01"))
val.ts <- window(xs, start = as.Date("2017-08-02"), end = as.Date("2017-08-04"))
d.lm <- tslm(train.ts ~ trend + I(trend^2))
更新
xts
程序包时出错:

require(devtools)
# results in error "Error in as.POSIXct.default(value) : do not know how to convert 'value' to class “POSIXct”"
install_version("xts", version = "0.10", repos = "http://cran.us.r-project.org")

# results in error "Warning: invalid package 'https://cran.r-project.org/src/contrib/xts_0.10-0.tar.gz'"
install.packages("https://cran.r-project.org/src/contrib/xts_0.10-0.tar.gz", repos = NULL, type="source")

将R和包
forecast
xts
更新到其最新版本后,错误消息不同:

d.lm <- tslm(train.ts ~ trend + I(trend^2))
# Error in names(vars)[length(vars)] <- make.names(colnames(vars[[i]])[j]) : 
#   replacement has length zero

注意:似乎
ts()
保留了时间序列的索引,而
as.ts()
没有。

最后一行还有
lm
是一个函数名。最好不要将输出指定给与函数名类似的对象名(如果是
,我输入问题时已经很晚了-是的,我的意思是
@akrun,我还尝试将
lm
变量重命名为
d.lm
,但错误仍然存在。@scarabe如果你想把你的评论作为答案发表,我很乐意接受它,并发表一个关于预测的新问题。看起来这是一个问题当我简单地使用问题中提供的数据时,我的数据工作正常。当我使用所有数据(几个月的值)时,会发生错误。总而言之,为了解决这个问题,我将我的环境更新为R的最新版本,并安装了xts和forecast包的最新版本,最后我将tslm行更改为
d.lm
> sessionInfo()
R version 3.1.0 (2014-04-10)
Platform: x86_64-w64-mingw32/x64 (64-bit)

locale:
[1] LC_COLLATE=English_United States.1252  LC_CTYPE=English_United States.1252    LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C                           LC_TIME=English_United States.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] forecast_7.1      timeDate_3012.100 xts_0.9-7         zoo_1.7-13       

loaded via a namespace (and not attached):
 [1] colorspace_1.2-4 fracdiff_1.4-2   ggplot2_2.1.0    grid_3.1.0       gtable_0.1.2     lattice_0.20-29  munsell_0.4.2   
 [8] nnet_7.3-8       parallel_3.1.0   plyr_1.8.1       quadprog_1.5-5   Rcpp_0.11.1      scales_0.4.0     tools_3.1.0     
[15] tseries_0.10-34 
require(devtools)
# results in error "Error in as.POSIXct.default(value) : do not know how to convert 'value' to class “POSIXct”"
install_version("xts", version = "0.10", repos = "http://cran.us.r-project.org")

# results in error "Warning: invalid package 'https://cran.r-project.org/src/contrib/xts_0.10-0.tar.gz'"
install.packages("https://cran.r-project.org/src/contrib/xts_0.10-0.tar.gz", repos = NULL, type="source")
d.lm <- tslm(train.ts ~ trend + I(trend^2))
# Error in names(vars)[length(vars)] <- make.names(colnames(vars[[i]])[j]) : 
#   replacement has length zero
d.lm <- tslm(ts(train.ts) ~ trend + I(trend^2))
d.lm
# Call:
# tslm(formula = ts(train.ts) ~ trend + I(trend^2))
# 
# Coefficients:
# (Intercept)        trend   I(trend^2)  
#    57.52770     -1.67996      0.04963