这是某外贸公司十年的销售数据(每年只保留了1-11月份的数据,12月份没有记录)。我用arima季节乘积模型对它作了拟合。 首先观察该公司10年的销售数据状况,表现出很强的周期特征:
然后对之取对数,并以11为周期取差分变化,差分后如下:
然后取一阶差分,得出图形以及ac及pac图如下
我经过实验选择了ar(1,11) ma(1)拟合上述模型(其实我选择的依据主要是显著性)。
残差项通过了白噪声的检验:
对数变换的真实值和拟合值的情形:
最终真实值和拟合值的情况:
然后我查看了误差绝对值>150000的观测值,注意到它们所在的月份貌似都有节假日……我还不知道该怎么处理这个问题……我想可以加个虚拟变量之类的?欢迎讨论~
数据来源于我目前实习的公司,主要参考《时间序列分析:预测与控制》。
欢迎讨论~以下是我的stata代码,有一些跟数据集的变量有关,业务背景敬请忽略之……另外代码写的很不成熟……还请多多指教~
use doi.dta, clear
egen sum_sale=sum(sale), by (date)
keep if cate=="01"
*keep date sum_sale
line sum_sale date
tsset date
gen l_sale=ln(sum_sale)
*gen l_sale_l6=L6.l_sale
gen l_sale_l11=L11.l_sale
gen l_sale_d11=l_sale-l_sale_l11
line l_sale_d11 date
ac l_sale_d11
pac l_sale_d11
gen lsale_d11_d1=D.l_sale_d11
line lsale_d11_d1 date
ac lsale_d11_d1
pac lsale_d11_d1
arima lsale_d11_d1, ar(1,11) ma(1)
*drop e
predict e ,res
wntestb e
predict y,xb
gen y1=L1.l_sale_d11+y+L11.l_sale
gen y2=exp(y1)
twoway (line y1 date) ///
(line l_sale date)
twoway (line y2 date) ///
(line sum_sale date)
save sum_sale.dta, replace
use sum_sale.dta,clear
gen e1=sum_sale-y2
keep if y2!=. & abs(sum_sale-y2)>150000
keep year month sum_sale y2 e1