线性回归预测案例一(LM)

浏览: 1653

目的:根据历史数据值,正对每一个dlbh,给定具体预测值,并且给的其预测值的浮动区间

代码如下:

1、连接Oracle数据库

library(DBI)
library(ROracle)
drv=dbDriver('Oracle')
conn=dbConnect(drv,'AQTS_ZHZX','AQTS_ZHZX','localhost:1521/jgyw')

2、查询需要的BASE数据(以七天数据为一个历史数据)

数据:gcsjrq为日期,dlbh与日期为多对多关系、dlbh与dlmc为一对一关系,zll 为总流量

# get the flux of the DL 
rs=dbSendQuery(conn,"select d.gcsjrq,t2.dlbh, sum(ZLL) zll ,t4.dlmc from dw_fact_flux d
join Road_Place_Direct t2 on d.jkdbh=t2.jkdbh
               join road_baseinfo t4 on t2.dlbh=t4.dlbh
               where d.gcsjrq >= to_char(sysdate-8,'yyyymmdd') and d.gcsjrq<to_char(sysdate,'yyyymmdd')
               group by t2.dlbh,d.gcsjrq,t4.dlmc
               order by t2.dlbh,d.gcsjrq,t4.dlmc asc")
rsv=dbSendQuery(conn,"select to_char(sysdate,'yyyymmdd') from dual ")
datad=fetch(rsv)
datad=as.matrix(datad)
data=fetch(rs)
data=as.matrix(data)

3、对dlbh去重,获得起对应dlmc值

dluniq=as.numeric(unique(data[,2]))
dlmcuniq=unique(data[,4])

4、对每一个dlbh生成预测值

for ( i in  1:length(dluniq))
{

5、对每一个dlbh,取得其对应行,并设定进行下一步的判定条件

  aa=data[data[,2]==dluniq[i],]
  t=nrow(as.matrix(aa,3,1))/3
  if (t>1)
  {

6、  数据格式转变,以及生成x,y值

   pre=as.matrix(as.numeric(aa[,3])) 
   z=as.data.frame(cbind(order(pre),pre))
   zn=as.data.frame(c(nrow(pre)+1))
   colnames(zn)=c('x')
   colnames(z)=c('x','y')

7、   生成拟合函数,生成预测值

   fit2 <- lm(y ~ x, z)
   PRE_FLUX=round(predict(fit2,zn,interval = "prediction"))
  #plot(z$x,z$y)
  #abline(fit2)


8、把需要结果写入数据库

    PRE_FLUX=cbind(datad,dluniq[i],PRE_FLUX,dlmcuniq[i])
    colnames(PRE_FLUX)=c('YCRQ','DLBH','PREV','PREMIN','PREMAX','DLMC')
    PRE_FLUX=as.data.frame(PRE_FLUX)
    if(as.matrix(PRE_FLUX$PREMIN)<0)
      PRE_FLUX$PREMIN=0
    dbRemoveTable(conn, 'FLUX_PREDICT_DL')
    dbWriteTable(conn,'FLUX_PREDICT_DL',PRE_FLUX, row.names = F, append = TRUE)
  }
  
}

9、建模、报表展现

记录日常点滴,成长自己,方便他人,如有错误的地方欢迎提出宝贵意见!

推荐 4
本文由 华青莲 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

2 个评论

喜欢这句话:记录日常点滴,成长自己,方便他人
嘻嘻

要回复文章请先登录注册