首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用midasr进行预测时的误差(包括可重复的例子)

使用midasr进行预测时的误差(包括可重复的例子)
EN

Stack Overflow用户
提问于 2014-04-19 03:56:51
回答 1查看 488关注 0票数 1

代码是自包含的,除了下面链接的数据集之外。

代码中使用的.csv文件,请先下载此文件: https://drive.google.com/?authuser=0#folders/0B1ciW4R5hjUCRFpjQlJKZGFqcVU

代码语言:javascript
复制
library(midasr)
library(zoo)


 yvellaregdata <- read.table("~/Desktop/attempt1/ymonthlyjackson.csv", quote="\"")
 yvellareg <- ts(yvellaregdata, start=c(2008,7), frequency=12)

 xvellareginit <- read.table("~/Desktop/attempt1/xdailyjackson.csv", quote="\"")
 xvellaregzoo <- zoo(xvellareg)
 xvellareg <- as.numeric(xvellaregzoo) #i had to convert to numeric for it to work

#yvellareg is the monthly y variable
#xvellareg is the daily x variable
 betareg <- midas_r(yvellareg ~ mls(yvellareg, 1, 1) + mls(xvellareg, 3:25, 30), start=NULL)
 summary(betareg)


#Defining data for forecasting
 xdailyfulldataread <- read.table("~/Desktop/attempt1/xdailyfulldatajackson.csv", quote="\"")
 xdailyfulldata <- zoo(xdailyfulldataread)
 xdailyfulldata <- as.numeric(xdailyfulldata)

 ymonthlyfulldataread <- read.table("~/Desktop/attempt1/ymonthlyfulldatajackson.csv", quote="\"")
 ymonthlyfulldata <- ts(ymonthlyfulldataread,start=c(2008,7), frequency=12)


fulldata <- list(xx=xdailyfulldata,
                   yy=ymonthlyfulldata)
insample <- 1:length(yvellareg)
outsample <- (1:length(fulldata$yy))[-insample]

#errorhere
avgf<-average_forecast(list(betareg),
                       data=fulldata,
                       insample=insample,
                       outsample=outsample)
sqrt(avgf$accuracy$individual$MSE.out.of.sample)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-24 08:41:16

由于您已经准备好了R之外的样本和全样本数据,所以没有必要将其转换为时间序列对象。

下面是代码的清理版本,它假定数据文件位于R工作目录中:

代码语言:javascript
复制
library(midasr)

yvellareg <- scan("ymonthlyjackson.csv")
xvellareg <- scan("xdailyjackson.csv")

#yvellareg is the monthly y variable
#xvellareg is the daily x variable
 betareg <- midas_r(yvellareg ~ mls(yvellareg, 1, 1) + mls(xvellareg, 3:25, 30), start=NULL)
 summary(betareg)


#Defining data for forecasting
xdailyfulldata <- scan("xdailyfulldatajackson.csv")
ymonthlyfulldata <- scan("ymonthlyfulldatajackson.csv")


fulldata <- list(xvellareg=xdailyfulldata,
                   yvellareg=ymonthlyfulldata)
insample <- 1:length(yvellareg)
outsample <- (1:length(fulldata$yvellareg))[-insample]

#errorhere
avgf<-average_forecast(list(betareg),
                       data=fulldata,
                       insample=insample,
                       outsample=outsample)
sqrt(avgf$accuracy$individual$MSE.out.of.sample)

但是这仍然会引发一个错误,因为您的数据是不一致的。包midasr期望每个低频周期有相同数量的高频周期。在你的情况下这是30岁。但我们有

代码语言:javascript
复制
> length(xdailyfulldata)
[1] 1230
> length(ymonthlyfulldata)
[1] 42
> 1230/42
[1] 29.28571

42*30=1260以来,你似乎有更多的每月观察比每日观察。删除一个月观察会使代码运行时不会出现错误:

代码语言:javascript
复制
fulldata <- list(xvellareg=xdailyfulldata,
                   yvellareg=ymonthlyfulldata[-42])
insample <- 1:length(yvellareg)
outsample <- (1:length(fulldata$yvellareg))[-insample]

#errorhere
avgf<-average_forecast(list(betareg),
                       data=fulldata,
                       insample=insample,
                       outsample=outsample)
sqrt(avgf$accuracy$individual$MSE.out.of.sample)
[1] 1.118709
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23165621

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档