第67步 时间序列建模实战:ARIMA建模(Stata) |
您所在的位置:网站首页 › stata中columns怎么用 › 第67步 时间序列建模实战:ARIMA建模(Stata) |
基于WIN10的64位系统演示
一、写在前面 这一期,我们使用Stata进行SARIMA模型的构建。 同样,使用某省2005年1月至2016年12月AIDS死亡率的时间序列数据。 二、Stata建立SARIMA实战 (1)问GPT怎么用 咒语:我有一批{数据}:2005年1月至2016年12月AIDS死亡率的时间序列数据。用2005年1月至2015年12月的数据为训练集训练SARIMA模型,用2015年1月至2015年12月的数据为验证集进行验证,然后计算SARIMA模型的R方、BIC值和AIC值,同时分别计算训练集和验证集的MAE、MAPE、MSE和RMSE值。请用Stata 13.1版本进行构建。 部分数据格式如下:{XXX} 进过一番学习,我大概学会了。 GPT对Stata语句的学习估计不多,还得配合Stata帮助文档才行。 (2)导入数据 打开Stata,如下图操作,输入数据,改列名: 点击保存数据,将数据命名为“data.dta”。另,Stata面板功能如下: (3)设置为时间序列格式 跟SPSS一样,需要做时间序列数据的转换: *修改工作路劲,把数据放入工作路径中,建议全英文路径 cd "C:\Users\YourName\Documents" *导入名为"data.dta"的数据集,并清除当前内存中的所有数据 use "data.dta", clear *使用monthly函数将"time"变量转换为月份格式。"YM"表示输入的日期格式为年月 gen date = monthly(time, "YM") *将"date"变量的格式设置为时间序列格式 format date %tm *声明数据为时间序列数据,其中时间变量为"date" tsset date然后翻车了,因为: 你的时间数据是以月-年(例如Jan-05)的格式存在的,这就是为什么monthly()函数无法正确解析它的原因。在Stata中,monthly()函数期望的输入格式是"2005m1",而不是"Jan-05"。 那就改吧: (4)差分、单位根检验和相关图 (4.1)单位根(ADF)检验: dfuller death_rate, lags(12)解读:dfuller death_rate, lags(12)是Stata中执行Dickey-Fuller单位根检验的命令,用于检查时间序列数据是否平稳。这个命令的各个参数的含义如下: dfuller: 这是Stata的命令,表示要进行Dickey-Fuller单位根检验。 death_rate: 这是你要检查的变量名,即你想要测试是否平稳的时间序列数据。 , lags(12): 这是一个选项,表示在进行Dickey-Fuller检验时,要包括的滞后阶数。在这个例子中,滞后阶数设置为12,意味着在进行检验时,会考虑到过去12期的数据。如果不指定lags()选项,会自动选择一个合适的滞后阶数。 P值大于0.05,说明数据不平稳。 (4.2)一般差分和季节性差分: *一阶差分 gen death_rate_diff = D.death_rate *季节性拆分 gen death_rate_seasonal_diff = DS12.death_rate注意:这个DS12.death_rate是指做了1次一般拆分,然后再做1次周期为12的季节性拆分!!也就是d和D都等于1,所以少了13个数据!! 然后,可以做个ADF检验: dfuller death_rate_diff, lags(12) dfuller death_rate_seasonal_diff, lags(12)显示都可以可通过ADF检验。 (4.3)相关图: *生成自相关图(ACF) corrgram death_rate_diff, lags(20)偏自相关图(PACF)还得装包,算了。 (5)建模 (5.1)建立SARIMA模型 看代码,自行体会: 案例1:SARIMA(0,1,1)(0,1,1)12: arima death_rate, arima(0,1,1) sarima(0,1,1,12) noconstant案例2:SARIMA(1,1,1)(1,1,2)12: arima death_rate, arima(1,1,1) sarima(1,1,1,12) noconstant应该看得懂吧,最后一个是是否要常数项。 看看SARIMA(1,1,1)(1,1,1)12的结果: 一个参数没有统计学意义,换下一个模型SARIMA(1,1,1)(0,1,1)12: arima death_rate, arima(1,1,1) sarima(0,1,1,12) noconstant(5)查看拟合性能 使用 estat ic命令来查看ARIMA模型的AIC和BIC值。似乎没有提供R方,不过筛选模型不用也行吧。 (6)拟合和预测 (6.1)进行静态预测(也就是拟合):使用predict命令进行静态预测。以下代码会创建一个新的变量yhat_static,其中包含静态预测的值: predict yhat_static, y(6.2)进行动态预测(也就是预测): 从2015年12月开始进行动态预测: tsappend, add(12) tsset date, monthly predict yhat1, dynamic(tm(2015m12)) y结果: 好了收工!!! 三、总结 Stata挺好用的,就是下次不用了!!! 四、数据 链接:https://pan.baidu.com/s/1vZqgwcLP3hSrpLpHMttTCA?pwd=i2wb 提取码:i2wb |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |