用R预测ctree

用R预测ctree,r,prediction,R,Prediction,我是R的新手,我正试图用R预测携程的日期。 我的数据如下: Datos | Global_active_power 2006-12-16 | 3.0534747 2006-12-17 | 2.3544861 And like this 1433 entries. 代码如下: data <- read.table('diena.txt', sep = ' ') library("party") set.seed(124) datos <- as.Date(data$Dato

我是R的新手,我正试图用R预测携程的日期。 我的数据如下:

Datos      | Global_active_power
2006-12-16 | 3.0534747
2006-12-17 | 2.3544861
And like this 1433 entries.
代码如下:

data <- read.table('diena.txt', sep = ' ')
library("party")
set.seed(124)
datos <- as.Date(data$Datos)
View(data[2])
train <- data[1:sum(datos<"2009-12-16"),]
test <- data[-(1:sum(datos<"2009-12-16")),]
View(train)
dt <- ctree(test$Global_active_power ~ test$Datos, data=train,controls=ctree_control(maxdepth=3))
p <- predict(dt, test)
View(p)
使用Viewp,R在所有行中给我相同的数字。 我不知道这是否是正确的预测方式。也许任何人都可以帮忙

对于未来,也许有人知道如何预测未来的价值,比如我的日期在2010年11月30日结束,我想预测2011年会发生什么


谢谢您的帮助。

首先,有一个技术问题。您应该真正使用规范

Global_active_power ~ Datos, data = train
而不是

test$Global_active_power ~ test$Datos, data = train
前者将从列车数据集中获取变量,而后者将始终从测试数据集中获取变量。通常使用数据$。。。模型公式中的构造几乎总是一个坏主意——特别是当对新数据的预测有兴趣时

第二,更严重的是,这是一个概念问题。如果您使用power~date之类的模型,这实际上指定了一个趋势模型。在回归树的情况下,通过阶跃函数近似非线性趋势。在训练数据范围之外使用阶跃函数进行预测,将始终得到一个恒定的拟合值

但是,对于其他非线性趋势规范,例如GAM,在训练数据之外,几乎肯定会得到较差的结果。其他一切都会非常令人惊讶


我建议您研究一下时间序列模型,看看是否可以将其用于电力预测。

ctree对象上的preidct返回一个列表,而不是数据帧。它必须未列出并转换为数据帧以供进一步使用

a=data.frame()
for(i in 1:length(p)){
  a= rbind(a,unlist(p[i]))
}
colnames(a)= c(0,1)
这是一个迟到的答复,但希望它能帮助别人在未来