sas - VARMAX 中的缺失值
问题描述
我有一个包含访客和天气变量的数据集。我正在尝试根据天气变量来预测访客。由于数据集仅包含季节的访客,因此每年都存在缺失值和差距。在 sas 中运行 proc reg 时一切正常,但是当我使用 proc VARMAX 时问题就来了。由于缺少值,我无法运行回归。我该如何解决这个问题?
proc varmax data=tivoli4 printall plots=forecast(all);
id obs interval=day;
model lvisitors = rain sunshine averagetemp
dfebruary dmarch dmay djune djuly daugust doctober dnovember ddecember
dwednesday dthursday dfriday dsaturday dsunday
d_24Dec2016 d_05Dec2013 d_24Dec2017 d_24Dec2014 d_24Dec2015 d_24Dec2019
d_24Dec2018 d_24Sep2012 d_06Jul2015
d_08feb2019 d_16oct2014 d_15oct2019 d_20oct2016 d_15oct2015 d_22sep2017 d_08jul2015
d_20Sep2019 d_08jul2016 d_16oct2013 d_01aug2012 d_18oct2012 d_23dec2012 d_30nov2013 d_20sep2014 d_17oct2012 d_17jun2014
dFrock2012 dFrock2013 dFrock2014 dFrock2015 dFrock2016 dFrock2017 dFrock2018 dFrock2019
dYear2015 dYear2016 dYear2017
/p=7 q=2 Method=ml dftest;
garch p=1 q=1 form=ccc OUTHT=CONDITIONAL;
restrict
ar(3,1,1)=0, ar(4,1,1)=0, ar(5,1,1)=0,
XL(0,1,13)=0, XL(0,1,14)=0, XL(0,1,13)=0, XL(0,1,27)=0, XL(0,1,38)=0, XL(0,1,42)=0;
output lead=10 out=forecast;
跑;
解决方案
与任何预测一样,您首先需要准备时间序列。您应该首先遍历数据PROC TIMESERIES
以填充或估算缺失值。最合适的估算选择取决于您的变量。下面的代码将:
- 按天求和
lvisitors
并将缺失值设置为 0 - 将缺失值设置
averagetemp
为平均值 rain
将、sunshine
和变量的缺失值设置为从d
0 开始(假设这些是指标)
代码:
proc timeseries data=have out=want;
id obs interval = day
setmissing = 0
notsorted
;
var lvisitors / accumulate=total;
crossvar averagetemp / accumulate=none setmissing=average;
crossvar rain sunshine d: / accumulate=none;
run;
重要的时间间隔考虑
根据您的数据,这可能会影响您的错误率和估计,因为您总是知道淡季期间没有人会出现。如果淡季数据有很多缺失值,则需要删除这些行。
由于 PROC VARMAX 不支持自定义时间间隔,因此您可以创建一个简单的时间标识符。您也可以将其转换为格式proc format
并在最后进行转换time_id
。
data want;
set have;
time_id+1;
run;
proc varmax data=want;
id time_id interval=day;
...
output lead=10 out=myforecast;
run;
data myforecast;
merge myforecast
want(keep=time_id date)
;
by time_id;
run;
或者,如果您制作了格式:
data myforecast;
set myforecast;
date = put(time_id, timeid.);
drop time_id;
run;
推荐阅读
- javascript - 就我而言,是否可以将点击侦听器放在像这样的 CSS 框上
- javascript - 悬停图像时播放音频
- pandas - Pandas Dataframe 将具有 dict 值的列拆分为列
- javascript - 在另一个部分 id 上时,锚标签不会跳转到新的内部部分 id
- python-3.x - Beautifulsoup span 属性没有值,find 返回“None”我如何获取文本?
- marklogic - MarkLogic Optic API from-sql 绑定参数
- c++ - WinAPI 如果我不翻译和发送未处理的消息会发生什么
- database - Firebase,存储数据
- clojure - 当且仅当该密钥存在时,如何更新 Clojure 中的密钥?
- c# - 将datagridview保存在文件xml c#中